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 multi_aff;
258 class multi_id;
259 class multi_pw_aff;
260 class multi_union_pw_aff;
261 class multi_val;
262 class point;
263 class pw_aff;
264 class pw_aff_list;
265 class pw_multi_aff;
266 class pw_multi_aff_list;
267 class schedule;
268 class schedule_constraints;
269 class schedule_node;
270 class schedule_node_band;
271 class schedule_node_context;
272 class schedule_node_domain;
273 class schedule_node_expansion;
274 class schedule_node_extension;
275 class schedule_node_filter;
276 class schedule_node_guard;
277 class schedule_node_leaf;
278 class schedule_node_mark;
279 class schedule_node_sequence;
280 class schedule_node_set;
281 class set;
282 class space;
283 class union_access_info;
284 class union_flow;
285 class union_map;
286 class union_pw_aff;
287 class union_pw_aff_list;
288 class union_pw_multi_aff;
289 class union_set;
290 class union_set_list;
291 class val;
292 class val_list;
293 
294 // declarations for isl::aff
295 inline aff manage(__isl_take isl_aff *ptr);
296 inline aff manage_copy(__isl_keep isl_aff *ptr);
297 
298 class aff {
299   friend inline aff manage(__isl_take isl_aff *ptr);
300   friend inline aff manage_copy(__isl_keep isl_aff *ptr);
301 
302 protected:
303   isl_aff *ptr = nullptr;
304 
305   inline explicit aff(__isl_take isl_aff *ptr);
306 
307 public:
308   inline /* implicit */ aff();
309   inline /* implicit */ aff(const aff &obj);
310   inline explicit aff(isl::checked::ctx ctx, const std::string &str);
311   inline aff &operator=(aff obj);
312   inline ~aff();
313   inline __isl_give isl_aff *copy() const &;
314   inline __isl_give isl_aff *copy() && = delete;
315   inline __isl_keep isl_aff *get() const;
316   inline __isl_give isl_aff *release();
317   inline bool is_null() const;
318   inline isl::checked::ctx ctx() const;
319 
320   inline isl::checked::aff add(isl::checked::aff aff2) const;
321   inline isl::checked::multi_aff add(const isl::checked::multi_aff &multi2) const;
322   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
323   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
324   inline isl::checked::pw_aff add(const isl::checked::pw_aff &pwaff2) const;
325   inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
326   inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
327   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
328   inline isl::checked::aff add_constant(isl::checked::val v) const;
329   inline isl::checked::aff add_constant(long v) const;
330   inline isl::checked::multi_aff add_constant(const isl::checked::multi_val &mv) const;
331   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
332   inline isl::checked::aff as_aff() const;
333   inline isl::checked::map as_map() const;
334   inline isl::checked::multi_aff as_multi_aff() const;
335   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
336   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
337   inline isl::checked::set as_set() const;
338   inline isl::checked::union_map as_union_map() const;
339   inline isl::checked::aff at(int pos) const;
340   inline isl::checked::basic_set bind(isl::checked::id id) const;
341   inline isl::checked::basic_set bind(const std::string &id) const;
342   inline isl::checked::basic_set bind(const isl::checked::multi_id &tuple) const;
343   inline isl::checked::pw_aff bind_domain(const isl::checked::multi_id &tuple) const;
344   inline isl::checked::pw_aff bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const;
345   inline isl::checked::aff ceil() const;
346   inline isl::checked::pw_aff coalesce() const;
347   inline isl::checked::pw_aff cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const;
348   inline isl::checked::multi_val constant_multi_val() const;
349   inline isl::checked::val constant_val() const;
350   inline isl::checked::val get_constant_val() const;
351   inline isl::checked::aff div(isl::checked::aff aff2) const;
352   inline isl::checked::pw_aff div(const isl::checked::pw_aff &pa2) const;
353   inline isl::checked::set domain() const;
354   inline isl::checked::set eq_set(isl::checked::aff aff2) const;
355   inline isl::checked::set eq_set(const isl::checked::pw_aff &pwaff2) const;
356   inline isl::checked::val eval(isl::checked::point pnt) const;
357   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
358   inline isl::checked::multi_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
359   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
360   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
361   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
362   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
363   inline isl::checked::aff floor() const;
364   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
365   inline isl::checked::set ge_set(isl::checked::aff aff2) const;
366   inline isl::checked::set ge_set(const isl::checked::pw_aff &pwaff2) const;
367   inline isl::checked::aff gist(isl::checked::set context) const;
368   inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
369   inline isl::checked::aff gist(const isl::checked::basic_set &context) const;
370   inline isl::checked::aff gist(const isl::checked::point &context) const;
371   inline isl::checked::set gt_set(isl::checked::aff aff2) const;
372   inline isl::checked::set gt_set(const isl::checked::pw_aff &pwaff2) const;
373   inline boolean has_range_tuple_id() const;
374   inline isl::checked::multi_aff identity() const;
375   inline isl::checked::pw_aff insert_domain(const isl::checked::space &domain) const;
376   inline isl::checked::pw_aff intersect_domain(const isl::checked::set &set) const;
377   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
378   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
379   inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
380   inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
381   inline isl::checked::pw_aff intersect_params(const isl::checked::set &set) const;
382   inline boolean involves_locals() const;
383   inline boolean involves_nan() const;
384   inline boolean involves_param(const isl::checked::id &id) const;
385   inline boolean involves_param(const std::string &id) const;
386   inline boolean involves_param(const isl::checked::id_list &list) const;
387   inline boolean is_cst() const;
388   inline boolean isa_aff() const;
389   inline boolean isa_multi_aff() const;
390   inline boolean isa_pw_multi_aff() const;
391   inline isl::checked::set le_set(isl::checked::aff aff2) const;
392   inline isl::checked::set le_set(const isl::checked::pw_aff &pwaff2) const;
393   inline isl::checked::aff_list list() const;
394   inline isl::checked::set lt_set(isl::checked::aff aff2) const;
395   inline isl::checked::set lt_set(const isl::checked::pw_aff &pwaff2) const;
396   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
397   inline isl::checked::pw_aff max(const isl::checked::pw_aff &pwaff2) const;
398   inline isl::checked::multi_val max_multi_val() const;
399   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
400   inline isl::checked::pw_aff min(const isl::checked::pw_aff &pwaff2) const;
401   inline isl::checked::multi_val min_multi_val() const;
402   inline isl::checked::aff mod(isl::checked::val mod) const;
403   inline isl::checked::aff mod(long mod) const;
404   inline isl::checked::aff mul(isl::checked::aff aff2) const;
405   inline isl::checked::pw_aff mul(const isl::checked::pw_aff &pwaff2) const;
406   inline class size n_piece() const;
407   inline isl::checked::set ne_set(isl::checked::aff aff2) const;
408   inline isl::checked::set ne_set(const isl::checked::pw_aff &pwaff2) const;
409   inline isl::checked::aff neg() const;
410   inline boolean plain_is_empty() const;
411   inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
412   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
413   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
414   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
415   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
416   inline isl::checked::multi_aff product(const isl::checked::multi_aff &multi2) const;
417   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
418   inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
419   inline isl::checked::aff pullback(isl::checked::multi_aff ma) const;
420   inline isl::checked::pw_aff pullback(const isl::checked::multi_pw_aff &mpa) const;
421   inline isl::checked::pw_aff pullback(const isl::checked::pw_multi_aff &pma) const;
422   inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
423   inline isl::checked::aff pullback(const isl::checked::aff &ma) const;
424   inline isl::checked::pw_multi_aff range_factor_domain() const;
425   inline isl::checked::pw_multi_aff range_factor_range() const;
426   inline isl::checked::multi_aff range_product(const isl::checked::multi_aff &multi2) const;
427   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
428   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
429   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
430   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
431   inline isl::checked::id range_tuple_id() const;
432   inline isl::checked::multi_aff reset_range_tuple_id() const;
433   inline isl::checked::aff scale(isl::checked::val v) const;
434   inline isl::checked::aff scale(long v) const;
435   inline isl::checked::multi_aff scale(const isl::checked::multi_val &mv) const;
436   inline isl::checked::aff scale_down(isl::checked::val v) const;
437   inline isl::checked::aff scale_down(long v) const;
438   inline isl::checked::multi_aff scale_down(const isl::checked::multi_val &mv) const;
439   inline isl::checked::multi_aff set_at(int pos, const isl::checked::aff &el) const;
440   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
441   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
442   inline isl::checked::multi_aff set_range_tuple(const isl::checked::id &id) const;
443   inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
444   inline class size size() const;
445   inline isl::checked::space space() const;
446   inline isl::checked::aff sub(isl::checked::aff aff2) const;
447   inline isl::checked::multi_aff sub(const isl::checked::multi_aff &multi2) const;
448   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
449   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
450   inline isl::checked::pw_aff sub(const isl::checked::pw_aff &pwaff2) const;
451   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
452   inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
453   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
454   inline isl::checked::pw_aff subtract_domain(const isl::checked::set &set) const;
455   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
456   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
457   inline isl::checked::pw_aff tdiv_q(const isl::checked::pw_aff &pa2) const;
458   inline isl::checked::pw_aff tdiv_r(const isl::checked::pw_aff &pa2) const;
459   inline isl::checked::aff_list to_list() const;
460   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
461   inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
462   inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
463   inline isl::checked::union_pw_aff to_union_pw_aff() const;
464   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
465   inline isl::checked::aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
466   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
467   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
468   inline isl::checked::pw_aff union_add(const isl::checked::pw_aff &pwaff2) const;
469   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
470   inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
471   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
472   static inline isl::checked::aff zero_on_domain(isl::checked::space space);
473 };
474 
475 // declarations for isl::aff_list
476 inline aff_list manage(__isl_take isl_aff_list *ptr);
477 inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
478 
479 class aff_list {
480   friend inline aff_list manage(__isl_take isl_aff_list *ptr);
481   friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
482 
483 protected:
484   isl_aff_list *ptr = nullptr;
485 
486   inline explicit aff_list(__isl_take isl_aff_list *ptr);
487 
488 public:
489   inline /* implicit */ aff_list();
490   inline /* implicit */ aff_list(const aff_list &obj);
491   inline explicit aff_list(isl::checked::ctx ctx, int n);
492   inline explicit aff_list(isl::checked::aff el);
493   inline aff_list &operator=(aff_list obj);
494   inline ~aff_list();
495   inline __isl_give isl_aff_list *copy() const &;
496   inline __isl_give isl_aff_list *copy() && = delete;
497   inline __isl_keep isl_aff_list *get() const;
498   inline __isl_give isl_aff_list *release();
499   inline bool is_null() const;
500   inline isl::checked::ctx ctx() const;
501 
502   inline isl::checked::aff_list add(isl::checked::aff el) const;
503   inline isl::checked::aff at(int index) const;
504   inline isl::checked::aff get_at(int index) const;
505   inline isl::checked::aff_list clear() const;
506   inline isl::checked::aff_list concat(isl::checked::aff_list list2) const;
507   inline isl::checked::aff_list drop(unsigned int first, unsigned int n) const;
508   inline stat foreach(const std::function<stat(isl::checked::aff)> &fn) const;
509   inline isl::checked::aff_list insert(unsigned int pos, isl::checked::aff el) const;
510   inline class size size() const;
511 };
512 
513 // declarations for isl::ast_build
514 inline ast_build manage(__isl_take isl_ast_build *ptr);
515 inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
516 
517 class ast_build {
518   friend inline ast_build manage(__isl_take isl_ast_build *ptr);
519   friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
520 
521 protected:
522   isl_ast_build *ptr = nullptr;
523 
524   inline explicit ast_build(__isl_take isl_ast_build *ptr);
525 
526 public:
527   inline /* implicit */ ast_build();
528   inline /* implicit */ ast_build(const ast_build &obj);
529   inline explicit ast_build(isl::checked::ctx ctx);
530   inline ast_build &operator=(ast_build obj);
531   inline ~ast_build();
532   inline __isl_give isl_ast_build *copy() const &;
533   inline __isl_give isl_ast_build *copy() && = delete;
534   inline __isl_keep isl_ast_build *get() const;
535   inline __isl_give isl_ast_build *release();
536   inline bool is_null() const;
537   inline isl::checked::ctx ctx() const;
538 
539 private:
540   inline ast_build &copy_callbacks(const ast_build &obj);
541   struct at_each_domain_data {
542     std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> func;
543   };
544   std::shared_ptr<at_each_domain_data> at_each_domain_data;
545   static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
546   inline void set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn);
547 public:
548   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;
549   inline isl::checked::ast_expr access_from(isl::checked::multi_pw_aff mpa) const;
550   inline isl::checked::ast_expr access_from(isl::checked::pw_multi_aff pma) const;
551   inline isl::checked::ast_expr call_from(isl::checked::multi_pw_aff mpa) const;
552   inline isl::checked::ast_expr call_from(isl::checked::pw_multi_aff pma) const;
553   inline isl::checked::ast_expr expr_from(isl::checked::pw_aff pa) const;
554   inline isl::checked::ast_expr expr_from(isl::checked::set set) const;
555   static inline isl::checked::ast_build from_context(isl::checked::set set);
556   inline isl::checked::ast_node node_from(isl::checked::schedule schedule) const;
557   inline isl::checked::ast_node node_from_schedule_map(isl::checked::union_map schedule) const;
558   inline isl::checked::union_map schedule() const;
559   inline isl::checked::union_map get_schedule() const;
560 };
561 
562 // declarations for isl::ast_expr
563 inline ast_expr manage(__isl_take isl_ast_expr *ptr);
564 inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
565 
566 class ast_expr {
567   friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
568   friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
569 
570 protected:
571   isl_ast_expr *ptr = nullptr;
572 
573   inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
574 
575 public:
576   inline /* implicit */ ast_expr();
577   inline /* implicit */ ast_expr(const ast_expr &obj);
578   inline ast_expr &operator=(ast_expr obj);
579   inline ~ast_expr();
580   inline __isl_give isl_ast_expr *copy() const &;
581   inline __isl_give isl_ast_expr *copy() && = delete;
582   inline __isl_keep isl_ast_expr *get() const;
583   inline __isl_give isl_ast_expr *release();
584   inline bool is_null() const;
585 private:
586   template <typename T,
587           typename = typename std::enable_if<std::is_same<
588                   const decltype(isl_ast_expr_get_type(NULL)),
589                   const T>::value>::type>
590   inline boolean isa_type(T subtype) const;
591 public:
592   template <class T> inline boolean isa() const;
593   template <class T> inline T as() const;
594   inline isl::checked::ctx ctx() const;
595 
596   inline std::string to_C_str() const;
597 };
598 
599 // declarations for isl::ast_expr_id
600 
601 class ast_expr_id : public ast_expr {
602   template <class T>
603   friend boolean ast_expr::isa() const;
604   friend ast_expr_id ast_expr::as<ast_expr_id>() const;
605   static const auto type = isl_ast_expr_id;
606 
607 protected:
608   inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
609 
610 public:
611   inline /* implicit */ ast_expr_id();
612   inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
613   inline ast_expr_id &operator=(ast_expr_id obj);
614   inline isl::checked::ctx ctx() const;
615 
616   inline isl::checked::id id() const;
617   inline isl::checked::id get_id() const;
618 };
619 
620 // declarations for isl::ast_expr_int
621 
622 class ast_expr_int : public ast_expr {
623   template <class T>
624   friend boolean ast_expr::isa() const;
625   friend ast_expr_int ast_expr::as<ast_expr_int>() const;
626   static const auto type = isl_ast_expr_int;
627 
628 protected:
629   inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
630 
631 public:
632   inline /* implicit */ ast_expr_int();
633   inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
634   inline ast_expr_int &operator=(ast_expr_int obj);
635   inline isl::checked::ctx ctx() const;
636 
637   inline isl::checked::val val() const;
638   inline isl::checked::val get_val() const;
639 };
640 
641 // declarations for isl::ast_expr_op
642 
643 class ast_expr_op : public ast_expr {
644   template <class T>
645   friend boolean ast_expr::isa() const;
646   friend ast_expr_op ast_expr::as<ast_expr_op>() const;
647   static const auto type = isl_ast_expr_op;
648 
649 protected:
650   inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
651 
652 public:
653   inline /* implicit */ ast_expr_op();
654   inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
655   inline ast_expr_op &operator=(ast_expr_op obj);
656 private:
657   template <typename T,
658           typename = typename std::enable_if<std::is_same<
659                   const decltype(isl_ast_expr_op_get_type(NULL)),
660                   const T>::value>::type>
661   inline boolean isa_type(T subtype) const;
662 public:
663   template <class T> inline boolean isa() const;
664   template <class T> inline T as() const;
665   inline isl::checked::ctx ctx() const;
666 
667   inline isl::checked::ast_expr arg(int pos) const;
668   inline isl::checked::ast_expr get_arg(int pos) const;
669   inline class size n_arg() const;
670   inline class size get_n_arg() const;
671 };
672 
673 // declarations for isl::ast_expr_op_access
674 
675 class ast_expr_op_access : public ast_expr_op {
676   template <class T>
677   friend boolean ast_expr_op::isa() const;
678   friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
679   static const auto type = isl_ast_expr_op_access;
680 
681 protected:
682   inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
683 
684 public:
685   inline /* implicit */ ast_expr_op_access();
686   inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
687   inline ast_expr_op_access &operator=(ast_expr_op_access obj);
688   inline isl::checked::ctx ctx() const;
689 
690 };
691 
692 // declarations for isl::ast_expr_op_add
693 
694 class ast_expr_op_add : public ast_expr_op {
695   template <class T>
696   friend boolean ast_expr_op::isa() const;
697   friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
698   static const auto type = isl_ast_expr_op_add;
699 
700 protected:
701   inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
702 
703 public:
704   inline /* implicit */ ast_expr_op_add();
705   inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
706   inline ast_expr_op_add &operator=(ast_expr_op_add obj);
707   inline isl::checked::ctx ctx() const;
708 
709 };
710 
711 // declarations for isl::ast_expr_op_address_of
712 
713 class ast_expr_op_address_of : public ast_expr_op {
714   template <class T>
715   friend boolean ast_expr_op::isa() const;
716   friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
717   static const auto type = isl_ast_expr_op_address_of;
718 
719 protected:
720   inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
721 
722 public:
723   inline /* implicit */ ast_expr_op_address_of();
724   inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
725   inline ast_expr_op_address_of &operator=(ast_expr_op_address_of obj);
726   inline isl::checked::ctx ctx() const;
727 
728 };
729 
730 // declarations for isl::ast_expr_op_and
731 
732 class ast_expr_op_and : public ast_expr_op {
733   template <class T>
734   friend boolean ast_expr_op::isa() const;
735   friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
736   static const auto type = isl_ast_expr_op_and;
737 
738 protected:
739   inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
740 
741 public:
742   inline /* implicit */ ast_expr_op_and();
743   inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
744   inline ast_expr_op_and &operator=(ast_expr_op_and obj);
745   inline isl::checked::ctx ctx() const;
746 
747 };
748 
749 // declarations for isl::ast_expr_op_and_then
750 
751 class ast_expr_op_and_then : public ast_expr_op {
752   template <class T>
753   friend boolean ast_expr_op::isa() const;
754   friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
755   static const auto type = isl_ast_expr_op_and_then;
756 
757 protected:
758   inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
759 
760 public:
761   inline /* implicit */ ast_expr_op_and_then();
762   inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
763   inline ast_expr_op_and_then &operator=(ast_expr_op_and_then obj);
764   inline isl::checked::ctx ctx() const;
765 
766 };
767 
768 // declarations for isl::ast_expr_op_call
769 
770 class ast_expr_op_call : public ast_expr_op {
771   template <class T>
772   friend boolean ast_expr_op::isa() const;
773   friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
774   static const auto type = isl_ast_expr_op_call;
775 
776 protected:
777   inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
778 
779 public:
780   inline /* implicit */ ast_expr_op_call();
781   inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
782   inline ast_expr_op_call &operator=(ast_expr_op_call obj);
783   inline isl::checked::ctx ctx() const;
784 
785 };
786 
787 // declarations for isl::ast_expr_op_cond
788 
789 class ast_expr_op_cond : public ast_expr_op {
790   template <class T>
791   friend boolean ast_expr_op::isa() const;
792   friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
793   static const auto type = isl_ast_expr_op_cond;
794 
795 protected:
796   inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
797 
798 public:
799   inline /* implicit */ ast_expr_op_cond();
800   inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
801   inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
802   inline isl::checked::ctx ctx() const;
803 
804 };
805 
806 // declarations for isl::ast_expr_op_div
807 
808 class ast_expr_op_div : public ast_expr_op {
809   template <class T>
810   friend boolean ast_expr_op::isa() const;
811   friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
812   static const auto type = isl_ast_expr_op_div;
813 
814 protected:
815   inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
816 
817 public:
818   inline /* implicit */ ast_expr_op_div();
819   inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
820   inline ast_expr_op_div &operator=(ast_expr_op_div obj);
821   inline isl::checked::ctx ctx() const;
822 
823 };
824 
825 // declarations for isl::ast_expr_op_eq
826 
827 class ast_expr_op_eq : public ast_expr_op {
828   template <class T>
829   friend boolean ast_expr_op::isa() const;
830   friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
831   static const auto type = isl_ast_expr_op_eq;
832 
833 protected:
834   inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
835 
836 public:
837   inline /* implicit */ ast_expr_op_eq();
838   inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
839   inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
840   inline isl::checked::ctx ctx() const;
841 
842 };
843 
844 // declarations for isl::ast_expr_op_fdiv_q
845 
846 class ast_expr_op_fdiv_q : public ast_expr_op {
847   template <class T>
848   friend boolean ast_expr_op::isa() const;
849   friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
850   static const auto type = isl_ast_expr_op_fdiv_q;
851 
852 protected:
853   inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
854 
855 public:
856   inline /* implicit */ ast_expr_op_fdiv_q();
857   inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
858   inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
859   inline isl::checked::ctx ctx() const;
860 
861 };
862 
863 // declarations for isl::ast_expr_op_ge
864 
865 class ast_expr_op_ge : public ast_expr_op {
866   template <class T>
867   friend boolean ast_expr_op::isa() const;
868   friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
869   static const auto type = isl_ast_expr_op_ge;
870 
871 protected:
872   inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
873 
874 public:
875   inline /* implicit */ ast_expr_op_ge();
876   inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
877   inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
878   inline isl::checked::ctx ctx() const;
879 
880 };
881 
882 // declarations for isl::ast_expr_op_gt
883 
884 class ast_expr_op_gt : public ast_expr_op {
885   template <class T>
886   friend boolean ast_expr_op::isa() const;
887   friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
888   static const auto type = isl_ast_expr_op_gt;
889 
890 protected:
891   inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
892 
893 public:
894   inline /* implicit */ ast_expr_op_gt();
895   inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
896   inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
897   inline isl::checked::ctx ctx() const;
898 
899 };
900 
901 // declarations for isl::ast_expr_op_le
902 
903 class ast_expr_op_le : public ast_expr_op {
904   template <class T>
905   friend boolean ast_expr_op::isa() const;
906   friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
907   static const auto type = isl_ast_expr_op_le;
908 
909 protected:
910   inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
911 
912 public:
913   inline /* implicit */ ast_expr_op_le();
914   inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
915   inline ast_expr_op_le &operator=(ast_expr_op_le obj);
916   inline isl::checked::ctx ctx() const;
917 
918 };
919 
920 // declarations for isl::ast_expr_op_lt
921 
922 class ast_expr_op_lt : public ast_expr_op {
923   template <class T>
924   friend boolean ast_expr_op::isa() const;
925   friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
926   static const auto type = isl_ast_expr_op_lt;
927 
928 protected:
929   inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
930 
931 public:
932   inline /* implicit */ ast_expr_op_lt();
933   inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
934   inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
935   inline isl::checked::ctx ctx() const;
936 
937 };
938 
939 // declarations for isl::ast_expr_op_max
940 
941 class ast_expr_op_max : public ast_expr_op {
942   template <class T>
943   friend boolean ast_expr_op::isa() const;
944   friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
945   static const auto type = isl_ast_expr_op_max;
946 
947 protected:
948   inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
949 
950 public:
951   inline /* implicit */ ast_expr_op_max();
952   inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
953   inline ast_expr_op_max &operator=(ast_expr_op_max obj);
954   inline isl::checked::ctx ctx() const;
955 
956 };
957 
958 // declarations for isl::ast_expr_op_member
959 
960 class ast_expr_op_member : public ast_expr_op {
961   template <class T>
962   friend boolean ast_expr_op::isa() const;
963   friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
964   static const auto type = isl_ast_expr_op_member;
965 
966 protected:
967   inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
968 
969 public:
970   inline /* implicit */ ast_expr_op_member();
971   inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
972   inline ast_expr_op_member &operator=(ast_expr_op_member obj);
973   inline isl::checked::ctx ctx() const;
974 
975 };
976 
977 // declarations for isl::ast_expr_op_min
978 
979 class ast_expr_op_min : public ast_expr_op {
980   template <class T>
981   friend boolean ast_expr_op::isa() const;
982   friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
983   static const auto type = isl_ast_expr_op_min;
984 
985 protected:
986   inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
987 
988 public:
989   inline /* implicit */ ast_expr_op_min();
990   inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
991   inline ast_expr_op_min &operator=(ast_expr_op_min obj);
992   inline isl::checked::ctx ctx() const;
993 
994 };
995 
996 // declarations for isl::ast_expr_op_minus
997 
998 class ast_expr_op_minus : public ast_expr_op {
999   template <class T>
1000   friend boolean ast_expr_op::isa() const;
1001   friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
1002   static const auto type = isl_ast_expr_op_minus;
1003 
1004 protected:
1005   inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1006 
1007 public:
1008   inline /* implicit */ ast_expr_op_minus();
1009   inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
1010   inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
1011   inline isl::checked::ctx ctx() const;
1012 
1013 };
1014 
1015 // declarations for isl::ast_expr_op_mul
1016 
1017 class ast_expr_op_mul : public ast_expr_op {
1018   template <class T>
1019   friend boolean ast_expr_op::isa() const;
1020   friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
1021   static const auto type = isl_ast_expr_op_mul;
1022 
1023 protected:
1024   inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1025 
1026 public:
1027   inline /* implicit */ ast_expr_op_mul();
1028   inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
1029   inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
1030   inline isl::checked::ctx ctx() const;
1031 
1032 };
1033 
1034 // declarations for isl::ast_expr_op_or
1035 
1036 class ast_expr_op_or : public ast_expr_op {
1037   template <class T>
1038   friend boolean ast_expr_op::isa() const;
1039   friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
1040   static const auto type = isl_ast_expr_op_or;
1041 
1042 protected:
1043   inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1044 
1045 public:
1046   inline /* implicit */ ast_expr_op_or();
1047   inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
1048   inline ast_expr_op_or &operator=(ast_expr_op_or obj);
1049   inline isl::checked::ctx ctx() const;
1050 
1051 };
1052 
1053 // declarations for isl::ast_expr_op_or_else
1054 
1055 class ast_expr_op_or_else : public ast_expr_op {
1056   template <class T>
1057   friend boolean ast_expr_op::isa() const;
1058   friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
1059   static const auto type = isl_ast_expr_op_or_else;
1060 
1061 protected:
1062   inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
1063 
1064 public:
1065   inline /* implicit */ ast_expr_op_or_else();
1066   inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
1067   inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
1068   inline isl::checked::ctx ctx() const;
1069 
1070 };
1071 
1072 // declarations for isl::ast_expr_op_pdiv_q
1073 
1074 class ast_expr_op_pdiv_q : public ast_expr_op {
1075   template <class T>
1076   friend boolean ast_expr_op::isa() const;
1077   friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
1078   static const auto type = isl_ast_expr_op_pdiv_q;
1079 
1080 protected:
1081   inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
1082 
1083 public:
1084   inline /* implicit */ ast_expr_op_pdiv_q();
1085   inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
1086   inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
1087   inline isl::checked::ctx ctx() const;
1088 
1089 };
1090 
1091 // declarations for isl::ast_expr_op_pdiv_r
1092 
1093 class ast_expr_op_pdiv_r : public ast_expr_op {
1094   template <class T>
1095   friend boolean ast_expr_op::isa() const;
1096   friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
1097   static const auto type = isl_ast_expr_op_pdiv_r;
1098 
1099 protected:
1100   inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
1101 
1102 public:
1103   inline /* implicit */ ast_expr_op_pdiv_r();
1104   inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
1105   inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
1106   inline isl::checked::ctx ctx() const;
1107 
1108 };
1109 
1110 // declarations for isl::ast_expr_op_select
1111 
1112 class ast_expr_op_select : public ast_expr_op {
1113   template <class T>
1114   friend boolean ast_expr_op::isa() const;
1115   friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
1116   static const auto type = isl_ast_expr_op_select;
1117 
1118 protected:
1119   inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
1120 
1121 public:
1122   inline /* implicit */ ast_expr_op_select();
1123   inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
1124   inline ast_expr_op_select &operator=(ast_expr_op_select obj);
1125   inline isl::checked::ctx ctx() const;
1126 
1127 };
1128 
1129 // declarations for isl::ast_expr_op_sub
1130 
1131 class ast_expr_op_sub : public ast_expr_op {
1132   template <class T>
1133   friend boolean ast_expr_op::isa() const;
1134   friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
1135   static const auto type = isl_ast_expr_op_sub;
1136 
1137 protected:
1138   inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1139 
1140 public:
1141   inline /* implicit */ ast_expr_op_sub();
1142   inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
1143   inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
1144   inline isl::checked::ctx ctx() const;
1145 
1146 };
1147 
1148 // declarations for isl::ast_expr_op_zdiv_r
1149 
1150 class ast_expr_op_zdiv_r : public ast_expr_op {
1151   template <class T>
1152   friend boolean ast_expr_op::isa() const;
1153   friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
1154   static const auto type = isl_ast_expr_op_zdiv_r;
1155 
1156 protected:
1157   inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
1158 
1159 public:
1160   inline /* implicit */ ast_expr_op_zdiv_r();
1161   inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
1162   inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
1163   inline isl::checked::ctx ctx() const;
1164 
1165 };
1166 
1167 // declarations for isl::ast_node
1168 inline ast_node manage(__isl_take isl_ast_node *ptr);
1169 inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1170 
1171 class ast_node {
1172   friend inline ast_node manage(__isl_take isl_ast_node *ptr);
1173   friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1174 
1175 protected:
1176   isl_ast_node *ptr = nullptr;
1177 
1178   inline explicit ast_node(__isl_take isl_ast_node *ptr);
1179 
1180 public:
1181   inline /* implicit */ ast_node();
1182   inline /* implicit */ ast_node(const ast_node &obj);
1183   inline ast_node &operator=(ast_node obj);
1184   inline ~ast_node();
1185   inline __isl_give isl_ast_node *copy() const &;
1186   inline __isl_give isl_ast_node *copy() && = delete;
1187   inline __isl_keep isl_ast_node *get() const;
1188   inline __isl_give isl_ast_node *release();
1189   inline bool is_null() const;
1190 private:
1191   template <typename T,
1192           typename = typename std::enable_if<std::is_same<
1193                   const decltype(isl_ast_node_get_type(NULL)),
1194                   const T>::value>::type>
1195   inline boolean isa_type(T subtype) const;
1196 public:
1197   template <class T> inline boolean isa() const;
1198   template <class T> inline T as() const;
1199   inline isl::checked::ctx ctx() const;
1200 
1201   inline std::string to_C_str() const;
1202   inline isl::checked::ast_node_list to_list() const;
1203 };
1204 
1205 // declarations for isl::ast_node_block
1206 
1207 class ast_node_block : public ast_node {
1208   template <class T>
1209   friend boolean ast_node::isa() const;
1210   friend ast_node_block ast_node::as<ast_node_block>() const;
1211   static const auto type = isl_ast_node_block;
1212 
1213 protected:
1214   inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1215 
1216 public:
1217   inline /* implicit */ ast_node_block();
1218   inline /* implicit */ ast_node_block(const ast_node_block &obj);
1219   inline ast_node_block &operator=(ast_node_block obj);
1220   inline isl::checked::ctx ctx() const;
1221 
1222   inline isl::checked::ast_node_list children() const;
1223   inline isl::checked::ast_node_list get_children() const;
1224 };
1225 
1226 // declarations for isl::ast_node_for
1227 
1228 class ast_node_for : public ast_node {
1229   template <class T>
1230   friend boolean ast_node::isa() const;
1231   friend ast_node_for ast_node::as<ast_node_for>() const;
1232   static const auto type = isl_ast_node_for;
1233 
1234 protected:
1235   inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1236 
1237 public:
1238   inline /* implicit */ ast_node_for();
1239   inline /* implicit */ ast_node_for(const ast_node_for &obj);
1240   inline ast_node_for &operator=(ast_node_for obj);
1241   inline isl::checked::ctx ctx() const;
1242 
1243   inline isl::checked::ast_node body() const;
1244   inline isl::checked::ast_node get_body() const;
1245   inline isl::checked::ast_expr cond() const;
1246   inline isl::checked::ast_expr get_cond() const;
1247   inline isl::checked::ast_expr inc() const;
1248   inline isl::checked::ast_expr get_inc() const;
1249   inline isl::checked::ast_expr init() const;
1250   inline isl::checked::ast_expr get_init() const;
1251   inline boolean is_degenerate() const;
1252   inline isl::checked::ast_expr iterator() const;
1253   inline isl::checked::ast_expr get_iterator() const;
1254 };
1255 
1256 // declarations for isl::ast_node_if
1257 
1258 class ast_node_if : public ast_node {
1259   template <class T>
1260   friend boolean ast_node::isa() const;
1261   friend ast_node_if ast_node::as<ast_node_if>() const;
1262   static const auto type = isl_ast_node_if;
1263 
1264 protected:
1265   inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1266 
1267 public:
1268   inline /* implicit */ ast_node_if();
1269   inline /* implicit */ ast_node_if(const ast_node_if &obj);
1270   inline ast_node_if &operator=(ast_node_if obj);
1271   inline isl::checked::ctx ctx() const;
1272 
1273   inline isl::checked::ast_expr cond() const;
1274   inline isl::checked::ast_expr get_cond() const;
1275   inline isl::checked::ast_node else_node() const;
1276   inline isl::checked::ast_node get_else_node() const;
1277   inline boolean has_else_node() const;
1278   inline isl::checked::ast_node then_node() const;
1279   inline isl::checked::ast_node get_then_node() const;
1280 };
1281 
1282 // declarations for isl::ast_node_list
1283 inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1284 inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1285 
1286 class ast_node_list {
1287   friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1288   friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1289 
1290 protected:
1291   isl_ast_node_list *ptr = nullptr;
1292 
1293   inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1294 
1295 public:
1296   inline /* implicit */ ast_node_list();
1297   inline /* implicit */ ast_node_list(const ast_node_list &obj);
1298   inline explicit ast_node_list(isl::checked::ctx ctx, int n);
1299   inline explicit ast_node_list(isl::checked::ast_node el);
1300   inline ast_node_list &operator=(ast_node_list obj);
1301   inline ~ast_node_list();
1302   inline __isl_give isl_ast_node_list *copy() const &;
1303   inline __isl_give isl_ast_node_list *copy() && = delete;
1304   inline __isl_keep isl_ast_node_list *get() const;
1305   inline __isl_give isl_ast_node_list *release();
1306   inline bool is_null() const;
1307   inline isl::checked::ctx ctx() const;
1308 
1309   inline isl::checked::ast_node_list add(isl::checked::ast_node el) const;
1310   inline isl::checked::ast_node at(int index) const;
1311   inline isl::checked::ast_node get_at(int index) const;
1312   inline isl::checked::ast_node_list clear() const;
1313   inline isl::checked::ast_node_list concat(isl::checked::ast_node_list list2) const;
1314   inline isl::checked::ast_node_list drop(unsigned int first, unsigned int n) const;
1315   inline stat foreach(const std::function<stat(isl::checked::ast_node)> &fn) const;
1316   inline isl::checked::ast_node_list insert(unsigned int pos, isl::checked::ast_node el) const;
1317   inline class size size() const;
1318 };
1319 
1320 // declarations for isl::ast_node_mark
1321 
1322 class ast_node_mark : public ast_node {
1323   template <class T>
1324   friend boolean ast_node::isa() const;
1325   friend ast_node_mark ast_node::as<ast_node_mark>() const;
1326   static const auto type = isl_ast_node_mark;
1327 
1328 protected:
1329   inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1330 
1331 public:
1332   inline /* implicit */ ast_node_mark();
1333   inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
1334   inline ast_node_mark &operator=(ast_node_mark obj);
1335   inline isl::checked::ctx ctx() const;
1336 
1337   inline isl::checked::id id() const;
1338   inline isl::checked::id get_id() const;
1339   inline isl::checked::ast_node node() const;
1340   inline isl::checked::ast_node get_node() const;
1341 };
1342 
1343 // declarations for isl::ast_node_user
1344 
1345 class ast_node_user : public ast_node {
1346   template <class T>
1347   friend boolean ast_node::isa() const;
1348   friend ast_node_user ast_node::as<ast_node_user>() const;
1349   static const auto type = isl_ast_node_user;
1350 
1351 protected:
1352   inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1353 
1354 public:
1355   inline /* implicit */ ast_node_user();
1356   inline /* implicit */ ast_node_user(const ast_node_user &obj);
1357   inline ast_node_user &operator=(ast_node_user obj);
1358   inline isl::checked::ctx ctx() const;
1359 
1360   inline isl::checked::ast_expr expr() const;
1361   inline isl::checked::ast_expr get_expr() const;
1362 };
1363 
1364 // declarations for isl::basic_map
1365 inline basic_map manage(__isl_take isl_basic_map *ptr);
1366 inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1367 
1368 class basic_map {
1369   friend inline basic_map manage(__isl_take isl_basic_map *ptr);
1370   friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1371 
1372 protected:
1373   isl_basic_map *ptr = nullptr;
1374 
1375   inline explicit basic_map(__isl_take isl_basic_map *ptr);
1376 
1377 public:
1378   inline /* implicit */ basic_map();
1379   inline /* implicit */ basic_map(const basic_map &obj);
1380   inline explicit basic_map(isl::checked::ctx ctx, const std::string &str);
1381   inline basic_map &operator=(basic_map obj);
1382   inline ~basic_map();
1383   inline __isl_give isl_basic_map *copy() const &;
1384   inline __isl_give isl_basic_map *copy() && = delete;
1385   inline __isl_keep isl_basic_map *get() const;
1386   inline __isl_give isl_basic_map *release();
1387   inline bool is_null() const;
1388   inline isl::checked::ctx ctx() const;
1389 
1390   inline isl::checked::basic_map affine_hull() const;
1391   inline isl::checked::basic_map apply_domain(isl::checked::basic_map bmap2) const;
1392   inline isl::checked::map apply_domain(const isl::checked::map &map2) const;
1393   inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1394   inline isl::checked::basic_map apply_range(isl::checked::basic_map bmap2) const;
1395   inline isl::checked::map apply_range(const isl::checked::map &map2) const;
1396   inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1397   inline isl::checked::map as_map() const;
1398   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1399   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1400   inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
1401   inline isl::checked::set bind_domain(const isl::checked::multi_id &tuple) const;
1402   inline isl::checked::set bind_range(const isl::checked::multi_id &tuple) const;
1403   inline isl::checked::map coalesce() const;
1404   inline isl::checked::map complement() const;
1405   inline isl::checked::union_map compute_divs() const;
1406   inline isl::checked::map curry() const;
1407   inline isl::checked::basic_set deltas() const;
1408   inline isl::checked::basic_map detect_equalities() const;
1409   inline isl::checked::set domain() const;
1410   inline isl::checked::map domain_factor_domain() const;
1411   inline isl::checked::map domain_factor_range() const;
1412   inline isl::checked::union_map domain_map() const;
1413   inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1414   inline isl::checked::map domain_product(const isl::checked::map &map2) const;
1415   inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1416   inline isl::checked::id domain_tuple_id() const;
1417   inline isl::checked::map eq_at(const isl::checked::multi_pw_aff &mpa) const;
1418   inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1419   inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1420   inline isl::checked::map extract_map(const isl::checked::space &space) const;
1421   inline isl::checked::map factor_domain() const;
1422   inline isl::checked::map factor_range() const;
1423   inline isl::checked::union_map fixed_power(const isl::checked::val &exp) const;
1424   inline isl::checked::union_map fixed_power(long exp) const;
1425   inline isl::checked::basic_map flatten() const;
1426   inline isl::checked::basic_map flatten_domain() const;
1427   inline isl::checked::basic_map flatten_range() const;
1428   inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1429   inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1430   inline isl::checked::basic_map gist(isl::checked::basic_map context) const;
1431   inline isl::checked::map gist(const isl::checked::map &context) const;
1432   inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1433   inline isl::checked::map gist_domain(const isl::checked::set &context) const;
1434   inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1435   inline isl::checked::union_map gist_params(const isl::checked::set &set) const;
1436   inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1437   inline boolean has_domain_tuple_id() const;
1438   inline boolean has_range_tuple_id() const;
1439   inline isl::checked::basic_map intersect(isl::checked::basic_map bmap2) const;
1440   inline isl::checked::map intersect(const isl::checked::map &map2) const;
1441   inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1442   inline isl::checked::basic_map intersect_domain(isl::checked::basic_set bset) const;
1443   inline isl::checked::map intersect_domain(const isl::checked::set &set) const;
1444   inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1445   inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1446   inline isl::checked::basic_map intersect_domain(const isl::checked::point &bset) const;
1447   inline isl::checked::map intersect_domain_factor_domain(const isl::checked::map &factor) const;
1448   inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
1449   inline isl::checked::map intersect_domain_factor_range(const isl::checked::map &factor) const;
1450   inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
1451   inline isl::checked::map intersect_params(const isl::checked::set &params) const;
1452   inline isl::checked::basic_map intersect_range(isl::checked::basic_set bset) const;
1453   inline isl::checked::map intersect_range(const isl::checked::set &set) const;
1454   inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
1455   inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
1456   inline isl::checked::basic_map intersect_range(const isl::checked::point &bset) const;
1457   inline isl::checked::map intersect_range_factor_domain(const isl::checked::map &factor) const;
1458   inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
1459   inline isl::checked::map intersect_range_factor_range(const isl::checked::map &factor) const;
1460   inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
1461   inline boolean is_bijective() const;
1462   inline boolean is_disjoint(const isl::checked::map &map2) const;
1463   inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
1464   inline boolean is_empty() const;
1465   inline boolean is_equal(const isl::checked::basic_map &bmap2) const;
1466   inline boolean is_equal(const isl::checked::map &map2) const;
1467   inline boolean is_equal(const isl::checked::union_map &umap2) const;
1468   inline boolean is_injective() const;
1469   inline boolean is_single_valued() const;
1470   inline boolean is_strict_subset(const isl::checked::map &map2) const;
1471   inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
1472   inline boolean is_subset(const isl::checked::basic_map &bmap2) const;
1473   inline boolean is_subset(const isl::checked::map &map2) const;
1474   inline boolean is_subset(const isl::checked::union_map &umap2) const;
1475   inline boolean isa_map() const;
1476   inline isl::checked::map lex_ge_at(const isl::checked::multi_pw_aff &mpa) const;
1477   inline isl::checked::map lex_gt_at(const isl::checked::multi_pw_aff &mpa) const;
1478   inline isl::checked::map lex_le_at(const isl::checked::multi_pw_aff &mpa) const;
1479   inline isl::checked::map lex_lt_at(const isl::checked::multi_pw_aff &mpa) const;
1480   inline isl::checked::map lexmax() const;
1481   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1482   inline isl::checked::map lexmin() const;
1483   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1484   inline isl::checked::map lower_bound(const isl::checked::multi_pw_aff &lower) const;
1485   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1486   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1487   inline isl::checked::basic_map polyhedral_hull() const;
1488   inline isl::checked::map preimage_domain(const isl::checked::multi_aff &ma) const;
1489   inline isl::checked::map preimage_domain(const isl::checked::multi_pw_aff &mpa) const;
1490   inline isl::checked::map preimage_domain(const isl::checked::pw_multi_aff &pma) const;
1491   inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
1492   inline isl::checked::map preimage_range(const isl::checked::multi_aff &ma) const;
1493   inline isl::checked::map preimage_range(const isl::checked::pw_multi_aff &pma) const;
1494   inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
1495   inline isl::checked::map product(const isl::checked::map &map2) const;
1496   inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
1497   inline isl::checked::map project_out_all_params() const;
1498   inline isl::checked::set range() const;
1499   inline isl::checked::map range_factor_domain() const;
1500   inline isl::checked::map range_factor_range() const;
1501   inline isl::checked::union_map range_map() const;
1502   inline isl::checked::map range_product(const isl::checked::map &map2) const;
1503   inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
1504   inline isl::checked::map range_reverse() const;
1505   inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
1506   inline isl::checked::id range_tuple_id() const;
1507   inline isl::checked::basic_map reverse() const;
1508   inline isl::checked::basic_map sample() const;
1509   inline isl::checked::map set_domain_tuple(const isl::checked::id &id) const;
1510   inline isl::checked::map set_domain_tuple(const std::string &id) const;
1511   inline isl::checked::map set_range_tuple(const isl::checked::id &id) const;
1512   inline isl::checked::map set_range_tuple(const std::string &id) const;
1513   inline isl::checked::space space() const;
1514   inline isl::checked::map subtract(const isl::checked::map &map2) const;
1515   inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
1516   inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
1517   inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
1518   inline isl::checked::union_map to_union_map() const;
1519   inline isl::checked::map uncurry() const;
1520   inline isl::checked::map unite(isl::checked::basic_map bmap2) const;
1521   inline isl::checked::map unite(const isl::checked::map &map2) const;
1522   inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
1523   inline isl::checked::basic_map unshifted_simple_hull() const;
1524   inline isl::checked::map upper_bound(const isl::checked::multi_pw_aff &upper) const;
1525   inline isl::checked::set wrap() const;
1526   inline isl::checked::map zip() const;
1527 };
1528 
1529 // declarations for isl::basic_set
1530 inline basic_set manage(__isl_take isl_basic_set *ptr);
1531 inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1532 
1533 class basic_set {
1534   friend inline basic_set manage(__isl_take isl_basic_set *ptr);
1535   friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1536 
1537 protected:
1538   isl_basic_set *ptr = nullptr;
1539 
1540   inline explicit basic_set(__isl_take isl_basic_set *ptr);
1541 
1542 public:
1543   inline /* implicit */ basic_set();
1544   inline /* implicit */ basic_set(const basic_set &obj);
1545   inline /* implicit */ basic_set(isl::checked::point pnt);
1546   inline explicit basic_set(isl::checked::ctx ctx, const std::string &str);
1547   inline basic_set &operator=(basic_set obj);
1548   inline ~basic_set();
1549   inline __isl_give isl_basic_set *copy() const &;
1550   inline __isl_give isl_basic_set *copy() && = delete;
1551   inline __isl_keep isl_basic_set *get() const;
1552   inline __isl_give isl_basic_set *release();
1553   inline bool is_null() const;
1554   inline isl::checked::ctx ctx() const;
1555 
1556   inline isl::checked::basic_set affine_hull() const;
1557   inline isl::checked::basic_set apply(isl::checked::basic_map bmap) const;
1558   inline isl::checked::set apply(const isl::checked::map &map) const;
1559   inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
1560   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1561   inline isl::checked::set as_set() const;
1562   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
1563   inline isl::checked::set coalesce() const;
1564   inline isl::checked::set complement() const;
1565   inline isl::checked::union_set compute_divs() const;
1566   inline isl::checked::basic_set detect_equalities() const;
1567   inline isl::checked::val dim_max_val(int pos) const;
1568   inline isl::checked::val dim_min_val(int pos) const;
1569   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
1570   inline isl::checked::set extract_set(const isl::checked::space &space) const;
1571   inline isl::checked::basic_set flatten() const;
1572   inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
1573   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
1574   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
1575   inline isl::checked::basic_set gist(isl::checked::basic_set context) const;
1576   inline isl::checked::set gist(const isl::checked::set &context) const;
1577   inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
1578   inline isl::checked::basic_set gist(const isl::checked::point &context) const;
1579   inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
1580   inline isl::checked::map identity() const;
1581   inline isl::checked::pw_aff indicator_function() const;
1582   inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
1583   inline isl::checked::basic_set intersect(isl::checked::basic_set bset2) const;
1584   inline isl::checked::set intersect(const isl::checked::set &set2) const;
1585   inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
1586   inline isl::checked::basic_set intersect(const isl::checked::point &bset2) const;
1587   inline isl::checked::basic_set intersect_params(isl::checked::basic_set bset2) const;
1588   inline isl::checked::set intersect_params(const isl::checked::set &params) const;
1589   inline isl::checked::basic_set intersect_params(const isl::checked::point &bset2) const;
1590   inline boolean involves_locals() const;
1591   inline boolean is_disjoint(const isl::checked::set &set2) const;
1592   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
1593   inline boolean is_empty() const;
1594   inline boolean is_equal(const isl::checked::basic_set &bset2) const;
1595   inline boolean is_equal(const isl::checked::set &set2) const;
1596   inline boolean is_equal(const isl::checked::union_set &uset2) const;
1597   inline boolean is_equal(const isl::checked::point &bset2) const;
1598   inline boolean is_singleton() const;
1599   inline boolean is_strict_subset(const isl::checked::set &set2) const;
1600   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
1601   inline boolean is_subset(const isl::checked::basic_set &bset2) const;
1602   inline boolean is_subset(const isl::checked::set &set2) const;
1603   inline boolean is_subset(const isl::checked::union_set &uset2) const;
1604   inline boolean is_subset(const isl::checked::point &bset2) const;
1605   inline boolean is_wrapping() const;
1606   inline boolean isa_set() const;
1607   inline isl::checked::set lexmax() const;
1608   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1609   inline isl::checked::set lexmin() const;
1610   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1611   inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
1612   inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
1613   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1614   inline isl::checked::val max_val(const isl::checked::aff &obj) const;
1615   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1616   inline isl::checked::val min_val(const isl::checked::aff &obj) const;
1617   inline isl::checked::basic_set params() const;
1618   inline isl::checked::multi_val plain_multi_val_if_fixed() const;
1619   inline isl::checked::basic_set polyhedral_hull() const;
1620   inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
1621   inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
1622   inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
1623   inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
1624   inline isl::checked::set product(const isl::checked::set &set2) const;
1625   inline isl::checked::set project_out_all_params() const;
1626   inline isl::checked::set project_out_param(const isl::checked::id &id) const;
1627   inline isl::checked::set project_out_param(const std::string &id) const;
1628   inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
1629   inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
1630   inline isl::checked::basic_set sample() const;
1631   inline isl::checked::point sample_point() const;
1632   inline isl::checked::fixed_box simple_fixed_box_hull() const;
1633   inline isl::checked::space space() const;
1634   inline isl::checked::val stride(int pos) const;
1635   inline isl::checked::set subtract(const isl::checked::set &set2) const;
1636   inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
1637   inline isl::checked::union_set_list to_list() const;
1638   inline isl::checked::set to_set() const;
1639   inline isl::checked::union_set to_union_set() const;
1640   inline isl::checked::map translation() const;
1641   inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
1642   inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
1643   inline isl::checked::set unite(isl::checked::basic_set bset2) const;
1644   inline isl::checked::set unite(const isl::checked::set &set2) const;
1645   inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
1646   inline isl::checked::set unite(const isl::checked::point &bset2) const;
1647   inline isl::checked::basic_set unshifted_simple_hull() const;
1648   inline isl::checked::map unwrap() const;
1649   inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
1650   inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
1651 };
1652 
1653 // declarations for isl::fixed_box
1654 inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1655 inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1656 
1657 class fixed_box {
1658   friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1659   friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1660 
1661 protected:
1662   isl_fixed_box *ptr = nullptr;
1663 
1664   inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1665 
1666 public:
1667   inline /* implicit */ fixed_box();
1668   inline /* implicit */ fixed_box(const fixed_box &obj);
1669   inline fixed_box &operator=(fixed_box obj);
1670   inline ~fixed_box();
1671   inline __isl_give isl_fixed_box *copy() const &;
1672   inline __isl_give isl_fixed_box *copy() && = delete;
1673   inline __isl_keep isl_fixed_box *get() const;
1674   inline __isl_give isl_fixed_box *release();
1675   inline bool is_null() const;
1676   inline isl::checked::ctx ctx() const;
1677 
1678   inline boolean is_valid() const;
1679   inline isl::checked::multi_aff offset() const;
1680   inline isl::checked::multi_aff get_offset() const;
1681   inline isl::checked::multi_val size() const;
1682   inline isl::checked::multi_val get_size() const;
1683   inline isl::checked::space space() const;
1684   inline isl::checked::space get_space() const;
1685 };
1686 
1687 // declarations for isl::id
1688 inline id manage(__isl_take isl_id *ptr);
1689 inline id manage_copy(__isl_keep isl_id *ptr);
1690 
1691 class id {
1692   friend inline id manage(__isl_take isl_id *ptr);
1693   friend inline id manage_copy(__isl_keep isl_id *ptr);
1694 
1695 protected:
1696   isl_id *ptr = nullptr;
1697 
1698   inline explicit id(__isl_take isl_id *ptr);
1699 
1700 public:
1701   inline /* implicit */ id();
1702   inline /* implicit */ id(const id &obj);
1703   inline explicit id(isl::checked::ctx ctx, const std::string &str);
1704   inline id &operator=(id obj);
1705   inline ~id();
1706   inline __isl_give isl_id *copy() const &;
1707   inline __isl_give isl_id *copy() && = delete;
1708   inline __isl_keep isl_id *get() const;
1709   inline __isl_give isl_id *release();
1710   inline bool is_null() const;
1711   inline isl::checked::ctx ctx() const;
1712 
1713   inline std::string name() const;
1714   inline std::string get_name() const;
1715   inline isl::checked::id_list to_list() const;
1716 };
1717 
1718 // declarations for isl::id_list
1719 inline id_list manage(__isl_take isl_id_list *ptr);
1720 inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1721 
1722 class id_list {
1723   friend inline id_list manage(__isl_take isl_id_list *ptr);
1724   friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1725 
1726 protected:
1727   isl_id_list *ptr = nullptr;
1728 
1729   inline explicit id_list(__isl_take isl_id_list *ptr);
1730 
1731 public:
1732   inline /* implicit */ id_list();
1733   inline /* implicit */ id_list(const id_list &obj);
1734   inline explicit id_list(isl::checked::ctx ctx, int n);
1735   inline explicit id_list(isl::checked::id el);
1736   inline id_list &operator=(id_list obj);
1737   inline ~id_list();
1738   inline __isl_give isl_id_list *copy() const &;
1739   inline __isl_give isl_id_list *copy() && = delete;
1740   inline __isl_keep isl_id_list *get() const;
1741   inline __isl_give isl_id_list *release();
1742   inline bool is_null() const;
1743   inline isl::checked::ctx ctx() const;
1744 
1745   inline isl::checked::id_list add(isl::checked::id el) const;
1746   inline isl::checked::id_list add(const std::string &el) const;
1747   inline isl::checked::id at(int index) const;
1748   inline isl::checked::id get_at(int index) const;
1749   inline isl::checked::id_list clear() const;
1750   inline isl::checked::id_list concat(isl::checked::id_list list2) const;
1751   inline isl::checked::id_list drop(unsigned int first, unsigned int n) const;
1752   inline stat foreach(const std::function<stat(isl::checked::id)> &fn) const;
1753   inline isl::checked::id_list insert(unsigned int pos, isl::checked::id el) const;
1754   inline isl::checked::id_list insert(unsigned int pos, const std::string &el) const;
1755   inline class size size() const;
1756 };
1757 
1758 // declarations for isl::map
1759 inline map manage(__isl_take isl_map *ptr);
1760 inline map manage_copy(__isl_keep isl_map *ptr);
1761 
1762 class map {
1763   friend inline map manage(__isl_take isl_map *ptr);
1764   friend inline map manage_copy(__isl_keep isl_map *ptr);
1765 
1766 protected:
1767   isl_map *ptr = nullptr;
1768 
1769   inline explicit map(__isl_take isl_map *ptr);
1770 
1771 public:
1772   inline /* implicit */ map();
1773   inline /* implicit */ map(const map &obj);
1774   inline /* implicit */ map(isl::checked::basic_map bmap);
1775   inline explicit map(isl::checked::ctx ctx, const std::string &str);
1776   inline map &operator=(map obj);
1777   inline ~map();
1778   inline __isl_give isl_map *copy() const &;
1779   inline __isl_give isl_map *copy() && = delete;
1780   inline __isl_keep isl_map *get() const;
1781   inline __isl_give isl_map *release();
1782   inline bool is_null() const;
1783   inline isl::checked::ctx ctx() const;
1784 
1785   inline isl::checked::basic_map affine_hull() const;
1786   inline isl::checked::map apply_domain(isl::checked::map map2) const;
1787   inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1788   inline isl::checked::map apply_domain(const isl::checked::basic_map &map2) const;
1789   inline isl::checked::map apply_range(isl::checked::map map2) const;
1790   inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1791   inline isl::checked::map apply_range(const isl::checked::basic_map &map2) const;
1792   inline isl::checked::map as_map() const;
1793   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1794   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1795   inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
1796   inline isl::checked::set bind_domain(isl::checked::multi_id tuple) const;
1797   inline isl::checked::set bind_range(isl::checked::multi_id tuple) const;
1798   inline isl::checked::map coalesce() const;
1799   inline isl::checked::map complement() const;
1800   inline isl::checked::union_map compute_divs() const;
1801   inline isl::checked::map curry() const;
1802   inline isl::checked::set deltas() const;
1803   inline isl::checked::map detect_equalities() const;
1804   inline isl::checked::set domain() const;
1805   inline isl::checked::map domain_factor_domain() const;
1806   inline isl::checked::map domain_factor_range() const;
1807   inline isl::checked::union_map domain_map() const;
1808   inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1809   inline isl::checked::map domain_product(isl::checked::map map2) const;
1810   inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1811   inline isl::checked::map domain_product(const isl::checked::basic_map &map2) const;
1812   inline isl::checked::id domain_tuple_id() const;
1813   inline isl::checked::id get_domain_tuple_id() const;
1814   static inline isl::checked::map empty(isl::checked::space space);
1815   inline isl::checked::map eq_at(isl::checked::multi_pw_aff mpa) const;
1816   inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1817   inline isl::checked::map eq_at(const isl::checked::aff &mpa) const;
1818   inline isl::checked::map eq_at(const isl::checked::multi_aff &mpa) const;
1819   inline isl::checked::map eq_at(const isl::checked::pw_aff &mpa) const;
1820   inline isl::checked::map eq_at(const isl::checked::pw_multi_aff &mpa) const;
1821   inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1822   inline isl::checked::map extract_map(const isl::checked::space &space) const;
1823   inline isl::checked::map factor_domain() const;
1824   inline isl::checked::map factor_range() const;
1825   inline isl::checked::union_map fixed_power(const isl::checked::val &exp) const;
1826   inline isl::checked::union_map fixed_power(long exp) const;
1827   inline isl::checked::map flatten() const;
1828   inline isl::checked::map flatten_domain() const;
1829   inline isl::checked::map flatten_range() const;
1830   inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1831   inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1832   inline isl::checked::map gist(isl::checked::map context) const;
1833   inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1834   inline isl::checked::map gist(const isl::checked::basic_map &context) const;
1835   inline isl::checked::map gist_domain(isl::checked::set context) const;
1836   inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1837   inline isl::checked::map gist_domain(const isl::checked::basic_set &context) const;
1838   inline isl::checked::map gist_domain(const isl::checked::point &context) const;
1839   inline isl::checked::union_map gist_params(const isl::checked::set &set) const;
1840   inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1841   inline boolean has_domain_tuple_id() const;
1842   inline boolean has_range_tuple_id() const;
1843   inline isl::checked::map intersect(isl::checked::map map2) const;
1844   inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1845   inline isl::checked::map intersect(const isl::checked::basic_map &map2) const;
1846   inline isl::checked::map intersect_domain(isl::checked::set set) const;
1847   inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1848   inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1849   inline isl::checked::map intersect_domain(const isl::checked::basic_set &set) const;
1850   inline isl::checked::map intersect_domain(const isl::checked::point &set) const;
1851   inline isl::checked::map intersect_domain_factor_domain(isl::checked::map factor) const;
1852   inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
1853   inline isl::checked::map intersect_domain_factor_domain(const isl::checked::basic_map &factor) const;
1854   inline isl::checked::map intersect_domain_factor_range(isl::checked::map factor) const;
1855   inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
1856   inline isl::checked::map intersect_domain_factor_range(const isl::checked::basic_map &factor) const;
1857   inline isl::checked::map intersect_params(isl::checked::set params) const;
1858   inline isl::checked::map intersect_range(isl::checked::set set) const;
1859   inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
1860   inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
1861   inline isl::checked::map intersect_range(const isl::checked::basic_set &set) const;
1862   inline isl::checked::map intersect_range(const isl::checked::point &set) const;
1863   inline isl::checked::map intersect_range_factor_domain(isl::checked::map factor) const;
1864   inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
1865   inline isl::checked::map intersect_range_factor_domain(const isl::checked::basic_map &factor) const;
1866   inline isl::checked::map intersect_range_factor_range(isl::checked::map factor) const;
1867   inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
1868   inline isl::checked::map intersect_range_factor_range(const isl::checked::basic_map &factor) const;
1869   inline boolean is_bijective() const;
1870   inline boolean is_disjoint(const isl::checked::map &map2) const;
1871   inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
1872   inline boolean is_disjoint(const isl::checked::basic_map &map2) const;
1873   inline boolean is_empty() const;
1874   inline boolean is_equal(const isl::checked::map &map2) const;
1875   inline boolean is_equal(const isl::checked::union_map &umap2) const;
1876   inline boolean is_equal(const isl::checked::basic_map &map2) const;
1877   inline boolean is_injective() const;
1878   inline boolean is_single_valued() const;
1879   inline boolean is_strict_subset(const isl::checked::map &map2) const;
1880   inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
1881   inline boolean is_strict_subset(const isl::checked::basic_map &map2) const;
1882   inline boolean is_subset(const isl::checked::map &map2) const;
1883   inline boolean is_subset(const isl::checked::union_map &umap2) const;
1884   inline boolean is_subset(const isl::checked::basic_map &map2) const;
1885   inline boolean isa_map() const;
1886   inline isl::checked::map lex_ge_at(isl::checked::multi_pw_aff mpa) const;
1887   inline isl::checked::map lex_gt_at(isl::checked::multi_pw_aff mpa) const;
1888   inline isl::checked::map lex_le_at(isl::checked::multi_pw_aff mpa) const;
1889   inline isl::checked::map lex_lt_at(isl::checked::multi_pw_aff mpa) const;
1890   inline isl::checked::map lexmax() const;
1891   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1892   inline isl::checked::map lexmin() const;
1893   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1894   inline isl::checked::map lower_bound(isl::checked::multi_pw_aff lower) const;
1895   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1896   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1897   inline isl::checked::basic_map polyhedral_hull() const;
1898   inline isl::checked::map preimage_domain(isl::checked::multi_aff ma) const;
1899   inline isl::checked::map preimage_domain(isl::checked::multi_pw_aff mpa) const;
1900   inline isl::checked::map preimage_domain(isl::checked::pw_multi_aff pma) const;
1901   inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
1902   inline isl::checked::map preimage_range(isl::checked::multi_aff ma) const;
1903   inline isl::checked::map preimage_range(isl::checked::pw_multi_aff pma) const;
1904   inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
1905   inline isl::checked::map product(isl::checked::map map2) const;
1906   inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
1907   inline isl::checked::map product(const isl::checked::basic_map &map2) const;
1908   inline isl::checked::map project_out_all_params() const;
1909   inline isl::checked::set range() const;
1910   inline isl::checked::map range_factor_domain() const;
1911   inline isl::checked::map range_factor_range() const;
1912   inline isl::checked::union_map range_map() const;
1913   inline isl::checked::map range_product(isl::checked::map map2) const;
1914   inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
1915   inline isl::checked::map range_product(const isl::checked::basic_map &map2) const;
1916   inline isl::checked::map range_reverse() const;
1917   inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
1918   inline isl::checked::fixed_box get_range_simple_fixed_box_hull() const;
1919   inline isl::checked::id range_tuple_id() const;
1920   inline isl::checked::id get_range_tuple_id() const;
1921   inline isl::checked::map reverse() const;
1922   inline isl::checked::basic_map sample() const;
1923   inline isl::checked::map set_domain_tuple(isl::checked::id id) const;
1924   inline isl::checked::map set_domain_tuple(const std::string &id) const;
1925   inline isl::checked::map set_range_tuple(isl::checked::id id) const;
1926   inline isl::checked::map set_range_tuple(const std::string &id) const;
1927   inline isl::checked::space space() const;
1928   inline isl::checked::space get_space() const;
1929   inline isl::checked::map subtract(isl::checked::map map2) const;
1930   inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
1931   inline isl::checked::map subtract(const isl::checked::basic_map &map2) const;
1932   inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
1933   inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
1934   inline isl::checked::union_map to_union_map() const;
1935   inline isl::checked::map uncurry() const;
1936   inline isl::checked::map unite(isl::checked::map map2) const;
1937   inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
1938   inline isl::checked::map unite(const isl::checked::basic_map &map2) const;
1939   static inline isl::checked::map universe(isl::checked::space space);
1940   inline isl::checked::basic_map unshifted_simple_hull() const;
1941   inline isl::checked::map upper_bound(isl::checked::multi_pw_aff upper) const;
1942   inline isl::checked::set wrap() const;
1943   inline isl::checked::map zip() const;
1944 };
1945 
1946 // declarations for isl::multi_aff
1947 inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1948 inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1949 
1950 class multi_aff {
1951   friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1952   friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1953 
1954 protected:
1955   isl_multi_aff *ptr = nullptr;
1956 
1957   inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
1958 
1959 public:
1960   inline /* implicit */ multi_aff();
1961   inline /* implicit */ multi_aff(const multi_aff &obj);
1962   inline /* implicit */ multi_aff(isl::checked::aff aff);
1963   inline explicit multi_aff(isl::checked::space space, isl::checked::aff_list list);
1964   inline explicit multi_aff(isl::checked::ctx ctx, const std::string &str);
1965   inline multi_aff &operator=(multi_aff obj);
1966   inline ~multi_aff();
1967   inline __isl_give isl_multi_aff *copy() const &;
1968   inline __isl_give isl_multi_aff *copy() && = delete;
1969   inline __isl_keep isl_multi_aff *get() const;
1970   inline __isl_give isl_multi_aff *release();
1971   inline bool is_null() const;
1972   inline isl::checked::ctx ctx() const;
1973 
1974   inline isl::checked::multi_aff add(isl::checked::multi_aff multi2) const;
1975   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
1976   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
1977   inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
1978   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
1979   inline isl::checked::multi_aff add(const isl::checked::aff &multi2) const;
1980   inline isl::checked::multi_aff add_constant(isl::checked::multi_val mv) const;
1981   inline isl::checked::multi_aff add_constant(isl::checked::val v) const;
1982   inline isl::checked::multi_aff add_constant(long v) const;
1983   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
1984   inline isl::checked::map as_map() const;
1985   inline isl::checked::multi_aff as_multi_aff() const;
1986   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1987   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1988   inline isl::checked::set as_set() const;
1989   inline isl::checked::union_map as_union_map() const;
1990   inline isl::checked::aff at(int pos) const;
1991   inline isl::checked::aff get_at(int pos) const;
1992   inline isl::checked::basic_set bind(isl::checked::multi_id tuple) const;
1993   inline isl::checked::multi_aff bind_domain(isl::checked::multi_id tuple) const;
1994   inline isl::checked::multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
1995   inline isl::checked::pw_multi_aff coalesce() const;
1996   inline isl::checked::multi_val constant_multi_val() const;
1997   inline isl::checked::multi_val get_constant_multi_val() const;
1998   inline isl::checked::set domain() const;
1999   static inline isl::checked::multi_aff domain_map(isl::checked::space space);
2000   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2001   inline isl::checked::multi_aff flat_range_product(isl::checked::multi_aff multi2) const;
2002   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2003   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2004   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2005   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2006   inline isl::checked::multi_aff flat_range_product(const isl::checked::aff &multi2) const;
2007   inline isl::checked::multi_aff floor() const;
2008   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2009   inline isl::checked::multi_aff gist(isl::checked::set context) const;
2010   inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
2011   inline isl::checked::multi_aff gist(const isl::checked::basic_set &context) const;
2012   inline isl::checked::multi_aff gist(const isl::checked::point &context) const;
2013   inline boolean has_range_tuple_id() const;
2014   inline isl::checked::multi_aff identity() const;
2015   static inline isl::checked::multi_aff identity_on_domain(isl::checked::space space);
2016   inline isl::checked::multi_aff insert_domain(isl::checked::space domain) const;
2017   inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::set &set) const;
2018   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
2019   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
2020   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2021   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2022   inline isl::checked::pw_multi_aff intersect_params(const isl::checked::set &set) const;
2023   inline boolean involves_locals() const;
2024   inline boolean involves_nan() const;
2025   inline boolean involves_param(const isl::checked::id &id) const;
2026   inline boolean involves_param(const std::string &id) const;
2027   inline boolean involves_param(const isl::checked::id_list &list) const;
2028   inline boolean isa_multi_aff() const;
2029   inline boolean isa_pw_multi_aff() const;
2030   inline isl::checked::aff_list list() const;
2031   inline isl::checked::aff_list get_list() const;
2032   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2033   inline isl::checked::multi_val max_multi_val() const;
2034   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2035   inline isl::checked::multi_val min_multi_val() const;
2036   static inline isl::checked::multi_aff multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv);
2037   inline class size n_piece() const;
2038   inline isl::checked::multi_aff neg() const;
2039   inline boolean plain_is_empty() const;
2040   inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2041   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2042   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2043   inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2044   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
2045   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2046   inline isl::checked::multi_aff product(isl::checked::multi_aff multi2) const;
2047   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2048   inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2049   inline isl::checked::multi_aff product(const isl::checked::aff &multi2) const;
2050   inline isl::checked::multi_aff pullback(isl::checked::multi_aff ma2) const;
2051   inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
2052   inline isl::checked::pw_multi_aff pullback(const isl::checked::pw_multi_aff &pma2) const;
2053   inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
2054   inline isl::checked::multi_aff pullback(const isl::checked::aff &ma2) const;
2055   inline isl::checked::pw_multi_aff range_factor_domain() const;
2056   inline isl::checked::pw_multi_aff range_factor_range() const;
2057   static inline isl::checked::multi_aff range_map(isl::checked::space space);
2058   inline isl::checked::multi_aff range_product(isl::checked::multi_aff multi2) const;
2059   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2060   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2061   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2062   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2063   inline isl::checked::multi_aff range_product(const isl::checked::aff &multi2) const;
2064   inline isl::checked::id range_tuple_id() const;
2065   inline isl::checked::id get_range_tuple_id() const;
2066   inline isl::checked::multi_aff reset_range_tuple_id() const;
2067   inline isl::checked::multi_aff scale(isl::checked::multi_val mv) const;
2068   inline isl::checked::multi_aff scale(isl::checked::val v) const;
2069   inline isl::checked::multi_aff scale(long v) const;
2070   inline isl::checked::multi_aff scale_down(isl::checked::multi_val mv) const;
2071   inline isl::checked::multi_aff scale_down(isl::checked::val v) const;
2072   inline isl::checked::multi_aff scale_down(long v) const;
2073   inline isl::checked::multi_aff set_at(int pos, isl::checked::aff el) const;
2074   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2075   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2076   inline isl::checked::multi_aff set_range_tuple(isl::checked::id id) const;
2077   inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
2078   inline class size size() const;
2079   inline isl::checked::space space() const;
2080   inline isl::checked::space get_space() const;
2081   inline isl::checked::multi_aff sub(isl::checked::multi_aff multi2) const;
2082   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2083   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2084   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2085   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2086   inline isl::checked::multi_aff sub(const isl::checked::aff &multi2) const;
2087   inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::set &set) const;
2088   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
2089   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
2090   inline isl::checked::pw_multi_aff_list to_list() const;
2091   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2092   inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
2093   inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
2094   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2095   inline isl::checked::multi_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
2096   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2097   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2098   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2099   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2100   static inline isl::checked::multi_aff zero(isl::checked::space space);
2101 };
2102 
2103 // declarations for isl::multi_id
2104 inline multi_id manage(__isl_take isl_multi_id *ptr);
2105 inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2106 
2107 class multi_id {
2108   friend inline multi_id manage(__isl_take isl_multi_id *ptr);
2109   friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2110 
2111 protected:
2112   isl_multi_id *ptr = nullptr;
2113 
2114   inline explicit multi_id(__isl_take isl_multi_id *ptr);
2115 
2116 public:
2117   inline /* implicit */ multi_id();
2118   inline /* implicit */ multi_id(const multi_id &obj);
2119   inline explicit multi_id(isl::checked::space space, isl::checked::id_list list);
2120   inline explicit multi_id(isl::checked::ctx ctx, const std::string &str);
2121   inline multi_id &operator=(multi_id obj);
2122   inline ~multi_id();
2123   inline __isl_give isl_multi_id *copy() const &;
2124   inline __isl_give isl_multi_id *copy() && = delete;
2125   inline __isl_keep isl_multi_id *get() const;
2126   inline __isl_give isl_multi_id *release();
2127   inline bool is_null() const;
2128   inline isl::checked::ctx ctx() const;
2129 
2130   inline isl::checked::id at(int pos) const;
2131   inline isl::checked::id get_at(int pos) const;
2132   inline isl::checked::multi_id flat_range_product(isl::checked::multi_id multi2) const;
2133   inline isl::checked::id_list list() const;
2134   inline isl::checked::id_list get_list() const;
2135   inline boolean plain_is_equal(const isl::checked::multi_id &multi2) const;
2136   inline isl::checked::multi_id range_product(isl::checked::multi_id multi2) const;
2137   inline isl::checked::multi_id set_at(int pos, isl::checked::id el) const;
2138   inline isl::checked::multi_id set_at(int pos, const std::string &el) const;
2139   inline class size size() const;
2140   inline isl::checked::space space() const;
2141   inline isl::checked::space get_space() const;
2142 };
2143 
2144 // declarations for isl::multi_pw_aff
2145 inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2146 inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2147 
2148 class multi_pw_aff {
2149   friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2150   friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2151 
2152 protected:
2153   isl_multi_pw_aff *ptr = nullptr;
2154 
2155   inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2156 
2157 public:
2158   inline /* implicit */ multi_pw_aff();
2159   inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
2160   inline /* implicit */ multi_pw_aff(isl::checked::aff aff);
2161   inline /* implicit */ multi_pw_aff(isl::checked::multi_aff ma);
2162   inline /* implicit */ multi_pw_aff(isl::checked::pw_aff pa);
2163   inline explicit multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list);
2164   inline /* implicit */ multi_pw_aff(isl::checked::pw_multi_aff pma);
2165   inline explicit multi_pw_aff(isl::checked::ctx ctx, const std::string &str);
2166   inline multi_pw_aff &operator=(multi_pw_aff obj);
2167   inline ~multi_pw_aff();
2168   inline __isl_give isl_multi_pw_aff *copy() const &;
2169   inline __isl_give isl_multi_pw_aff *copy() && = delete;
2170   inline __isl_keep isl_multi_pw_aff *get() const;
2171   inline __isl_give isl_multi_pw_aff *release();
2172   inline bool is_null() const;
2173   inline isl::checked::ctx ctx() const;
2174 
2175   inline isl::checked::multi_pw_aff add(isl::checked::multi_pw_aff multi2) const;
2176   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2177   inline isl::checked::multi_pw_aff add(const isl::checked::aff &multi2) const;
2178   inline isl::checked::multi_pw_aff add(const isl::checked::multi_aff &multi2) const;
2179   inline isl::checked::multi_pw_aff add(const isl::checked::pw_aff &multi2) const;
2180   inline isl::checked::multi_pw_aff add(const isl::checked::pw_multi_aff &multi2) const;
2181   inline isl::checked::multi_pw_aff add_constant(isl::checked::multi_val mv) const;
2182   inline isl::checked::multi_pw_aff add_constant(isl::checked::val v) const;
2183   inline isl::checked::multi_pw_aff add_constant(long v) const;
2184   inline isl::checked::map as_map() const;
2185   inline isl::checked::set as_set() const;
2186   inline isl::checked::pw_aff at(int pos) const;
2187   inline isl::checked::pw_aff get_at(int pos) const;
2188   inline isl::checked::set bind(isl::checked::multi_id tuple) const;
2189   inline isl::checked::multi_pw_aff bind_domain(isl::checked::multi_id tuple) const;
2190   inline isl::checked::multi_pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2191   inline isl::checked::multi_pw_aff coalesce() const;
2192   inline isl::checked::set domain() const;
2193   inline isl::checked::multi_pw_aff flat_range_product(isl::checked::multi_pw_aff multi2) const;
2194   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2195   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::aff &multi2) const;
2196   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
2197   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_aff &multi2) const;
2198   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_multi_aff &multi2) const;
2199   inline isl::checked::multi_pw_aff gist(isl::checked::set set) const;
2200   inline isl::checked::multi_union_pw_aff gist(const isl::checked::union_set &context) const;
2201   inline isl::checked::multi_pw_aff gist(const isl::checked::basic_set &set) const;
2202   inline isl::checked::multi_pw_aff gist(const isl::checked::point &set) const;
2203   inline boolean has_range_tuple_id() const;
2204   inline isl::checked::multi_pw_aff identity() const;
2205   static inline isl::checked::multi_pw_aff identity_on_domain(isl::checked::space space);
2206   inline isl::checked::multi_pw_aff insert_domain(isl::checked::space domain) const;
2207   inline isl::checked::multi_pw_aff intersect_domain(isl::checked::set domain) const;
2208   inline isl::checked::multi_union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2209   inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::basic_set &domain) const;
2210   inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::point &domain) const;
2211   inline isl::checked::multi_pw_aff intersect_params(isl::checked::set set) const;
2212   inline boolean involves_nan() const;
2213   inline boolean involves_param(const isl::checked::id &id) const;
2214   inline boolean involves_param(const std::string &id) const;
2215   inline boolean involves_param(const isl::checked::id_list &list) const;
2216   inline isl::checked::pw_aff_list list() const;
2217   inline isl::checked::pw_aff_list get_list() const;
2218   inline isl::checked::multi_pw_aff max(isl::checked::multi_pw_aff multi2) const;
2219   inline isl::checked::multi_val max_multi_val() const;
2220   inline isl::checked::multi_pw_aff min(isl::checked::multi_pw_aff multi2) const;
2221   inline isl::checked::multi_val min_multi_val() const;
2222   inline isl::checked::multi_pw_aff neg() const;
2223   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2224   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2225   inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2226   inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2227   inline boolean plain_is_equal(const isl::checked::pw_aff &multi2) const;
2228   inline boolean plain_is_equal(const isl::checked::pw_multi_aff &multi2) const;
2229   inline isl::checked::multi_pw_aff product(isl::checked::multi_pw_aff multi2) const;
2230   inline isl::checked::multi_pw_aff pullback(isl::checked::multi_aff ma) const;
2231   inline isl::checked::multi_pw_aff pullback(isl::checked::multi_pw_aff mpa2) const;
2232   inline isl::checked::multi_pw_aff pullback(isl::checked::pw_multi_aff pma) const;
2233   inline isl::checked::multi_union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2234   inline isl::checked::multi_pw_aff range_product(isl::checked::multi_pw_aff multi2) const;
2235   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2236   inline isl::checked::multi_pw_aff range_product(const isl::checked::aff &multi2) const;
2237   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_aff &multi2) const;
2238   inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_aff &multi2) const;
2239   inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_multi_aff &multi2) const;
2240   inline isl::checked::id range_tuple_id() const;
2241   inline isl::checked::id get_range_tuple_id() const;
2242   inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2243   inline isl::checked::multi_pw_aff scale(isl::checked::multi_val mv) const;
2244   inline isl::checked::multi_pw_aff scale(isl::checked::val v) const;
2245   inline isl::checked::multi_pw_aff scale(long v) const;
2246   inline isl::checked::multi_pw_aff scale_down(isl::checked::multi_val mv) const;
2247   inline isl::checked::multi_pw_aff scale_down(isl::checked::val v) const;
2248   inline isl::checked::multi_pw_aff scale_down(long v) const;
2249   inline isl::checked::multi_pw_aff set_at(int pos, isl::checked::pw_aff el) const;
2250   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2251   inline isl::checked::multi_pw_aff set_range_tuple(isl::checked::id id) const;
2252   inline isl::checked::multi_pw_aff set_range_tuple(const std::string &id) const;
2253   inline class size size() const;
2254   inline isl::checked::space space() const;
2255   inline isl::checked::space get_space() const;
2256   inline isl::checked::multi_pw_aff sub(isl::checked::multi_pw_aff multi2) const;
2257   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2258   inline isl::checked::multi_pw_aff sub(const isl::checked::aff &multi2) const;
2259   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_aff &multi2) const;
2260   inline isl::checked::multi_pw_aff sub(const isl::checked::pw_aff &multi2) const;
2261   inline isl::checked::multi_pw_aff sub(const isl::checked::pw_multi_aff &multi2) const;
2262   inline isl::checked::multi_pw_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
2263   inline isl::checked::multi_pw_aff union_add(isl::checked::multi_pw_aff mpa2) const;
2264   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2265   inline isl::checked::multi_pw_aff union_add(const isl::checked::aff &mpa2) const;
2266   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_aff &mpa2) const;
2267   inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_aff &mpa2) const;
2268   inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_multi_aff &mpa2) const;
2269   static inline isl::checked::multi_pw_aff zero(isl::checked::space space);
2270 };
2271 
2272 // declarations for isl::multi_union_pw_aff
2273 inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2274 inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2275 
2276 class multi_union_pw_aff {
2277   friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2278   friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2279 
2280 protected:
2281   isl_multi_union_pw_aff *ptr = nullptr;
2282 
2283   inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
2284 
2285 public:
2286   inline /* implicit */ multi_union_pw_aff();
2287   inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
2288   inline /* implicit */ multi_union_pw_aff(isl::checked::multi_pw_aff mpa);
2289   inline /* implicit */ multi_union_pw_aff(isl::checked::union_pw_aff upa);
2290   inline explicit multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list);
2291   inline explicit multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str);
2292   inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
2293   inline ~multi_union_pw_aff();
2294   inline __isl_give isl_multi_union_pw_aff *copy() const &;
2295   inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
2296   inline __isl_keep isl_multi_union_pw_aff *get() const;
2297   inline __isl_give isl_multi_union_pw_aff *release();
2298   inline bool is_null() const;
2299   inline isl::checked::ctx ctx() const;
2300 
2301   inline isl::checked::multi_union_pw_aff add(isl::checked::multi_union_pw_aff multi2) const;
2302   inline isl::checked::union_pw_aff at(int pos) const;
2303   inline isl::checked::union_pw_aff get_at(int pos) const;
2304   inline isl::checked::union_set bind(isl::checked::multi_id tuple) const;
2305   inline isl::checked::multi_union_pw_aff coalesce() const;
2306   inline isl::checked::union_set domain() const;
2307   inline isl::checked::multi_union_pw_aff flat_range_product(isl::checked::multi_union_pw_aff multi2) const;
2308   inline isl::checked::multi_union_pw_aff gist(isl::checked::union_set context) const;
2309   inline boolean has_range_tuple_id() const;
2310   inline isl::checked::multi_union_pw_aff intersect_domain(isl::checked::union_set uset) const;
2311   inline isl::checked::multi_union_pw_aff intersect_params(isl::checked::set params) const;
2312   inline boolean involves_nan() const;
2313   inline isl::checked::union_pw_aff_list list() const;
2314   inline isl::checked::union_pw_aff_list get_list() const;
2315   inline isl::checked::multi_union_pw_aff neg() const;
2316   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2317   inline isl::checked::multi_union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
2318   inline isl::checked::multi_union_pw_aff range_product(isl::checked::multi_union_pw_aff multi2) const;
2319   inline isl::checked::id range_tuple_id() const;
2320   inline isl::checked::id get_range_tuple_id() const;
2321   inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
2322   inline isl::checked::multi_union_pw_aff scale(isl::checked::multi_val mv) const;
2323   inline isl::checked::multi_union_pw_aff scale(isl::checked::val v) const;
2324   inline isl::checked::multi_union_pw_aff scale(long v) const;
2325   inline isl::checked::multi_union_pw_aff scale_down(isl::checked::multi_val mv) const;
2326   inline isl::checked::multi_union_pw_aff scale_down(isl::checked::val v) const;
2327   inline isl::checked::multi_union_pw_aff scale_down(long v) const;
2328   inline isl::checked::multi_union_pw_aff set_at(int pos, isl::checked::union_pw_aff el) const;
2329   inline isl::checked::multi_union_pw_aff set_range_tuple(isl::checked::id id) const;
2330   inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
2331   inline class size size() const;
2332   inline isl::checked::space space() const;
2333   inline isl::checked::space get_space() const;
2334   inline isl::checked::multi_union_pw_aff sub(isl::checked::multi_union_pw_aff multi2) const;
2335   inline isl::checked::multi_union_pw_aff union_add(isl::checked::multi_union_pw_aff mupa2) const;
2336   static inline isl::checked::multi_union_pw_aff zero(isl::checked::space space);
2337 };
2338 
2339 // declarations for isl::multi_val
2340 inline multi_val manage(__isl_take isl_multi_val *ptr);
2341 inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2342 
2343 class multi_val {
2344   friend inline multi_val manage(__isl_take isl_multi_val *ptr);
2345   friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2346 
2347 protected:
2348   isl_multi_val *ptr = nullptr;
2349 
2350   inline explicit multi_val(__isl_take isl_multi_val *ptr);
2351 
2352 public:
2353   inline /* implicit */ multi_val();
2354   inline /* implicit */ multi_val(const multi_val &obj);
2355   inline explicit multi_val(isl::checked::space space, isl::checked::val_list list);
2356   inline explicit multi_val(isl::checked::ctx ctx, const std::string &str);
2357   inline multi_val &operator=(multi_val obj);
2358   inline ~multi_val();
2359   inline __isl_give isl_multi_val *copy() const &;
2360   inline __isl_give isl_multi_val *copy() && = delete;
2361   inline __isl_keep isl_multi_val *get() const;
2362   inline __isl_give isl_multi_val *release();
2363   inline bool is_null() const;
2364   inline isl::checked::ctx ctx() const;
2365 
2366   inline isl::checked::multi_val add(isl::checked::multi_val multi2) const;
2367   inline isl::checked::multi_val add(isl::checked::val v) const;
2368   inline isl::checked::multi_val add(long v) const;
2369   inline isl::checked::val at(int pos) const;
2370   inline isl::checked::val get_at(int pos) const;
2371   inline isl::checked::multi_val flat_range_product(isl::checked::multi_val multi2) const;
2372   inline boolean has_range_tuple_id() const;
2373   inline boolean involves_nan() const;
2374   inline isl::checked::val_list list() const;
2375   inline isl::checked::val_list get_list() const;
2376   inline isl::checked::multi_val max(isl::checked::multi_val multi2) const;
2377   inline isl::checked::multi_val min(isl::checked::multi_val multi2) const;
2378   inline isl::checked::multi_val neg() const;
2379   inline boolean plain_is_equal(const isl::checked::multi_val &multi2) const;
2380   inline isl::checked::multi_val product(isl::checked::multi_val multi2) const;
2381   inline isl::checked::multi_val range_product(isl::checked::multi_val 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_val reset_range_tuple_id() const;
2385   inline isl::checked::multi_val scale(isl::checked::multi_val mv) const;
2386   inline isl::checked::multi_val scale(isl::checked::val v) const;
2387   inline isl::checked::multi_val scale(long v) const;
2388   inline isl::checked::multi_val scale_down(isl::checked::multi_val mv) const;
2389   inline isl::checked::multi_val scale_down(isl::checked::val v) const;
2390   inline isl::checked::multi_val scale_down(long v) const;
2391   inline isl::checked::multi_val set_at(int pos, isl::checked::val el) const;
2392   inline isl::checked::multi_val set_at(int pos, long el) const;
2393   inline isl::checked::multi_val set_range_tuple(isl::checked::id id) const;
2394   inline isl::checked::multi_val set_range_tuple(const std::string &id) const;
2395   inline class size size() const;
2396   inline isl::checked::space space() const;
2397   inline isl::checked::space get_space() const;
2398   inline isl::checked::multi_val sub(isl::checked::multi_val multi2) const;
2399   static inline isl::checked::multi_val zero(isl::checked::space space);
2400 };
2401 
2402 // declarations for isl::point
2403 inline point manage(__isl_take isl_point *ptr);
2404 inline point manage_copy(__isl_keep isl_point *ptr);
2405 
2406 class point {
2407   friend inline point manage(__isl_take isl_point *ptr);
2408   friend inline point manage_copy(__isl_keep isl_point *ptr);
2409 
2410 protected:
2411   isl_point *ptr = nullptr;
2412 
2413   inline explicit point(__isl_take isl_point *ptr);
2414 
2415 public:
2416   inline /* implicit */ point();
2417   inline /* implicit */ point(const point &obj);
2418   inline point &operator=(point obj);
2419   inline ~point();
2420   inline __isl_give isl_point *copy() const &;
2421   inline __isl_give isl_point *copy() && = delete;
2422   inline __isl_keep isl_point *get() const;
2423   inline __isl_give isl_point *release();
2424   inline bool is_null() const;
2425   inline isl::checked::ctx ctx() const;
2426 
2427   inline isl::checked::basic_set affine_hull() const;
2428   inline isl::checked::basic_set apply(const isl::checked::basic_map &bmap) const;
2429   inline isl::checked::set apply(const isl::checked::map &map) const;
2430   inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
2431   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2432   inline isl::checked::set as_set() const;
2433   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2434   inline isl::checked::set coalesce() const;
2435   inline isl::checked::set complement() const;
2436   inline isl::checked::union_set compute_divs() const;
2437   inline isl::checked::basic_set detect_equalities() const;
2438   inline isl::checked::val dim_max_val(int pos) const;
2439   inline isl::checked::val dim_min_val(int pos) const;
2440   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
2441   inline isl::checked::set extract_set(const isl::checked::space &space) const;
2442   inline isl::checked::basic_set flatten() const;
2443   inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
2444   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
2445   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
2446   inline isl::checked::basic_set gist(const isl::checked::basic_set &context) const;
2447   inline isl::checked::set gist(const isl::checked::set &context) const;
2448   inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
2449   inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
2450   inline isl::checked::map identity() const;
2451   inline isl::checked::pw_aff indicator_function() const;
2452   inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
2453   inline isl::checked::basic_set intersect(const isl::checked::basic_set &bset2) const;
2454   inline isl::checked::set intersect(const isl::checked::set &set2) const;
2455   inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
2456   inline isl::checked::basic_set intersect_params(const isl::checked::basic_set &bset2) const;
2457   inline isl::checked::set intersect_params(const isl::checked::set &params) const;
2458   inline boolean involves_locals() const;
2459   inline boolean is_disjoint(const isl::checked::set &set2) const;
2460   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
2461   inline boolean is_empty() const;
2462   inline boolean is_equal(const isl::checked::basic_set &bset2) const;
2463   inline boolean is_equal(const isl::checked::set &set2) const;
2464   inline boolean is_equal(const isl::checked::union_set &uset2) const;
2465   inline boolean is_singleton() const;
2466   inline boolean is_strict_subset(const isl::checked::set &set2) const;
2467   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
2468   inline boolean is_subset(const isl::checked::basic_set &bset2) const;
2469   inline boolean is_subset(const isl::checked::set &set2) const;
2470   inline boolean is_subset(const isl::checked::union_set &uset2) const;
2471   inline boolean is_wrapping() const;
2472   inline boolean isa_set() const;
2473   inline isl::checked::set lexmax() const;
2474   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
2475   inline isl::checked::set lexmin() const;
2476   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
2477   inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
2478   inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
2479   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
2480   inline isl::checked::val max_val(const isl::checked::aff &obj) const;
2481   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
2482   inline isl::checked::val min_val(const isl::checked::aff &obj) const;
2483   inline isl::checked::multi_val multi_val() const;
2484   inline isl::checked::multi_val get_multi_val() const;
2485   inline isl::checked::basic_set params() const;
2486   inline isl::checked::multi_val plain_multi_val_if_fixed() const;
2487   inline isl::checked::basic_set polyhedral_hull() const;
2488   inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
2489   inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
2490   inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
2491   inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
2492   inline isl::checked::set product(const isl::checked::set &set2) const;
2493   inline isl::checked::set project_out_all_params() const;
2494   inline isl::checked::set project_out_param(const isl::checked::id &id) const;
2495   inline isl::checked::set project_out_param(const std::string &id) const;
2496   inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
2497   inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
2498   inline isl::checked::basic_set sample() const;
2499   inline isl::checked::point sample_point() const;
2500   inline isl::checked::fixed_box simple_fixed_box_hull() const;
2501   inline isl::checked::space space() const;
2502   inline isl::checked::val stride(int pos) const;
2503   inline isl::checked::set subtract(const isl::checked::set &set2) const;
2504   inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
2505   inline isl::checked::union_set_list to_list() const;
2506   inline isl::checked::set to_set() const;
2507   inline isl::checked::union_set to_union_set() const;
2508   inline isl::checked::map translation() const;
2509   inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
2510   inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2511   inline isl::checked::set unite(const isl::checked::basic_set &bset2) const;
2512   inline isl::checked::set unite(const isl::checked::set &set2) const;
2513   inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
2514   inline isl::checked::basic_set unshifted_simple_hull() const;
2515   inline isl::checked::map unwrap() const;
2516   inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
2517   inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
2518 };
2519 
2520 // declarations for isl::pw_aff
2521 inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2522 inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2523 
2524 class pw_aff {
2525   friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2526   friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2527 
2528 protected:
2529   isl_pw_aff *ptr = nullptr;
2530 
2531   inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
2532 
2533 public:
2534   inline /* implicit */ pw_aff();
2535   inline /* implicit */ pw_aff(const pw_aff &obj);
2536   inline /* implicit */ pw_aff(isl::checked::aff aff);
2537   inline explicit pw_aff(isl::checked::ctx ctx, const std::string &str);
2538   inline pw_aff &operator=(pw_aff obj);
2539   inline ~pw_aff();
2540   inline __isl_give isl_pw_aff *copy() const &;
2541   inline __isl_give isl_pw_aff *copy() && = delete;
2542   inline __isl_keep isl_pw_aff *get() const;
2543   inline __isl_give isl_pw_aff *release();
2544   inline bool is_null() const;
2545   inline isl::checked::ctx ctx() const;
2546 
2547   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2548   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2549   inline isl::checked::pw_aff add(isl::checked::pw_aff pwaff2) const;
2550   inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2551   inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
2552   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2553   inline isl::checked::pw_aff add(const isl::checked::aff &pwaff2) const;
2554   inline isl::checked::pw_aff add_constant(isl::checked::val v) const;
2555   inline isl::checked::pw_aff add_constant(long v) const;
2556   inline isl::checked::pw_multi_aff add_constant(const isl::checked::multi_val &mv) const;
2557   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2558   inline isl::checked::aff as_aff() const;
2559   inline isl::checked::map as_map() const;
2560   inline isl::checked::multi_aff as_multi_aff() const;
2561   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2562   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2563   inline isl::checked::set as_set() const;
2564   inline isl::checked::union_map as_union_map() const;
2565   inline isl::checked::pw_aff at(int pos) const;
2566   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2567   inline isl::checked::set bind(isl::checked::id id) const;
2568   inline isl::checked::set bind(const std::string &id) const;
2569   inline isl::checked::pw_aff bind_domain(isl::checked::multi_id tuple) const;
2570   inline isl::checked::pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2571   inline isl::checked::pw_aff ceil() const;
2572   inline isl::checked::pw_aff coalesce() const;
2573   inline isl::checked::pw_aff cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const;
2574   inline isl::checked::pw_aff div(isl::checked::pw_aff pa2) const;
2575   inline isl::checked::set domain() const;
2576   inline isl::checked::set eq_set(isl::checked::pw_aff pwaff2) const;
2577   inline isl::checked::val eval(isl::checked::point pnt) const;
2578   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2579   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2580   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2581   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2582   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2583   inline isl::checked::pw_aff floor() const;
2584   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2585   inline isl::checked::set ge_set(isl::checked::pw_aff pwaff2) const;
2586   inline isl::checked::pw_aff gist(isl::checked::set context) const;
2587   inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
2588   inline isl::checked::pw_aff gist(const isl::checked::basic_set &context) const;
2589   inline isl::checked::pw_aff gist(const isl::checked::point &context) const;
2590   inline isl::checked::set gt_set(isl::checked::pw_aff pwaff2) const;
2591   inline boolean has_range_tuple_id() const;
2592   inline isl::checked::multi_pw_aff identity() const;
2593   inline isl::checked::pw_aff insert_domain(isl::checked::space domain) const;
2594   inline isl::checked::pw_aff intersect_domain(isl::checked::set set) const;
2595   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
2596   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2597   inline isl::checked::pw_aff intersect_domain(const isl::checked::basic_set &set) const;
2598   inline isl::checked::pw_aff intersect_domain(const isl::checked::point &set) const;
2599   inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2600   inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2601   inline isl::checked::pw_aff intersect_params(isl::checked::set set) const;
2602   inline boolean involves_locals() const;
2603   inline boolean involves_nan() const;
2604   inline boolean involves_param(const isl::checked::id &id) const;
2605   inline boolean involves_param(const std::string &id) const;
2606   inline boolean involves_param(const isl::checked::id_list &list) const;
2607   inline boolean isa_aff() const;
2608   inline boolean isa_multi_aff() const;
2609   inline boolean isa_pw_multi_aff() const;
2610   inline isl::checked::set le_set(isl::checked::pw_aff pwaff2) const;
2611   inline isl::checked::pw_aff_list list() const;
2612   inline isl::checked::set lt_set(isl::checked::pw_aff pwaff2) const;
2613   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2614   inline isl::checked::pw_aff max(isl::checked::pw_aff pwaff2) const;
2615   inline isl::checked::pw_aff max(const isl::checked::aff &pwaff2) const;
2616   inline isl::checked::multi_val max_multi_val() const;
2617   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2618   inline isl::checked::pw_aff min(isl::checked::pw_aff pwaff2) const;
2619   inline isl::checked::pw_aff min(const isl::checked::aff &pwaff2) const;
2620   inline isl::checked::multi_val min_multi_val() const;
2621   inline isl::checked::pw_aff mod(isl::checked::val mod) const;
2622   inline isl::checked::pw_aff mod(long mod) const;
2623   inline isl::checked::pw_aff mul(isl::checked::pw_aff pwaff2) const;
2624   inline class size n_piece() const;
2625   inline isl::checked::set ne_set(isl::checked::pw_aff pwaff2) const;
2626   inline isl::checked::pw_aff neg() const;
2627   static inline isl::checked::pw_aff param_on_domain(isl::checked::set domain, isl::checked::id id);
2628   inline boolean plain_is_empty() const;
2629   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2630   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2631   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
2632   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2633   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2634   inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2635   inline isl::checked::pw_aff pullback(isl::checked::multi_aff ma) const;
2636   inline isl::checked::pw_aff pullback(isl::checked::multi_pw_aff mpa) const;
2637   inline isl::checked::pw_aff pullback(isl::checked::pw_multi_aff pma) const;
2638   inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2639   inline isl::checked::pw_multi_aff range_factor_domain() const;
2640   inline isl::checked::pw_multi_aff range_factor_range() const;
2641   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2642   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2643   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2644   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2645   inline isl::checked::id range_tuple_id() const;
2646   inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2647   inline isl::checked::multi_pw_aff scale(const isl::checked::multi_val &mv) const;
2648   inline isl::checked::pw_aff scale(isl::checked::val v) const;
2649   inline isl::checked::pw_aff scale(long v) const;
2650   inline isl::checked::multi_pw_aff scale_down(const isl::checked::multi_val &mv) const;
2651   inline isl::checked::pw_aff scale_down(isl::checked::val f) const;
2652   inline isl::checked::pw_aff scale_down(long f) const;
2653   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2654   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2655   inline isl::checked::pw_multi_aff set_range_tuple(const isl::checked::id &id) const;
2656   inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
2657   inline class size size() const;
2658   inline isl::checked::space space() const;
2659   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2660   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2661   inline isl::checked::pw_aff sub(isl::checked::pw_aff pwaff2) const;
2662   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2663   inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
2664   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2665   inline isl::checked::pw_aff sub(const isl::checked::aff &pwaff2) const;
2666   inline isl::checked::pw_aff subtract_domain(isl::checked::set set) const;
2667   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
2668   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
2669   inline isl::checked::pw_aff subtract_domain(const isl::checked::basic_set &set) const;
2670   inline isl::checked::pw_aff subtract_domain(const isl::checked::point &set) const;
2671   inline isl::checked::pw_aff tdiv_q(isl::checked::pw_aff pa2) const;
2672   inline isl::checked::pw_aff tdiv_r(isl::checked::pw_aff pa2) const;
2673   inline isl::checked::pw_aff_list to_list() const;
2674   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2675   inline isl::checked::union_pw_aff to_union_pw_aff() const;
2676   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2677   inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2678   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2679   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2680   inline isl::checked::pw_aff union_add(isl::checked::pw_aff pwaff2) const;
2681   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2682   inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
2683   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2684   inline isl::checked::pw_aff union_add(const isl::checked::aff &pwaff2) const;
2685 };
2686 
2687 // declarations for isl::pw_aff_list
2688 inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2689 inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2690 
2691 class pw_aff_list {
2692   friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2693   friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2694 
2695 protected:
2696   isl_pw_aff_list *ptr = nullptr;
2697 
2698   inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2699 
2700 public:
2701   inline /* implicit */ pw_aff_list();
2702   inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2703   inline explicit pw_aff_list(isl::checked::ctx ctx, int n);
2704   inline explicit pw_aff_list(isl::checked::pw_aff el);
2705   inline pw_aff_list &operator=(pw_aff_list obj);
2706   inline ~pw_aff_list();
2707   inline __isl_give isl_pw_aff_list *copy() const &;
2708   inline __isl_give isl_pw_aff_list *copy() && = delete;
2709   inline __isl_keep isl_pw_aff_list *get() const;
2710   inline __isl_give isl_pw_aff_list *release();
2711   inline bool is_null() const;
2712   inline isl::checked::ctx ctx() const;
2713 
2714   inline isl::checked::pw_aff_list add(isl::checked::pw_aff el) const;
2715   inline isl::checked::pw_aff at(int index) const;
2716   inline isl::checked::pw_aff get_at(int index) const;
2717   inline isl::checked::pw_aff_list clear() const;
2718   inline isl::checked::pw_aff_list concat(isl::checked::pw_aff_list list2) const;
2719   inline isl::checked::pw_aff_list drop(unsigned int first, unsigned int n) const;
2720   inline stat foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const;
2721   inline isl::checked::pw_aff_list insert(unsigned int pos, isl::checked::pw_aff el) const;
2722   inline class size size() const;
2723 };
2724 
2725 // declarations for isl::pw_multi_aff
2726 inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2727 inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2728 
2729 class pw_multi_aff {
2730   friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2731   friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2732 
2733 protected:
2734   isl_pw_multi_aff *ptr = nullptr;
2735 
2736   inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2737 
2738 public:
2739   inline /* implicit */ pw_multi_aff();
2740   inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2741   inline /* implicit */ pw_multi_aff(isl::checked::multi_aff ma);
2742   inline /* implicit */ pw_multi_aff(isl::checked::pw_aff pa);
2743   inline explicit pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
2744   inline pw_multi_aff &operator=(pw_multi_aff obj);
2745   inline ~pw_multi_aff();
2746   inline __isl_give isl_pw_multi_aff *copy() const &;
2747   inline __isl_give isl_pw_multi_aff *copy() && = delete;
2748   inline __isl_keep isl_pw_multi_aff *get() const;
2749   inline __isl_give isl_pw_multi_aff *release();
2750   inline bool is_null() const;
2751   inline isl::checked::ctx ctx() const;
2752 
2753   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2754   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2755   inline isl::checked::pw_multi_aff add(isl::checked::pw_multi_aff pma2) const;
2756   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2757   inline isl::checked::pw_multi_aff add(const isl::checked::multi_aff &pma2) const;
2758   inline isl::checked::pw_multi_aff add(const isl::checked::pw_aff &pma2) const;
2759   inline isl::checked::pw_multi_aff add_constant(isl::checked::multi_val mv) const;
2760   inline isl::checked::pw_multi_aff add_constant(isl::checked::val v) const;
2761   inline isl::checked::pw_multi_aff add_constant(long v) const;
2762   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2763   inline isl::checked::map as_map() const;
2764   inline isl::checked::multi_aff as_multi_aff() const;
2765   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2766   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2767   inline isl::checked::set as_set() const;
2768   inline isl::checked::union_map as_union_map() const;
2769   inline isl::checked::pw_aff at(int pos) const;
2770   inline isl::checked::pw_aff get_at(int pos) const;
2771   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2772   inline isl::checked::pw_multi_aff bind_domain(isl::checked::multi_id tuple) const;
2773   inline isl::checked::pw_multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2774   inline isl::checked::pw_multi_aff coalesce() const;
2775   inline isl::checked::set domain() const;
2776   static inline isl::checked::pw_multi_aff domain_map(isl::checked::space space);
2777   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2778   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2779   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2780   inline isl::checked::pw_multi_aff flat_range_product(isl::checked::pw_multi_aff pma2) const;
2781   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2782   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::multi_aff &pma2) const;
2783   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_aff &pma2) const;
2784   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2785   inline isl::checked::pw_multi_aff gist(isl::checked::set set) const;
2786   inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
2787   inline isl::checked::pw_multi_aff gist(const isl::checked::basic_set &set) const;
2788   inline isl::checked::pw_multi_aff gist(const isl::checked::point &set) const;
2789   inline boolean has_range_tuple_id() const;
2790   inline isl::checked::multi_pw_aff identity() const;
2791   static inline isl::checked::pw_multi_aff identity_on_domain(isl::checked::space space);
2792   inline isl::checked::pw_multi_aff insert_domain(isl::checked::space domain) const;
2793   inline isl::checked::pw_multi_aff intersect_domain(isl::checked::set set) const;
2794   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
2795   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
2796   inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::basic_set &set) const;
2797   inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::point &set) const;
2798   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2799   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2800   inline isl::checked::pw_multi_aff intersect_params(isl::checked::set set) const;
2801   inline boolean involves_locals() const;
2802   inline boolean involves_nan() const;
2803   inline boolean involves_param(const isl::checked::id &id) const;
2804   inline boolean involves_param(const std::string &id) const;
2805   inline boolean involves_param(const isl::checked::id_list &list) const;
2806   inline boolean isa_multi_aff() const;
2807   inline boolean isa_pw_multi_aff() const;
2808   inline isl::checked::pw_aff_list list() const;
2809   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2810   inline isl::checked::multi_val max_multi_val() const;
2811   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2812   inline isl::checked::multi_val min_multi_val() const;
2813   static inline isl::checked::pw_multi_aff multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv);
2814   inline class size n_piece() const;
2815   inline isl::checked::multi_pw_aff neg() const;
2816   inline boolean plain_is_empty() const;
2817   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2818   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2819   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const;
2820   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2821   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const;
2822   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const;
2823   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2824   inline isl::checked::pw_multi_aff product(isl::checked::pw_multi_aff pma2) const;
2825   inline isl::checked::pw_multi_aff product(const isl::checked::multi_aff &pma2) const;
2826   inline isl::checked::pw_multi_aff product(const isl::checked::pw_aff &pma2) const;
2827   inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
2828   inline isl::checked::pw_multi_aff pullback(isl::checked::multi_aff ma) const;
2829   inline isl::checked::pw_multi_aff pullback(isl::checked::pw_multi_aff pma2) const;
2830   inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
2831   inline isl::checked::pw_multi_aff range_factor_domain() const;
2832   inline isl::checked::pw_multi_aff range_factor_range() const;
2833   static inline isl::checked::pw_multi_aff range_map(isl::checked::space space);
2834   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2835   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2836   inline isl::checked::pw_multi_aff range_product(isl::checked::pw_multi_aff pma2) const;
2837   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2838   inline isl::checked::pw_multi_aff range_product(const isl::checked::multi_aff &pma2) const;
2839   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_aff &pma2) const;
2840   inline isl::checked::id range_tuple_id() const;
2841   inline isl::checked::id get_range_tuple_id() const;
2842   inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2843   inline isl::checked::multi_pw_aff scale(const isl::checked::multi_val &mv) const;
2844   inline isl::checked::pw_multi_aff scale(isl::checked::val v) const;
2845   inline isl::checked::pw_multi_aff scale(long v) const;
2846   inline isl::checked::multi_pw_aff scale_down(const isl::checked::multi_val &mv) const;
2847   inline isl::checked::pw_multi_aff scale_down(isl::checked::val v) const;
2848   inline isl::checked::pw_multi_aff scale_down(long v) const;
2849   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2850   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2851   inline isl::checked::pw_multi_aff set_range_tuple(isl::checked::id id) const;
2852   inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
2853   inline class size size() const;
2854   inline isl::checked::space space() const;
2855   inline isl::checked::space get_space() const;
2856   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2857   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2858   inline isl::checked::pw_multi_aff sub(isl::checked::pw_multi_aff pma2) const;
2859   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2860   inline isl::checked::pw_multi_aff sub(const isl::checked::multi_aff &pma2) const;
2861   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_aff &pma2) const;
2862   inline isl::checked::pw_multi_aff subtract_domain(isl::checked::set set) const;
2863   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
2864   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
2865   inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::basic_set &set) const;
2866   inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::point &set) const;
2867   inline isl::checked::pw_multi_aff_list to_list() const;
2868   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2869   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2870   inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2871   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2872   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2873   inline isl::checked::pw_multi_aff union_add(isl::checked::pw_multi_aff pma2) const;
2874   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2875   inline isl::checked::pw_multi_aff union_add(const isl::checked::multi_aff &pma2) const;
2876   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_aff &pma2) const;
2877   static inline isl::checked::pw_multi_aff zero(isl::checked::space space);
2878 };
2879 
2880 // declarations for isl::pw_multi_aff_list
2881 inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2882 inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2883 
2884 class pw_multi_aff_list {
2885   friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2886   friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2887 
2888 protected:
2889   isl_pw_multi_aff_list *ptr = nullptr;
2890 
2891   inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
2892 
2893 public:
2894   inline /* implicit */ pw_multi_aff_list();
2895   inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
2896   inline explicit pw_multi_aff_list(isl::checked::ctx ctx, int n);
2897   inline explicit pw_multi_aff_list(isl::checked::pw_multi_aff el);
2898   inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
2899   inline ~pw_multi_aff_list();
2900   inline __isl_give isl_pw_multi_aff_list *copy() const &;
2901   inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
2902   inline __isl_keep isl_pw_multi_aff_list *get() const;
2903   inline __isl_give isl_pw_multi_aff_list *release();
2904   inline bool is_null() const;
2905   inline isl::checked::ctx ctx() const;
2906 
2907   inline isl::checked::pw_multi_aff_list add(isl::checked::pw_multi_aff el) const;
2908   inline isl::checked::pw_multi_aff at(int index) const;
2909   inline isl::checked::pw_multi_aff get_at(int index) const;
2910   inline isl::checked::pw_multi_aff_list clear() const;
2911   inline isl::checked::pw_multi_aff_list concat(isl::checked::pw_multi_aff_list list2) const;
2912   inline isl::checked::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
2913   inline stat foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const;
2914   inline isl::checked::pw_multi_aff_list insert(unsigned int pos, isl::checked::pw_multi_aff el) const;
2915   inline class size size() const;
2916 };
2917 
2918 // declarations for isl::schedule
2919 inline schedule manage(__isl_take isl_schedule *ptr);
2920 inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2921 
2922 class schedule {
2923   friend inline schedule manage(__isl_take isl_schedule *ptr);
2924   friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2925 
2926 protected:
2927   isl_schedule *ptr = nullptr;
2928 
2929   inline explicit schedule(__isl_take isl_schedule *ptr);
2930 
2931 public:
2932   inline /* implicit */ schedule();
2933   inline /* implicit */ schedule(const schedule &obj);
2934   inline explicit schedule(isl::checked::ctx ctx, const std::string &str);
2935   inline schedule &operator=(schedule obj);
2936   inline ~schedule();
2937   inline __isl_give isl_schedule *copy() const &;
2938   inline __isl_give isl_schedule *copy() && = delete;
2939   inline __isl_keep isl_schedule *get() const;
2940   inline __isl_give isl_schedule *release();
2941   inline bool is_null() const;
2942   inline isl::checked::ctx ctx() const;
2943 
2944   inline isl::checked::union_set domain() const;
2945   inline isl::checked::union_set get_domain() const;
2946   static inline isl::checked::schedule from_domain(isl::checked::union_set domain);
2947   inline isl::checked::union_map map() const;
2948   inline isl::checked::union_map get_map() const;
2949   inline isl::checked::schedule pullback(isl::checked::union_pw_multi_aff upma) const;
2950   inline isl::checked::schedule_node root() const;
2951   inline isl::checked::schedule_node get_root() const;
2952 };
2953 
2954 // declarations for isl::schedule_constraints
2955 inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2956 inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2957 
2958 class schedule_constraints {
2959   friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2960   friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2961 
2962 protected:
2963   isl_schedule_constraints *ptr = nullptr;
2964 
2965   inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
2966 
2967 public:
2968   inline /* implicit */ schedule_constraints();
2969   inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
2970   inline explicit schedule_constraints(isl::checked::ctx ctx, const std::string &str);
2971   inline schedule_constraints &operator=(schedule_constraints obj);
2972   inline ~schedule_constraints();
2973   inline __isl_give isl_schedule_constraints *copy() const &;
2974   inline __isl_give isl_schedule_constraints *copy() && = delete;
2975   inline __isl_keep isl_schedule_constraints *get() const;
2976   inline __isl_give isl_schedule_constraints *release();
2977   inline bool is_null() const;
2978   inline isl::checked::ctx ctx() const;
2979 
2980   inline isl::checked::union_map coincidence() const;
2981   inline isl::checked::union_map get_coincidence() const;
2982   inline isl::checked::schedule compute_schedule() const;
2983   inline isl::checked::union_map conditional_validity() const;
2984   inline isl::checked::union_map get_conditional_validity() const;
2985   inline isl::checked::union_map conditional_validity_condition() const;
2986   inline isl::checked::union_map get_conditional_validity_condition() const;
2987   inline isl::checked::set context() const;
2988   inline isl::checked::set get_context() const;
2989   inline isl::checked::union_set domain() const;
2990   inline isl::checked::union_set get_domain() const;
2991   static inline isl::checked::schedule_constraints on_domain(isl::checked::union_set domain);
2992   inline isl::checked::union_map proximity() const;
2993   inline isl::checked::union_map get_proximity() const;
2994   inline isl::checked::schedule_constraints set_coincidence(isl::checked::union_map coincidence) const;
2995   inline isl::checked::schedule_constraints set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const;
2996   inline isl::checked::schedule_constraints set_context(isl::checked::set context) const;
2997   inline isl::checked::schedule_constraints set_proximity(isl::checked::union_map proximity) const;
2998   inline isl::checked::schedule_constraints set_validity(isl::checked::union_map validity) const;
2999   inline isl::checked::union_map validity() const;
3000   inline isl::checked::union_map get_validity() const;
3001 };
3002 
3003 // declarations for isl::schedule_node
3004 inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3005 inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3006 
3007 class schedule_node {
3008   friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3009   friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3010 
3011 protected:
3012   isl_schedule_node *ptr = nullptr;
3013 
3014   inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
3015 
3016 public:
3017   inline /* implicit */ schedule_node();
3018   inline /* implicit */ schedule_node(const schedule_node &obj);
3019   inline schedule_node &operator=(schedule_node obj);
3020   inline ~schedule_node();
3021   inline __isl_give isl_schedule_node *copy() const &;
3022   inline __isl_give isl_schedule_node *copy() && = delete;
3023   inline __isl_keep isl_schedule_node *get() const;
3024   inline __isl_give isl_schedule_node *release();
3025   inline bool is_null() const;
3026 private:
3027   template <typename T,
3028           typename = typename std::enable_if<std::is_same<
3029                   const decltype(isl_schedule_node_get_type(NULL)),
3030                   const T>::value>::type>
3031   inline boolean isa_type(T subtype) const;
3032 public:
3033   template <class T> inline boolean isa() const;
3034   template <class T> inline T as() const;
3035   inline isl::checked::ctx ctx() const;
3036 
3037   inline isl::checked::schedule_node ancestor(int generation) const;
3038   inline class size ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3039   inline class size get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3040   inline isl::checked::schedule_node child(int pos) const;
3041   inline class size child_position() const;
3042   inline class size get_child_position() const;
3043   inline boolean every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const;
3044   inline isl::checked::schedule_node first_child() const;
3045   inline stat foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const;
3046   inline stat foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const;
3047   static inline isl::checked::schedule_node from_domain(isl::checked::union_set domain);
3048   static inline isl::checked::schedule_node from_extension(isl::checked::union_map extension);
3049   inline isl::checked::schedule_node graft_after(isl::checked::schedule_node graft) const;
3050   inline isl::checked::schedule_node graft_before(isl::checked::schedule_node graft) const;
3051   inline boolean has_children() const;
3052   inline boolean has_next_sibling() const;
3053   inline boolean has_parent() const;
3054   inline boolean has_previous_sibling() const;
3055   inline isl::checked::schedule_node insert_context(isl::checked::set context) const;
3056   inline isl::checked::schedule_node insert_filter(isl::checked::union_set filter) const;
3057   inline isl::checked::schedule_node insert_guard(isl::checked::set context) const;
3058   inline isl::checked::schedule_node insert_mark(isl::checked::id mark) const;
3059   inline isl::checked::schedule_node insert_mark(const std::string &mark) const;
3060   inline isl::checked::schedule_node insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const;
3061   inline isl::checked::schedule_node insert_sequence(isl::checked::union_set_list filters) const;
3062   inline isl::checked::schedule_node insert_set(isl::checked::union_set_list filters) const;
3063   inline boolean is_equal(const isl::checked::schedule_node &node2) const;
3064   inline boolean is_subtree_anchored() const;
3065   inline isl::checked::schedule_node map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const;
3066   inline class size n_children() const;
3067   inline isl::checked::schedule_node next_sibling() const;
3068   inline isl::checked::schedule_node order_after(isl::checked::union_set filter) const;
3069   inline isl::checked::schedule_node order_before(isl::checked::union_set filter) const;
3070   inline isl::checked::schedule_node parent() const;
3071   inline isl::checked::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
3072   inline isl::checked::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
3073   inline isl::checked::union_map prefix_schedule_union_map() const;
3074   inline isl::checked::union_map get_prefix_schedule_union_map() const;
3075   inline isl::checked::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
3076   inline isl::checked::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
3077   inline isl::checked::schedule_node previous_sibling() const;
3078   inline isl::checked::schedule_node root() const;
3079   inline isl::checked::schedule schedule() const;
3080   inline isl::checked::schedule get_schedule() const;
3081   inline isl::checked::schedule_node shared_ancestor(const isl::checked::schedule_node &node2) const;
3082   inline isl::checked::schedule_node get_shared_ancestor(const isl::checked::schedule_node &node2) const;
3083   inline class size tree_depth() const;
3084   inline class size get_tree_depth() const;
3085 };
3086 
3087 // declarations for isl::schedule_node_band
3088 
3089 class schedule_node_band : public schedule_node {
3090   template <class T>
3091   friend boolean schedule_node::isa() const;
3092   friend schedule_node_band schedule_node::as<schedule_node_band>() const;
3093   static const auto type = isl_schedule_node_band;
3094 
3095 protected:
3096   inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
3097 
3098 public:
3099   inline /* implicit */ schedule_node_band();
3100   inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
3101   inline schedule_node_band &operator=(schedule_node_band obj);
3102   inline isl::checked::ctx ctx() const;
3103 
3104   inline isl::checked::union_set ast_build_options() const;
3105   inline isl::checked::union_set get_ast_build_options() const;
3106   inline isl::checked::set ast_isolate_option() const;
3107   inline isl::checked::set get_ast_isolate_option() const;
3108   inline boolean member_get_coincident(int pos) const;
3109   inline schedule_node_band member_set_coincident(int pos, int coincident) const;
3110   inline schedule_node_band mod(isl::checked::multi_val mv) const;
3111   inline class size n_member() const;
3112   inline isl::checked::multi_union_pw_aff partial_schedule() const;
3113   inline isl::checked::multi_union_pw_aff get_partial_schedule() const;
3114   inline boolean permutable() const;
3115   inline boolean get_permutable() const;
3116   inline schedule_node_band scale(isl::checked::multi_val mv) const;
3117   inline schedule_node_band scale_down(isl::checked::multi_val mv) const;
3118   inline schedule_node_band set_ast_build_options(isl::checked::union_set options) const;
3119   inline schedule_node_band set_permutable(int permutable) const;
3120   inline schedule_node_band shift(isl::checked::multi_union_pw_aff shift) const;
3121   inline schedule_node_band split(int pos) const;
3122   inline schedule_node_band tile(isl::checked::multi_val sizes) const;
3123   inline schedule_node_band member_set_ast_loop_default(int pos) const;
3124   inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
3125   inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
3126   inline schedule_node_band member_set_ast_loop_separate(int pos) const;
3127 };
3128 
3129 // declarations for isl::schedule_node_context
3130 
3131 class schedule_node_context : public schedule_node {
3132   template <class T>
3133   friend boolean schedule_node::isa() const;
3134   friend schedule_node_context schedule_node::as<schedule_node_context>() const;
3135   static const auto type = isl_schedule_node_context;
3136 
3137 protected:
3138   inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
3139 
3140 public:
3141   inline /* implicit */ schedule_node_context();
3142   inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
3143   inline schedule_node_context &operator=(schedule_node_context obj);
3144   inline isl::checked::ctx ctx() const;
3145 
3146   inline isl::checked::set context() const;
3147   inline isl::checked::set get_context() const;
3148 };
3149 
3150 // declarations for isl::schedule_node_domain
3151 
3152 class schedule_node_domain : public schedule_node {
3153   template <class T>
3154   friend boolean schedule_node::isa() const;
3155   friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
3156   static const auto type = isl_schedule_node_domain;
3157 
3158 protected:
3159   inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
3160 
3161 public:
3162   inline /* implicit */ schedule_node_domain();
3163   inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
3164   inline schedule_node_domain &operator=(schedule_node_domain obj);
3165   inline isl::checked::ctx ctx() const;
3166 
3167   inline isl::checked::union_set domain() const;
3168   inline isl::checked::union_set get_domain() const;
3169 };
3170 
3171 // declarations for isl::schedule_node_expansion
3172 
3173 class schedule_node_expansion : public schedule_node {
3174   template <class T>
3175   friend boolean schedule_node::isa() const;
3176   friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
3177   static const auto type = isl_schedule_node_expansion;
3178 
3179 protected:
3180   inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
3181 
3182 public:
3183   inline /* implicit */ schedule_node_expansion();
3184   inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
3185   inline schedule_node_expansion &operator=(schedule_node_expansion obj);
3186   inline isl::checked::ctx ctx() const;
3187 
3188   inline isl::checked::union_pw_multi_aff contraction() const;
3189   inline isl::checked::union_pw_multi_aff get_contraction() const;
3190   inline isl::checked::union_map expansion() const;
3191   inline isl::checked::union_map get_expansion() const;
3192 };
3193 
3194 // declarations for isl::schedule_node_extension
3195 
3196 class schedule_node_extension : public schedule_node {
3197   template <class T>
3198   friend boolean schedule_node::isa() const;
3199   friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
3200   static const auto type = isl_schedule_node_extension;
3201 
3202 protected:
3203   inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
3204 
3205 public:
3206   inline /* implicit */ schedule_node_extension();
3207   inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
3208   inline schedule_node_extension &operator=(schedule_node_extension obj);
3209   inline isl::checked::ctx ctx() const;
3210 
3211   inline isl::checked::union_map extension() const;
3212   inline isl::checked::union_map get_extension() const;
3213 };
3214 
3215 // declarations for isl::schedule_node_filter
3216 
3217 class schedule_node_filter : public schedule_node {
3218   template <class T>
3219   friend boolean schedule_node::isa() const;
3220   friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
3221   static const auto type = isl_schedule_node_filter;
3222 
3223 protected:
3224   inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
3225 
3226 public:
3227   inline /* implicit */ schedule_node_filter();
3228   inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
3229   inline schedule_node_filter &operator=(schedule_node_filter obj);
3230   inline isl::checked::ctx ctx() const;
3231 
3232   inline isl::checked::union_set filter() const;
3233   inline isl::checked::union_set get_filter() const;
3234 };
3235 
3236 // declarations for isl::schedule_node_guard
3237 
3238 class schedule_node_guard : public schedule_node {
3239   template <class T>
3240   friend boolean schedule_node::isa() const;
3241   friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
3242   static const auto type = isl_schedule_node_guard;
3243 
3244 protected:
3245   inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
3246 
3247 public:
3248   inline /* implicit */ schedule_node_guard();
3249   inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
3250   inline schedule_node_guard &operator=(schedule_node_guard obj);
3251   inline isl::checked::ctx ctx() const;
3252 
3253   inline isl::checked::set guard() const;
3254   inline isl::checked::set get_guard() const;
3255 };
3256 
3257 // declarations for isl::schedule_node_leaf
3258 
3259 class schedule_node_leaf : public schedule_node {
3260   template <class T>
3261   friend boolean schedule_node::isa() const;
3262   friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
3263   static const auto type = isl_schedule_node_leaf;
3264 
3265 protected:
3266   inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
3267 
3268 public:
3269   inline /* implicit */ schedule_node_leaf();
3270   inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
3271   inline schedule_node_leaf &operator=(schedule_node_leaf obj);
3272   inline isl::checked::ctx ctx() const;
3273 
3274 };
3275 
3276 // declarations for isl::schedule_node_mark
3277 
3278 class schedule_node_mark : public schedule_node {
3279   template <class T>
3280   friend boolean schedule_node::isa() const;
3281   friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
3282   static const auto type = isl_schedule_node_mark;
3283 
3284 protected:
3285   inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
3286 
3287 public:
3288   inline /* implicit */ schedule_node_mark();
3289   inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
3290   inline schedule_node_mark &operator=(schedule_node_mark obj);
3291   inline isl::checked::ctx ctx() const;
3292 
3293 };
3294 
3295 // declarations for isl::schedule_node_sequence
3296 
3297 class schedule_node_sequence : public schedule_node {
3298   template <class T>
3299   friend boolean schedule_node::isa() const;
3300   friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
3301   static const auto type = isl_schedule_node_sequence;
3302 
3303 protected:
3304   inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
3305 
3306 public:
3307   inline /* implicit */ schedule_node_sequence();
3308   inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
3309   inline schedule_node_sequence &operator=(schedule_node_sequence obj);
3310   inline isl::checked::ctx ctx() const;
3311 
3312 };
3313 
3314 // declarations for isl::schedule_node_set
3315 
3316 class schedule_node_set : public schedule_node {
3317   template <class T>
3318   friend boolean schedule_node::isa() const;
3319   friend schedule_node_set schedule_node::as<schedule_node_set>() const;
3320   static const auto type = isl_schedule_node_set;
3321 
3322 protected:
3323   inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
3324 
3325 public:
3326   inline /* implicit */ schedule_node_set();
3327   inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
3328   inline schedule_node_set &operator=(schedule_node_set obj);
3329   inline isl::checked::ctx ctx() const;
3330 
3331 };
3332 
3333 // declarations for isl::set
3334 inline set manage(__isl_take isl_set *ptr);
3335 inline set manage_copy(__isl_keep isl_set *ptr);
3336 
3337 class set {
3338   friend inline set manage(__isl_take isl_set *ptr);
3339   friend inline set manage_copy(__isl_keep isl_set *ptr);
3340 
3341 protected:
3342   isl_set *ptr = nullptr;
3343 
3344   inline explicit set(__isl_take isl_set *ptr);
3345 
3346 public:
3347   inline /* implicit */ set();
3348   inline /* implicit */ set(const set &obj);
3349   inline /* implicit */ set(isl::checked::basic_set bset);
3350   inline /* implicit */ set(isl::checked::point pnt);
3351   inline explicit set(isl::checked::ctx ctx, const std::string &str);
3352   inline set &operator=(set obj);
3353   inline ~set();
3354   inline __isl_give isl_set *copy() const &;
3355   inline __isl_give isl_set *copy() && = delete;
3356   inline __isl_keep isl_set *get() const;
3357   inline __isl_give isl_set *release();
3358   inline bool is_null() const;
3359   inline isl::checked::ctx ctx() const;
3360 
3361   inline isl::checked::basic_set affine_hull() const;
3362   inline isl::checked::set apply(isl::checked::map map) const;
3363   inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
3364   inline isl::checked::set apply(const isl::checked::basic_map &map) const;
3365   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3366   inline isl::checked::set as_set() const;
3367   inline isl::checked::set bind(isl::checked::multi_id tuple) const;
3368   inline isl::checked::set coalesce() const;
3369   inline isl::checked::set complement() const;
3370   inline isl::checked::union_set compute_divs() const;
3371   inline isl::checked::set detect_equalities() const;
3372   inline isl::checked::val dim_max_val(int pos) const;
3373   inline isl::checked::val dim_min_val(int pos) const;
3374   static inline isl::checked::set empty(isl::checked::space space);
3375   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
3376   inline isl::checked::set extract_set(const isl::checked::space &space) const;
3377   inline isl::checked::set flatten() const;
3378   inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
3379   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
3380   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
3381   inline isl::checked::set gist(isl::checked::set context) const;
3382   inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
3383   inline isl::checked::set gist(const isl::checked::basic_set &context) const;
3384   inline isl::checked::set gist(const isl::checked::point &context) const;
3385   inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
3386   inline isl::checked::map identity() const;
3387   inline isl::checked::pw_aff indicator_function() const;
3388   inline isl::checked::map insert_domain(isl::checked::space domain) const;
3389   inline isl::checked::set intersect(isl::checked::set set2) const;
3390   inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
3391   inline isl::checked::set intersect(const isl::checked::basic_set &set2) const;
3392   inline isl::checked::set intersect(const isl::checked::point &set2) const;
3393   inline isl::checked::set intersect_params(isl::checked::set params) const;
3394   inline boolean involves_locals() const;
3395   inline boolean is_disjoint(const isl::checked::set &set2) const;
3396   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
3397   inline boolean is_disjoint(const isl::checked::basic_set &set2) const;
3398   inline boolean is_disjoint(const isl::checked::point &set2) const;
3399   inline boolean is_empty() const;
3400   inline boolean is_equal(const isl::checked::set &set2) const;
3401   inline boolean is_equal(const isl::checked::union_set &uset2) const;
3402   inline boolean is_equal(const isl::checked::basic_set &set2) const;
3403   inline boolean is_equal(const isl::checked::point &set2) const;
3404   inline boolean is_singleton() const;
3405   inline boolean is_strict_subset(const isl::checked::set &set2) const;
3406   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
3407   inline boolean is_strict_subset(const isl::checked::basic_set &set2) const;
3408   inline boolean is_strict_subset(const isl::checked::point &set2) const;
3409   inline boolean is_subset(const isl::checked::set &set2) const;
3410   inline boolean is_subset(const isl::checked::union_set &uset2) const;
3411   inline boolean is_subset(const isl::checked::basic_set &set2) const;
3412   inline boolean is_subset(const isl::checked::point &set2) const;
3413   inline boolean is_wrapping() const;
3414   inline boolean isa_set() const;
3415   inline isl::checked::set lexmax() const;
3416   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
3417   inline isl::checked::set lexmin() const;
3418   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
3419   inline isl::checked::set lower_bound(isl::checked::multi_pw_aff lower) const;
3420   inline isl::checked::set lower_bound(isl::checked::multi_val lower) const;
3421   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
3422   inline isl::checked::val max_val(const isl::checked::aff &obj) const;
3423   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
3424   inline isl::checked::val min_val(const isl::checked::aff &obj) const;
3425   inline isl::checked::set params() const;
3426   inline isl::checked::multi_val plain_multi_val_if_fixed() const;
3427   inline isl::checked::multi_val get_plain_multi_val_if_fixed() const;
3428   inline isl::checked::basic_set polyhedral_hull() const;
3429   inline isl::checked::set preimage(isl::checked::multi_aff ma) const;
3430   inline isl::checked::set preimage(isl::checked::multi_pw_aff mpa) const;
3431   inline isl::checked::set preimage(isl::checked::pw_multi_aff pma) const;
3432   inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
3433   inline isl::checked::set product(isl::checked::set set2) const;
3434   inline isl::checked::set project_out_all_params() const;
3435   inline isl::checked::set project_out_param(isl::checked::id id) const;
3436   inline isl::checked::set project_out_param(const std::string &id) const;
3437   inline isl::checked::set project_out_param(isl::checked::id_list list) const;
3438   inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(isl::checked::multi_val mv) const;
3439   inline isl::checked::basic_set sample() const;
3440   inline isl::checked::point sample_point() const;
3441   inline isl::checked::fixed_box simple_fixed_box_hull() const;
3442   inline isl::checked::fixed_box get_simple_fixed_box_hull() const;
3443   inline isl::checked::space space() const;
3444   inline isl::checked::space get_space() const;
3445   inline isl::checked::val stride(int pos) const;
3446   inline isl::checked::val get_stride(int pos) const;
3447   inline isl::checked::set subtract(isl::checked::set set2) const;
3448   inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
3449   inline isl::checked::set subtract(const isl::checked::basic_set &set2) const;
3450   inline isl::checked::set subtract(const isl::checked::point &set2) const;
3451   inline isl::checked::union_set_list to_list() const;
3452   inline isl::checked::union_set to_union_set() const;
3453   inline isl::checked::map translation() const;
3454   inline isl::checked::set unbind_params(isl::checked::multi_id tuple) const;
3455   inline isl::checked::map unbind_params_insert_domain(isl::checked::multi_id domain) const;
3456   inline isl::checked::set unite(isl::checked::set set2) const;
3457   inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
3458   inline isl::checked::set unite(const isl::checked::basic_set &set2) const;
3459   inline isl::checked::set unite(const isl::checked::point &set2) const;
3460   static inline isl::checked::set universe(isl::checked::space space);
3461   inline isl::checked::basic_set unshifted_simple_hull() const;
3462   inline isl::checked::map unwrap() const;
3463   inline isl::checked::set upper_bound(isl::checked::multi_pw_aff upper) const;
3464   inline isl::checked::set upper_bound(isl::checked::multi_val upper) const;
3465 };
3466 
3467 // declarations for isl::space
3468 inline space manage(__isl_take isl_space *ptr);
3469 inline space manage_copy(__isl_keep isl_space *ptr);
3470 
3471 class space {
3472   friend inline space manage(__isl_take isl_space *ptr);
3473   friend inline space manage_copy(__isl_keep isl_space *ptr);
3474 
3475 protected:
3476   isl_space *ptr = nullptr;
3477 
3478   inline explicit space(__isl_take isl_space *ptr);
3479 
3480 public:
3481   inline /* implicit */ space();
3482   inline /* implicit */ space(const space &obj);
3483   inline space &operator=(space obj);
3484   inline ~space();
3485   inline __isl_give isl_space *copy() const &;
3486   inline __isl_give isl_space *copy() && = delete;
3487   inline __isl_keep isl_space *get() const;
3488   inline __isl_give isl_space *release();
3489   inline bool is_null() const;
3490   inline isl::checked::ctx ctx() const;
3491 
3492   inline isl::checked::space add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const;
3493   inline isl::checked::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
3494   inline isl::checked::space add_unnamed_tuple(unsigned int dim) const;
3495   inline isl::checked::space curry() const;
3496   inline isl::checked::space domain() const;
3497   inline isl::checked::multi_aff domain_map_multi_aff() const;
3498   inline isl::checked::pw_multi_aff domain_map_pw_multi_aff() const;
3499   inline isl::checked::id domain_tuple_id() const;
3500   inline isl::checked::id get_domain_tuple_id() const;
3501   inline isl::checked::space flatten_domain() const;
3502   inline isl::checked::space flatten_range() const;
3503   inline boolean has_domain_tuple_id() const;
3504   inline boolean has_range_tuple_id() const;
3505   inline isl::checked::multi_aff identity_multi_aff_on_domain() const;
3506   inline isl::checked::multi_pw_aff identity_multi_pw_aff_on_domain() const;
3507   inline isl::checked::pw_multi_aff identity_pw_multi_aff_on_domain() const;
3508   inline boolean is_equal(const isl::checked::space &space2) const;
3509   inline boolean is_wrapping() const;
3510   inline isl::checked::space map_from_set() const;
3511   inline isl::checked::multi_aff multi_aff(isl::checked::aff_list list) const;
3512   inline isl::checked::multi_aff multi_aff_on_domain(isl::checked::multi_val mv) const;
3513   inline isl::checked::multi_id multi_id(isl::checked::id_list list) const;
3514   inline isl::checked::multi_pw_aff multi_pw_aff(isl::checked::pw_aff_list list) const;
3515   inline isl::checked::multi_union_pw_aff multi_union_pw_aff(isl::checked::union_pw_aff_list list) const;
3516   inline isl::checked::multi_val multi_val(isl::checked::val_list list) const;
3517   inline isl::checked::space params() const;
3518   inline isl::checked::space product(isl::checked::space right) const;
3519   inline isl::checked::space range() const;
3520   inline isl::checked::multi_aff range_map_multi_aff() const;
3521   inline isl::checked::pw_multi_aff range_map_pw_multi_aff() const;
3522   inline isl::checked::space range_reverse() const;
3523   inline isl::checked::id range_tuple_id() const;
3524   inline isl::checked::id get_range_tuple_id() const;
3525   inline isl::checked::space reverse() const;
3526   inline isl::checked::space set_domain_tuple(isl::checked::id id) const;
3527   inline isl::checked::space set_domain_tuple(const std::string &id) const;
3528   inline isl::checked::space set_range_tuple(isl::checked::id id) const;
3529   inline isl::checked::space set_range_tuple(const std::string &id) const;
3530   inline isl::checked::space uncurry() const;
3531   static inline isl::checked::space unit(isl::checked::ctx ctx);
3532   inline isl::checked::map universe_map() const;
3533   inline isl::checked::set universe_set() const;
3534   inline isl::checked::space unwrap() const;
3535   inline isl::checked::space wrap() const;
3536   inline isl::checked::aff zero_aff_on_domain() const;
3537   inline isl::checked::multi_aff zero_multi_aff() const;
3538   inline isl::checked::multi_pw_aff zero_multi_pw_aff() const;
3539   inline isl::checked::multi_union_pw_aff zero_multi_union_pw_aff() const;
3540   inline isl::checked::multi_val zero_multi_val() const;
3541 };
3542 
3543 // declarations for isl::union_access_info
3544 inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3545 inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3546 
3547 class union_access_info {
3548   friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3549   friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3550 
3551 protected:
3552   isl_union_access_info *ptr = nullptr;
3553 
3554   inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
3555 
3556 public:
3557   inline /* implicit */ union_access_info();
3558   inline /* implicit */ union_access_info(const union_access_info &obj);
3559   inline explicit union_access_info(isl::checked::union_map sink);
3560   inline union_access_info &operator=(union_access_info obj);
3561   inline ~union_access_info();
3562   inline __isl_give isl_union_access_info *copy() const &;
3563   inline __isl_give isl_union_access_info *copy() && = delete;
3564   inline __isl_keep isl_union_access_info *get() const;
3565   inline __isl_give isl_union_access_info *release();
3566   inline bool is_null() const;
3567   inline isl::checked::ctx ctx() const;
3568 
3569   inline isl::checked::union_flow compute_flow() const;
3570   inline isl::checked::union_access_info set_kill(isl::checked::union_map kill) const;
3571   inline isl::checked::union_access_info set_may_source(isl::checked::union_map may_source) const;
3572   inline isl::checked::union_access_info set_must_source(isl::checked::union_map must_source) const;
3573   inline isl::checked::union_access_info set_schedule(isl::checked::schedule schedule) const;
3574   inline isl::checked::union_access_info set_schedule_map(isl::checked::union_map schedule_map) const;
3575 };
3576 
3577 // declarations for isl::union_flow
3578 inline union_flow manage(__isl_take isl_union_flow *ptr);
3579 inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3580 
3581 class union_flow {
3582   friend inline union_flow manage(__isl_take isl_union_flow *ptr);
3583   friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3584 
3585 protected:
3586   isl_union_flow *ptr = nullptr;
3587 
3588   inline explicit union_flow(__isl_take isl_union_flow *ptr);
3589 
3590 public:
3591   inline /* implicit */ union_flow();
3592   inline /* implicit */ union_flow(const union_flow &obj);
3593   inline union_flow &operator=(union_flow obj);
3594   inline ~union_flow();
3595   inline __isl_give isl_union_flow *copy() const &;
3596   inline __isl_give isl_union_flow *copy() && = delete;
3597   inline __isl_keep isl_union_flow *get() const;
3598   inline __isl_give isl_union_flow *release();
3599   inline bool is_null() const;
3600   inline isl::checked::ctx ctx() const;
3601 
3602   inline isl::checked::union_map full_may_dependence() const;
3603   inline isl::checked::union_map get_full_may_dependence() const;
3604   inline isl::checked::union_map full_must_dependence() const;
3605   inline isl::checked::union_map get_full_must_dependence() const;
3606   inline isl::checked::union_map may_dependence() const;
3607   inline isl::checked::union_map get_may_dependence() const;
3608   inline isl::checked::union_map may_no_source() const;
3609   inline isl::checked::union_map get_may_no_source() const;
3610   inline isl::checked::union_map must_dependence() const;
3611   inline isl::checked::union_map get_must_dependence() const;
3612   inline isl::checked::union_map must_no_source() const;
3613   inline isl::checked::union_map get_must_no_source() const;
3614 };
3615 
3616 // declarations for isl::union_map
3617 inline union_map manage(__isl_take isl_union_map *ptr);
3618 inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3619 
3620 class union_map {
3621   friend inline union_map manage(__isl_take isl_union_map *ptr);
3622   friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3623 
3624 protected:
3625   isl_union_map *ptr = nullptr;
3626 
3627   inline explicit union_map(__isl_take isl_union_map *ptr);
3628 
3629 public:
3630   inline /* implicit */ union_map();
3631   inline /* implicit */ union_map(const union_map &obj);
3632   inline /* implicit */ union_map(isl::checked::basic_map bmap);
3633   inline /* implicit */ union_map(isl::checked::map map);
3634   inline explicit union_map(isl::checked::ctx ctx, const std::string &str);
3635   inline union_map &operator=(union_map obj);
3636   inline ~union_map();
3637   inline __isl_give isl_union_map *copy() const &;
3638   inline __isl_give isl_union_map *copy() && = delete;
3639   inline __isl_keep isl_union_map *get() const;
3640   inline __isl_give isl_union_map *release();
3641   inline bool is_null() const;
3642   inline isl::checked::ctx ctx() const;
3643 
3644   inline isl::checked::union_map affine_hull() const;
3645   inline isl::checked::union_map apply_domain(isl::checked::union_map umap2) const;
3646   inline isl::checked::union_map apply_range(isl::checked::union_map umap2) const;
3647   inline isl::checked::map as_map() const;
3648   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3649   inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
3650   inline isl::checked::union_set bind_range(isl::checked::multi_id tuple) const;
3651   inline isl::checked::union_map coalesce() const;
3652   inline isl::checked::union_map compute_divs() const;
3653   inline isl::checked::union_map curry() const;
3654   inline isl::checked::union_set deltas() const;
3655   inline isl::checked::union_map detect_equalities() const;
3656   inline isl::checked::union_set domain() const;
3657   inline isl::checked::union_map domain_factor_domain() const;
3658   inline isl::checked::union_map domain_factor_range() const;
3659   inline isl::checked::union_map domain_map() const;
3660   inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
3661   inline isl::checked::union_map domain_product(isl::checked::union_map umap2) const;
3662   static inline isl::checked::union_map empty(isl::checked::ctx ctx);
3663   inline isl::checked::union_map eq_at(isl::checked::multi_union_pw_aff mupa) const;
3664   inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
3665   inline isl::checked::map extract_map(isl::checked::space space) const;
3666   inline isl::checked::union_map factor_domain() const;
3667   inline isl::checked::union_map factor_range() const;
3668   inline isl::checked::union_map fixed_power(isl::checked::val exp) const;
3669   inline isl::checked::union_map fixed_power(long exp) const;
3670   inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
3671   static inline isl::checked::union_map from(isl::checked::multi_union_pw_aff mupa);
3672   static inline isl::checked::union_map from(isl::checked::union_pw_multi_aff upma);
3673   static inline isl::checked::union_map from_domain(isl::checked::union_set uset);
3674   static inline isl::checked::union_map from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range);
3675   static inline isl::checked::union_map from_range(isl::checked::union_set uset);
3676   inline isl::checked::union_map gist(isl::checked::union_map context) const;
3677   inline isl::checked::union_map gist_domain(isl::checked::union_set uset) const;
3678   inline isl::checked::union_map gist_params(isl::checked::set set) const;
3679   inline isl::checked::union_map gist_range(isl::checked::union_set uset) const;
3680   inline isl::checked::union_map intersect(isl::checked::union_map umap2) const;
3681   inline isl::checked::union_map intersect_domain(isl::checked::space space) const;
3682   inline isl::checked::union_map intersect_domain(isl::checked::union_set uset) const;
3683   inline isl::checked::union_map intersect_domain_factor_domain(isl::checked::union_map factor) const;
3684   inline isl::checked::union_map intersect_domain_factor_range(isl::checked::union_map factor) const;
3685   inline isl::checked::union_map intersect_params(isl::checked::set set) const;
3686   inline isl::checked::union_map intersect_range(isl::checked::space space) const;
3687   inline isl::checked::union_map intersect_range(isl::checked::union_set uset) const;
3688   inline isl::checked::union_map intersect_range_factor_domain(isl::checked::union_map factor) const;
3689   inline isl::checked::union_map intersect_range_factor_range(isl::checked::union_map factor) const;
3690   inline boolean is_bijective() const;
3691   inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
3692   inline boolean is_empty() const;
3693   inline boolean is_equal(const isl::checked::union_map &umap2) const;
3694   inline boolean is_injective() const;
3695   inline boolean is_single_valued() const;
3696   inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
3697   inline boolean is_subset(const isl::checked::union_map &umap2) const;
3698   inline boolean isa_map() const;
3699   inline isl::checked::union_map lexmax() const;
3700   inline isl::checked::union_map lexmin() const;
3701   inline isl::checked::union_map polyhedral_hull() const;
3702   inline isl::checked::union_map preimage_domain(isl::checked::multi_aff ma) const;
3703   inline isl::checked::union_map preimage_domain(isl::checked::multi_pw_aff mpa) const;
3704   inline isl::checked::union_map preimage_domain(isl::checked::pw_multi_aff pma) const;
3705   inline isl::checked::union_map preimage_domain(isl::checked::union_pw_multi_aff upma) const;
3706   inline isl::checked::union_map preimage_range(isl::checked::multi_aff ma) const;
3707   inline isl::checked::union_map preimage_range(isl::checked::pw_multi_aff pma) const;
3708   inline isl::checked::union_map preimage_range(isl::checked::union_pw_multi_aff upma) const;
3709   inline isl::checked::union_map product(isl::checked::union_map umap2) const;
3710   inline isl::checked::union_map project_out_all_params() const;
3711   inline isl::checked::union_set range() const;
3712   inline isl::checked::union_map range_factor_domain() const;
3713   inline isl::checked::union_map range_factor_range() const;
3714   inline isl::checked::union_map range_map() const;
3715   inline isl::checked::union_map range_product(isl::checked::union_map umap2) const;
3716   inline isl::checked::union_map range_reverse() const;
3717   inline isl::checked::union_map reverse() const;
3718   inline isl::checked::space space() const;
3719   inline isl::checked::space get_space() const;
3720   inline isl::checked::union_map subtract(isl::checked::union_map umap2) const;
3721   inline isl::checked::union_map subtract_domain(isl::checked::union_set dom) const;
3722   inline isl::checked::union_map subtract_range(isl::checked::union_set dom) const;
3723   inline isl::checked::union_map uncurry() const;
3724   inline isl::checked::union_map unite(isl::checked::union_map umap2) const;
3725   inline isl::checked::union_map universe() const;
3726   inline isl::checked::union_set wrap() const;
3727   inline isl::checked::union_map zip() const;
3728 };
3729 
3730 // declarations for isl::union_pw_aff
3731 inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3732 inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3733 
3734 class union_pw_aff {
3735   friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3736   friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3737 
3738 protected:
3739   isl_union_pw_aff *ptr = nullptr;
3740 
3741   inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
3742 
3743 public:
3744   inline /* implicit */ union_pw_aff();
3745   inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
3746   inline /* implicit */ union_pw_aff(isl::checked::aff aff);
3747   inline /* implicit */ union_pw_aff(isl::checked::pw_aff pa);
3748   inline explicit union_pw_aff(isl::checked::ctx ctx, const std::string &str);
3749   inline union_pw_aff &operator=(union_pw_aff obj);
3750   inline ~union_pw_aff();
3751   inline __isl_give isl_union_pw_aff *copy() const &;
3752   inline __isl_give isl_union_pw_aff *copy() && = delete;
3753   inline __isl_keep isl_union_pw_aff *get() const;
3754   inline __isl_give isl_union_pw_aff *release();
3755   inline bool is_null() const;
3756   inline isl::checked::ctx ctx() const;
3757 
3758   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
3759   inline isl::checked::union_pw_aff add(isl::checked::union_pw_aff upa2) const;
3760   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
3761   inline isl::checked::union_pw_aff add(const isl::checked::aff &upa2) const;
3762   inline isl::checked::union_pw_aff add(const isl::checked::pw_aff &upa2) const;
3763   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
3764   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3765   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3766   inline isl::checked::union_map as_union_map() const;
3767   inline isl::checked::union_pw_aff at(int pos) const;
3768   inline isl::checked::union_set bind(const isl::checked::multi_id &tuple) const;
3769   inline isl::checked::union_set bind(isl::checked::id id) const;
3770   inline isl::checked::union_set bind(const std::string &id) const;
3771   inline isl::checked::union_pw_aff coalesce() const;
3772   inline isl::checked::union_set domain() const;
3773   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
3774   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
3775   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
3776   inline isl::checked::union_pw_aff gist(isl::checked::union_set context) const;
3777   inline boolean has_range_tuple_id() const;
3778   inline isl::checked::union_pw_aff intersect_domain(isl::checked::space space) const;
3779   inline isl::checked::union_pw_aff intersect_domain(isl::checked::union_set uset) const;
3780   inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
3781   inline isl::checked::union_pw_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
3782   inline isl::checked::union_pw_aff intersect_params(isl::checked::set set) const;
3783   inline boolean involves_locals() const;
3784   inline boolean involves_nan() const;
3785   inline boolean isa_pw_multi_aff() const;
3786   inline isl::checked::union_pw_aff_list list() const;
3787   inline isl::checked::multi_union_pw_aff neg() const;
3788   inline boolean plain_is_empty() const;
3789   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
3790   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
3791   inline isl::checked::union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
3792   inline isl::checked::union_pw_multi_aff range_factor_domain() const;
3793   inline isl::checked::union_pw_multi_aff range_factor_range() const;
3794   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
3795   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
3796   inline isl::checked::id range_tuple_id() const;
3797   inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
3798   inline isl::checked::multi_union_pw_aff scale(const isl::checked::multi_val &mv) const;
3799   inline isl::checked::multi_union_pw_aff scale(const isl::checked::val &v) const;
3800   inline isl::checked::multi_union_pw_aff scale(long v) const;
3801   inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::multi_val &mv) const;
3802   inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::val &v) const;
3803   inline isl::checked::multi_union_pw_aff scale_down(long v) const;
3804   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
3805   inline isl::checked::multi_union_pw_aff set_range_tuple(const isl::checked::id &id) const;
3806   inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
3807   inline class size size() const;
3808   inline isl::checked::space space() const;
3809   inline isl::checked::space get_space() const;
3810   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
3811   inline isl::checked::union_pw_aff sub(isl::checked::union_pw_aff upa2) const;
3812   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
3813   inline isl::checked::union_pw_aff sub(const isl::checked::aff &upa2) const;
3814   inline isl::checked::union_pw_aff sub(const isl::checked::pw_aff &upa2) const;
3815   inline isl::checked::union_pw_aff subtract_domain(isl::checked::space space) const;
3816   inline isl::checked::union_pw_aff subtract_domain(isl::checked::union_set uset) const;
3817   inline isl::checked::union_pw_aff_list to_list() const;
3818   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
3819   inline isl::checked::union_pw_aff union_add(isl::checked::union_pw_aff upa2) const;
3820   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
3821   inline isl::checked::union_pw_aff union_add(const isl::checked::aff &upa2) const;
3822   inline isl::checked::union_pw_aff union_add(const isl::checked::pw_aff &upa2) const;
3823 };
3824 
3825 // declarations for isl::union_pw_aff_list
3826 inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3827 inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3828 
3829 class union_pw_aff_list {
3830   friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3831   friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3832 
3833 protected:
3834   isl_union_pw_aff_list *ptr = nullptr;
3835 
3836   inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3837 
3838 public:
3839   inline /* implicit */ union_pw_aff_list();
3840   inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
3841   inline explicit union_pw_aff_list(isl::checked::ctx ctx, int n);
3842   inline explicit union_pw_aff_list(isl::checked::union_pw_aff el);
3843   inline union_pw_aff_list &operator=(union_pw_aff_list obj);
3844   inline ~union_pw_aff_list();
3845   inline __isl_give isl_union_pw_aff_list *copy() const &;
3846   inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3847   inline __isl_keep isl_union_pw_aff_list *get() const;
3848   inline __isl_give isl_union_pw_aff_list *release();
3849   inline bool is_null() const;
3850   inline isl::checked::ctx ctx() const;
3851 
3852   inline isl::checked::union_pw_aff_list add(isl::checked::union_pw_aff el) const;
3853   inline isl::checked::union_pw_aff at(int index) const;
3854   inline isl::checked::union_pw_aff get_at(int index) const;
3855   inline isl::checked::union_pw_aff_list clear() const;
3856   inline isl::checked::union_pw_aff_list concat(isl::checked::union_pw_aff_list list2) const;
3857   inline isl::checked::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
3858   inline stat foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const;
3859   inline isl::checked::union_pw_aff_list insert(unsigned int pos, isl::checked::union_pw_aff el) const;
3860   inline class size size() const;
3861 };
3862 
3863 // declarations for isl::union_pw_multi_aff
3864 inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3865 inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3866 
3867 class union_pw_multi_aff {
3868   friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3869   friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3870 
3871 protected:
3872   isl_union_pw_multi_aff *ptr = nullptr;
3873 
3874   inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3875 
3876 public:
3877   inline /* implicit */ union_pw_multi_aff();
3878   inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
3879   inline /* implicit */ union_pw_multi_aff(isl::checked::multi_aff ma);
3880   inline /* implicit */ union_pw_multi_aff(isl::checked::pw_multi_aff pma);
3881   inline /* implicit */ union_pw_multi_aff(isl::checked::union_pw_aff upa);
3882   inline explicit union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
3883   inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
3884   inline ~union_pw_multi_aff();
3885   inline __isl_give isl_union_pw_multi_aff *copy() const &;
3886   inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
3887   inline __isl_keep isl_union_pw_multi_aff *get() const;
3888   inline __isl_give isl_union_pw_multi_aff *release();
3889   inline bool is_null() const;
3890   inline isl::checked::ctx ctx() const;
3891 
3892   inline isl::checked::union_pw_multi_aff add(isl::checked::union_pw_multi_aff upma2) const;
3893   inline isl::checked::union_pw_multi_aff apply(isl::checked::union_pw_multi_aff upma2) const;
3894   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3895   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3896   inline isl::checked::union_map as_union_map() const;
3897   inline isl::checked::union_pw_multi_aff coalesce() const;
3898   inline isl::checked::union_set domain() const;
3899   static inline isl::checked::union_pw_multi_aff empty(isl::checked::ctx ctx);
3900   inline isl::checked::pw_multi_aff extract_pw_multi_aff(isl::checked::space space) const;
3901   inline isl::checked::union_pw_multi_aff flat_range_product(isl::checked::union_pw_multi_aff upma2) const;
3902   inline isl::checked::union_pw_multi_aff gist(isl::checked::union_set context) const;
3903   inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::space space) const;
3904   inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::union_set uset) const;
3905   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
3906   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
3907   inline isl::checked::union_pw_multi_aff intersect_params(isl::checked::set set) const;
3908   inline boolean involves_locals() const;
3909   inline boolean isa_pw_multi_aff() const;
3910   inline boolean plain_is_empty() const;
3911   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const;
3912   inline isl::checked::union_pw_multi_aff pullback(isl::checked::union_pw_multi_aff upma2) const;
3913   inline isl::checked::union_pw_multi_aff range_factor_domain() const;
3914   inline isl::checked::union_pw_multi_aff range_factor_range() const;
3915   inline isl::checked::union_pw_multi_aff range_product(isl::checked::union_pw_multi_aff upma2) const;
3916   inline isl::checked::space space() const;
3917   inline isl::checked::space get_space() const;
3918   inline isl::checked::union_pw_multi_aff sub(isl::checked::union_pw_multi_aff upma2) const;
3919   inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::space space) const;
3920   inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::union_set uset) const;
3921   inline isl::checked::union_pw_multi_aff union_add(isl::checked::union_pw_multi_aff upma2) const;
3922 };
3923 
3924 // declarations for isl::union_set
3925 inline union_set manage(__isl_take isl_union_set *ptr);
3926 inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3927 
3928 class union_set {
3929   friend inline union_set manage(__isl_take isl_union_set *ptr);
3930   friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3931 
3932 protected:
3933   isl_union_set *ptr = nullptr;
3934 
3935   inline explicit union_set(__isl_take isl_union_set *ptr);
3936 
3937 public:
3938   inline /* implicit */ union_set();
3939   inline /* implicit */ union_set(const union_set &obj);
3940   inline /* implicit */ union_set(isl::checked::basic_set bset);
3941   inline /* implicit */ union_set(isl::checked::point pnt);
3942   inline /* implicit */ union_set(isl::checked::set set);
3943   inline explicit union_set(isl::checked::ctx ctx, const std::string &str);
3944   inline union_set &operator=(union_set obj);
3945   inline ~union_set();
3946   inline __isl_give isl_union_set *copy() const &;
3947   inline __isl_give isl_union_set *copy() && = delete;
3948   inline __isl_keep isl_union_set *get() const;
3949   inline __isl_give isl_union_set *release();
3950   inline bool is_null() const;
3951   inline isl::checked::ctx ctx() const;
3952 
3953   inline isl::checked::union_set affine_hull() const;
3954   inline isl::checked::union_set apply(isl::checked::union_map umap) const;
3955   inline isl::checked::set as_set() const;
3956   inline isl::checked::union_set coalesce() const;
3957   inline isl::checked::union_set compute_divs() const;
3958   inline isl::checked::union_set detect_equalities() const;
3959   static inline isl::checked::union_set empty(isl::checked::ctx ctx);
3960   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
3961   inline isl::checked::set extract_set(isl::checked::space space) const;
3962   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
3963   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
3964   inline isl::checked::union_set gist(isl::checked::union_set context) const;
3965   inline isl::checked::union_set gist_params(isl::checked::set set) const;
3966   inline isl::checked::union_map identity() const;
3967   inline isl::checked::union_set intersect(isl::checked::union_set uset2) const;
3968   inline isl::checked::union_set intersect_params(isl::checked::set set) const;
3969   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
3970   inline boolean is_empty() const;
3971   inline boolean is_equal(const isl::checked::union_set &uset2) const;
3972   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
3973   inline boolean is_subset(const isl::checked::union_set &uset2) const;
3974   inline boolean isa_set() const;
3975   inline isl::checked::union_set lexmax() const;
3976   inline isl::checked::union_set lexmin() const;
3977   inline isl::checked::union_set polyhedral_hull() const;
3978   inline isl::checked::union_set preimage(isl::checked::multi_aff ma) const;
3979   inline isl::checked::union_set preimage(isl::checked::pw_multi_aff pma) const;
3980   inline isl::checked::union_set preimage(isl::checked::union_pw_multi_aff upma) const;
3981   inline isl::checked::point sample_point() const;
3982   inline isl::checked::space space() const;
3983   inline isl::checked::space get_space() const;
3984   inline isl::checked::union_set subtract(isl::checked::union_set uset2) const;
3985   inline isl::checked::union_set_list to_list() const;
3986   inline isl::checked::union_set unite(isl::checked::union_set uset2) const;
3987   inline isl::checked::union_set universe() const;
3988   inline isl::checked::union_map unwrap() const;
3989 };
3990 
3991 // declarations for isl::union_set_list
3992 inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3993 inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3994 
3995 class union_set_list {
3996   friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3997   friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3998 
3999 protected:
4000   isl_union_set_list *ptr = nullptr;
4001 
4002   inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
4003 
4004 public:
4005   inline /* implicit */ union_set_list();
4006   inline /* implicit */ union_set_list(const union_set_list &obj);
4007   inline explicit union_set_list(isl::checked::ctx ctx, int n);
4008   inline explicit union_set_list(isl::checked::union_set el);
4009   inline union_set_list &operator=(union_set_list obj);
4010   inline ~union_set_list();
4011   inline __isl_give isl_union_set_list *copy() const &;
4012   inline __isl_give isl_union_set_list *copy() && = delete;
4013   inline __isl_keep isl_union_set_list *get() const;
4014   inline __isl_give isl_union_set_list *release();
4015   inline bool is_null() const;
4016   inline isl::checked::ctx ctx() const;
4017 
4018   inline isl::checked::union_set_list add(isl::checked::union_set el) const;
4019   inline isl::checked::union_set at(int index) const;
4020   inline isl::checked::union_set get_at(int index) const;
4021   inline isl::checked::union_set_list clear() const;
4022   inline isl::checked::union_set_list concat(isl::checked::union_set_list list2) const;
4023   inline isl::checked::union_set_list drop(unsigned int first, unsigned int n) const;
4024   inline stat foreach(const std::function<stat(isl::checked::union_set)> &fn) const;
4025   inline isl::checked::union_set_list insert(unsigned int pos, isl::checked::union_set el) const;
4026   inline class size size() const;
4027 };
4028 
4029 // declarations for isl::val
4030 inline val manage(__isl_take isl_val *ptr);
4031 inline val manage_copy(__isl_keep isl_val *ptr);
4032 
4033 class val {
4034   friend inline val manage(__isl_take isl_val *ptr);
4035   friend inline val manage_copy(__isl_keep isl_val *ptr);
4036 
4037 protected:
4038   isl_val *ptr = nullptr;
4039 
4040   inline explicit val(__isl_take isl_val *ptr);
4041 
4042 public:
4043   inline /* implicit */ val();
4044   inline /* implicit */ val(const val &obj);
4045   inline explicit val(isl::checked::ctx ctx, long i);
4046   inline explicit val(isl::checked::ctx ctx, const std::string &str);
4047   inline val &operator=(val obj);
4048   inline ~val();
4049   inline __isl_give isl_val *copy() const &;
4050   inline __isl_give isl_val *copy() && = delete;
4051   inline __isl_keep isl_val *get() const;
4052   inline __isl_give isl_val *release();
4053   inline bool is_null() const;
4054   inline isl::checked::ctx ctx() const;
4055 
4056   inline isl::checked::val abs() const;
4057   inline boolean abs_eq(const isl::checked::val &v2) const;
4058   inline boolean abs_eq(long v2) const;
4059   inline isl::checked::val add(isl::checked::val v2) const;
4060   inline isl::checked::val add(long v2) const;
4061   inline isl::checked::val ceil() const;
4062   inline int cmp_si(long i) const;
4063   inline long den_si() const;
4064   inline long get_den_si() const;
4065   inline isl::checked::val div(isl::checked::val v2) const;
4066   inline isl::checked::val div(long v2) const;
4067   inline boolean eq(const isl::checked::val &v2) const;
4068   inline boolean eq(long v2) const;
4069   inline isl::checked::val floor() const;
4070   inline isl::checked::val gcd(isl::checked::val v2) const;
4071   inline isl::checked::val gcd(long v2) const;
4072   inline boolean ge(const isl::checked::val &v2) const;
4073   inline boolean ge(long v2) const;
4074   inline boolean gt(const isl::checked::val &v2) const;
4075   inline boolean gt(long v2) const;
4076   static inline isl::checked::val infty(isl::checked::ctx ctx);
4077   inline isl::checked::val inv() const;
4078   inline boolean is_divisible_by(const isl::checked::val &v2) const;
4079   inline boolean is_divisible_by(long v2) const;
4080   inline boolean is_infty() const;
4081   inline boolean is_int() const;
4082   inline boolean is_nan() const;
4083   inline boolean is_neg() const;
4084   inline boolean is_neginfty() const;
4085   inline boolean is_negone() const;
4086   inline boolean is_nonneg() const;
4087   inline boolean is_nonpos() const;
4088   inline boolean is_one() const;
4089   inline boolean is_pos() const;
4090   inline boolean is_rat() const;
4091   inline boolean is_zero() const;
4092   inline boolean le(const isl::checked::val &v2) const;
4093   inline boolean le(long v2) const;
4094   inline boolean lt(const isl::checked::val &v2) const;
4095   inline boolean lt(long v2) const;
4096   inline isl::checked::val max(isl::checked::val v2) const;
4097   inline isl::checked::val max(long v2) const;
4098   inline isl::checked::val min(isl::checked::val v2) const;
4099   inline isl::checked::val min(long v2) const;
4100   inline isl::checked::val mod(isl::checked::val v2) const;
4101   inline isl::checked::val mod(long v2) const;
4102   inline isl::checked::val mul(isl::checked::val v2) const;
4103   inline isl::checked::val mul(long v2) const;
4104   static inline isl::checked::val nan(isl::checked::ctx ctx);
4105   inline boolean ne(const isl::checked::val &v2) const;
4106   inline boolean ne(long v2) const;
4107   inline isl::checked::val neg() const;
4108   static inline isl::checked::val neginfty(isl::checked::ctx ctx);
4109   static inline isl::checked::val negone(isl::checked::ctx ctx);
4110   inline long num_si() const;
4111   inline long get_num_si() const;
4112   static inline isl::checked::val one(isl::checked::ctx ctx);
4113   inline isl::checked::val pow2() const;
4114   inline int sgn() const;
4115   inline isl::checked::val sub(isl::checked::val v2) const;
4116   inline isl::checked::val sub(long v2) const;
4117   inline isl::checked::val_list to_list() const;
4118   inline isl::checked::val trunc() const;
4119   static inline isl::checked::val zero(isl::checked::ctx ctx);
4120 };
4121 
4122 // declarations for isl::val_list
4123 inline val_list manage(__isl_take isl_val_list *ptr);
4124 inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4125 
4126 class val_list {
4127   friend inline val_list manage(__isl_take isl_val_list *ptr);
4128   friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4129 
4130 protected:
4131   isl_val_list *ptr = nullptr;
4132 
4133   inline explicit val_list(__isl_take isl_val_list *ptr);
4134 
4135 public:
4136   inline /* implicit */ val_list();
4137   inline /* implicit */ val_list(const val_list &obj);
4138   inline explicit val_list(isl::checked::ctx ctx, int n);
4139   inline explicit val_list(isl::checked::val el);
4140   inline val_list &operator=(val_list obj);
4141   inline ~val_list();
4142   inline __isl_give isl_val_list *copy() const &;
4143   inline __isl_give isl_val_list *copy() && = delete;
4144   inline __isl_keep isl_val_list *get() const;
4145   inline __isl_give isl_val_list *release();
4146   inline bool is_null() const;
4147   inline isl::checked::ctx ctx() const;
4148 
4149   inline isl::checked::val_list add(isl::checked::val el) const;
4150   inline isl::checked::val_list add(long el) const;
4151   inline isl::checked::val at(int index) const;
4152   inline isl::checked::val get_at(int index) const;
4153   inline isl::checked::val_list clear() const;
4154   inline isl::checked::val_list concat(isl::checked::val_list list2) const;
4155   inline isl::checked::val_list drop(unsigned int first, unsigned int n) const;
4156   inline stat foreach(const std::function<stat(isl::checked::val)> &fn) const;
4157   inline isl::checked::val_list insert(unsigned int pos, isl::checked::val el) const;
4158   inline isl::checked::val_list insert(unsigned int pos, long el) const;
4159   inline class size size() const;
4160 };
4161 
4162 // implementations for isl::aff
manage(__isl_take isl_aff * ptr)4163 aff manage(__isl_take isl_aff *ptr) {
4164   return aff(ptr);
4165 }
manage_copy(__isl_keep isl_aff * ptr)4166 aff manage_copy(__isl_keep isl_aff *ptr) {
4167   ptr = isl_aff_copy(ptr);
4168   return aff(ptr);
4169 }
4170 
aff()4171 aff::aff()
4172     : ptr(nullptr) {}
4173 
aff(const aff & obj)4174 aff::aff(const aff &obj)
4175     : ptr(nullptr)
4176 {
4177   ptr = obj.copy();
4178 }
4179 
aff(__isl_take isl_aff * ptr)4180 aff::aff(__isl_take isl_aff *ptr)
4181     : ptr(ptr) {}
4182 
aff(isl::checked::ctx ctx,const std::string & str)4183 aff::aff(isl::checked::ctx ctx, const std::string &str)
4184 {
4185   auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4186   ptr = res;
4187 }
4188 
4189 aff &aff::operator=(aff obj) {
4190   std::swap(this->ptr, obj.ptr);
4191   return *this;
4192 }
4193 
~aff()4194 aff::~aff() {
4195   if (ptr)
4196     isl_aff_free(ptr);
4197 }
4198 
copy()4199 __isl_give isl_aff *aff::copy() const & {
4200   return isl_aff_copy(ptr);
4201 }
4202 
get()4203 __isl_keep isl_aff *aff::get() const {
4204   return ptr;
4205 }
4206 
release()4207 __isl_give isl_aff *aff::release() {
4208   isl_aff *tmp = ptr;
4209   ptr = nullptr;
4210   return tmp;
4211 }
4212 
is_null()4213 bool aff::is_null() const {
4214   return ptr == nullptr;
4215 }
4216 
ctx()4217 isl::checked::ctx aff::ctx() const {
4218   return isl::checked::ctx(isl_aff_get_ctx(ptr));
4219 }
4220 
add(isl::checked::aff aff2)4221 isl::checked::aff aff::add(isl::checked::aff aff2) const
4222 {
4223   auto res = isl_aff_add(copy(), aff2.release());
4224   return manage(res);
4225 }
4226 
add(const isl::checked::multi_aff & multi2)4227 isl::checked::multi_aff aff::add(const isl::checked::multi_aff &multi2) const
4228 {
4229   return isl::checked::multi_aff(*this).add(multi2);
4230 }
4231 
add(const isl::checked::multi_pw_aff & multi2)4232 isl::checked::multi_pw_aff aff::add(const isl::checked::multi_pw_aff &multi2) const
4233 {
4234   return isl::checked::pw_aff(*this).add(multi2);
4235 }
4236 
add(const isl::checked::multi_union_pw_aff & multi2)4237 isl::checked::multi_union_pw_aff aff::add(const isl::checked::multi_union_pw_aff &multi2) const
4238 {
4239   return isl::checked::pw_aff(*this).add(multi2);
4240 }
4241 
add(const isl::checked::pw_aff & pwaff2)4242 isl::checked::pw_aff aff::add(const isl::checked::pw_aff &pwaff2) const
4243 {
4244   return isl::checked::pw_aff(*this).add(pwaff2);
4245 }
4246 
add(const isl::checked::pw_multi_aff & pma2)4247 isl::checked::pw_multi_aff aff::add(const isl::checked::pw_multi_aff &pma2) const
4248 {
4249   return isl::checked::pw_aff(*this).add(pma2);
4250 }
4251 
add(const isl::checked::union_pw_aff & upa2)4252 isl::checked::union_pw_aff aff::add(const isl::checked::union_pw_aff &upa2) const
4253 {
4254   return isl::checked::pw_aff(*this).add(upa2);
4255 }
4256 
add(const isl::checked::union_pw_multi_aff & upma2)4257 isl::checked::union_pw_multi_aff aff::add(const isl::checked::union_pw_multi_aff &upma2) const
4258 {
4259   return isl::checked::pw_aff(*this).add(upma2);
4260 }
4261 
add_constant(isl::checked::val v)4262 isl::checked::aff aff::add_constant(isl::checked::val v) const
4263 {
4264   auto res = isl_aff_add_constant_val(copy(), v.release());
4265   return manage(res);
4266 }
4267 
add_constant(long v)4268 isl::checked::aff aff::add_constant(long v) const
4269 {
4270   return this->add_constant(isl::checked::val(ctx(), v));
4271 }
4272 
add_constant(const isl::checked::multi_val & mv)4273 isl::checked::multi_aff aff::add_constant(const isl::checked::multi_val &mv) const
4274 {
4275   return isl::checked::multi_aff(*this).add_constant(mv);
4276 }
4277 
apply(const isl::checked::union_pw_multi_aff & upma2)4278 isl::checked::union_pw_multi_aff aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
4279 {
4280   return isl::checked::pw_aff(*this).apply(upma2);
4281 }
4282 
as_aff()4283 isl::checked::aff aff::as_aff() const
4284 {
4285   return isl::checked::pw_aff(*this).as_aff();
4286 }
4287 
as_map()4288 isl::checked::map aff::as_map() const
4289 {
4290   return isl::checked::pw_aff(*this).as_map();
4291 }
4292 
as_multi_aff()4293 isl::checked::multi_aff aff::as_multi_aff() const
4294 {
4295   return isl::checked::pw_aff(*this).as_multi_aff();
4296 }
4297 
as_multi_union_pw_aff()4298 isl::checked::multi_union_pw_aff aff::as_multi_union_pw_aff() const
4299 {
4300   return isl::checked::pw_aff(*this).as_multi_union_pw_aff();
4301 }
4302 
as_pw_multi_aff()4303 isl::checked::pw_multi_aff aff::as_pw_multi_aff() const
4304 {
4305   return isl::checked::pw_aff(*this).as_pw_multi_aff();
4306 }
4307 
as_set()4308 isl::checked::set aff::as_set() const
4309 {
4310   return isl::checked::multi_aff(*this).as_set();
4311 }
4312 
as_union_map()4313 isl::checked::union_map aff::as_union_map() const
4314 {
4315   return isl::checked::pw_aff(*this).as_union_map();
4316 }
4317 
at(int pos)4318 isl::checked::aff aff::at(int pos) const
4319 {
4320   return isl::checked::multi_aff(*this).at(pos);
4321 }
4322 
bind(isl::checked::id id)4323 isl::checked::basic_set aff::bind(isl::checked::id id) const
4324 {
4325   auto res = isl_aff_bind_id(copy(), id.release());
4326   return manage(res);
4327 }
4328 
bind(const std::string & id)4329 isl::checked::basic_set aff::bind(const std::string &id) const
4330 {
4331   return this->bind(isl::checked::id(ctx(), id));
4332 }
4333 
bind(const isl::checked::multi_id & tuple)4334 isl::checked::basic_set aff::bind(const isl::checked::multi_id &tuple) const
4335 {
4336   return isl::checked::multi_aff(*this).bind(tuple);
4337 }
4338 
bind_domain(const isl::checked::multi_id & tuple)4339 isl::checked::pw_aff aff::bind_domain(const isl::checked::multi_id &tuple) const
4340 {
4341   return isl::checked::pw_aff(*this).bind_domain(tuple);
4342 }
4343 
bind_domain_wrapped_domain(const isl::checked::multi_id & tuple)4344 isl::checked::pw_aff aff::bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const
4345 {
4346   return isl::checked::pw_aff(*this).bind_domain_wrapped_domain(tuple);
4347 }
4348 
ceil()4349 isl::checked::aff aff::ceil() const
4350 {
4351   auto res = isl_aff_ceil(copy());
4352   return manage(res);
4353 }
4354 
coalesce()4355 isl::checked::pw_aff aff::coalesce() const
4356 {
4357   return isl::checked::pw_aff(*this).coalesce();
4358 }
4359 
cond(const isl::checked::pw_aff & pwaff_true,const isl::checked::pw_aff & pwaff_false)4360 isl::checked::pw_aff aff::cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const
4361 {
4362   return isl::checked::pw_aff(*this).cond(pwaff_true, pwaff_false);
4363 }
4364 
constant_multi_val()4365 isl::checked::multi_val aff::constant_multi_val() const
4366 {
4367   return isl::checked::multi_aff(*this).constant_multi_val();
4368 }
4369 
constant_val()4370 isl::checked::val aff::constant_val() const
4371 {
4372   auto res = isl_aff_get_constant_val(get());
4373   return manage(res);
4374 }
4375 
get_constant_val()4376 isl::checked::val aff::get_constant_val() const
4377 {
4378   return constant_val();
4379 }
4380 
div(isl::checked::aff aff2)4381 isl::checked::aff aff::div(isl::checked::aff aff2) const
4382 {
4383   auto res = isl_aff_div(copy(), aff2.release());
4384   return manage(res);
4385 }
4386 
div(const isl::checked::pw_aff & pa2)4387 isl::checked::pw_aff aff::div(const isl::checked::pw_aff &pa2) const
4388 {
4389   return isl::checked::pw_aff(*this).div(pa2);
4390 }
4391 
domain()4392 isl::checked::set aff::domain() const
4393 {
4394   return isl::checked::pw_aff(*this).domain();
4395 }
4396 
eq_set(isl::checked::aff aff2)4397 isl::checked::set aff::eq_set(isl::checked::aff aff2) const
4398 {
4399   auto res = isl_aff_eq_set(copy(), aff2.release());
4400   return manage(res);
4401 }
4402 
eq_set(const isl::checked::pw_aff & pwaff2)4403 isl::checked::set aff::eq_set(const isl::checked::pw_aff &pwaff2) const
4404 {
4405   return isl::checked::pw_aff(*this).eq_set(pwaff2);
4406 }
4407 
eval(isl::checked::point pnt)4408 isl::checked::val aff::eval(isl::checked::point pnt) const
4409 {
4410   auto res = isl_aff_eval(copy(), pnt.release());
4411   return manage(res);
4412 }
4413 
extract_pw_multi_aff(const isl::checked::space & space)4414 isl::checked::pw_multi_aff aff::extract_pw_multi_aff(const isl::checked::space &space) const
4415 {
4416   return isl::checked::pw_aff(*this).extract_pw_multi_aff(space);
4417 }
4418 
flat_range_product(const isl::checked::multi_aff & multi2)4419 isl::checked::multi_aff aff::flat_range_product(const isl::checked::multi_aff &multi2) const
4420 {
4421   return isl::checked::multi_aff(*this).flat_range_product(multi2);
4422 }
4423 
flat_range_product(const isl::checked::multi_pw_aff & multi2)4424 isl::checked::multi_pw_aff aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
4425 {
4426   return isl::checked::pw_aff(*this).flat_range_product(multi2);
4427 }
4428 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)4429 isl::checked::multi_union_pw_aff aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
4430 {
4431   return isl::checked::pw_aff(*this).flat_range_product(multi2);
4432 }
4433 
flat_range_product(const isl::checked::pw_multi_aff & pma2)4434 isl::checked::pw_multi_aff aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
4435 {
4436   return isl::checked::pw_aff(*this).flat_range_product(pma2);
4437 }
4438 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)4439 isl::checked::union_pw_multi_aff aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
4440 {
4441   return isl::checked::pw_aff(*this).flat_range_product(upma2);
4442 }
4443 
floor()4444 isl::checked::aff aff::floor() const
4445 {
4446   auto res = isl_aff_floor(copy());
4447   return manage(res);
4448 }
4449 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)4450 stat aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
4451 {
4452   return isl::checked::pw_aff(*this).foreach_piece(fn);
4453 }
4454 
ge_set(isl::checked::aff aff2)4455 isl::checked::set aff::ge_set(isl::checked::aff aff2) const
4456 {
4457   auto res = isl_aff_ge_set(copy(), aff2.release());
4458   return manage(res);
4459 }
4460 
ge_set(const isl::checked::pw_aff & pwaff2)4461 isl::checked::set aff::ge_set(const isl::checked::pw_aff &pwaff2) const
4462 {
4463   return isl::checked::pw_aff(*this).ge_set(pwaff2);
4464 }
4465 
gist(isl::checked::set context)4466 isl::checked::aff aff::gist(isl::checked::set context) const
4467 {
4468   auto res = isl_aff_gist(copy(), context.release());
4469   return manage(res);
4470 }
4471 
gist(const isl::checked::union_set & context)4472 isl::checked::union_pw_aff aff::gist(const isl::checked::union_set &context) const
4473 {
4474   return isl::checked::pw_aff(*this).gist(context);
4475 }
4476 
gist(const isl::checked::basic_set & context)4477 isl::checked::aff aff::gist(const isl::checked::basic_set &context) const
4478 {
4479   return this->gist(isl::checked::set(context));
4480 }
4481 
gist(const isl::checked::point & context)4482 isl::checked::aff aff::gist(const isl::checked::point &context) const
4483 {
4484   return this->gist(isl::checked::set(context));
4485 }
4486 
gt_set(isl::checked::aff aff2)4487 isl::checked::set aff::gt_set(isl::checked::aff aff2) const
4488 {
4489   auto res = isl_aff_gt_set(copy(), aff2.release());
4490   return manage(res);
4491 }
4492 
gt_set(const isl::checked::pw_aff & pwaff2)4493 isl::checked::set aff::gt_set(const isl::checked::pw_aff &pwaff2) const
4494 {
4495   return isl::checked::pw_aff(*this).gt_set(pwaff2);
4496 }
4497 
has_range_tuple_id()4498 boolean aff::has_range_tuple_id() const
4499 {
4500   return isl::checked::multi_aff(*this).has_range_tuple_id();
4501 }
4502 
identity()4503 isl::checked::multi_aff aff::identity() const
4504 {
4505   return isl::checked::multi_aff(*this).identity();
4506 }
4507 
insert_domain(const isl::checked::space & domain)4508 isl::checked::pw_aff aff::insert_domain(const isl::checked::space &domain) const
4509 {
4510   return isl::checked::pw_aff(*this).insert_domain(domain);
4511 }
4512 
intersect_domain(const isl::checked::set & set)4513 isl::checked::pw_aff aff::intersect_domain(const isl::checked::set &set) const
4514 {
4515   return isl::checked::pw_aff(*this).intersect_domain(set);
4516 }
4517 
intersect_domain(const isl::checked::space & space)4518 isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::space &space) const
4519 {
4520   return isl::checked::pw_aff(*this).intersect_domain(space);
4521 }
4522 
intersect_domain(const isl::checked::union_set & uset)4523 isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::union_set &uset) const
4524 {
4525   return isl::checked::pw_aff(*this).intersect_domain(uset);
4526 }
4527 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)4528 isl::checked::union_pw_aff aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
4529 {
4530   return isl::checked::pw_aff(*this).intersect_domain_wrapped_domain(uset);
4531 }
4532 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)4533 isl::checked::union_pw_aff aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
4534 {
4535   return isl::checked::pw_aff(*this).intersect_domain_wrapped_range(uset);
4536 }
4537 
intersect_params(const isl::checked::set & set)4538 isl::checked::pw_aff aff::intersect_params(const isl::checked::set &set) const
4539 {
4540   return isl::checked::pw_aff(*this).intersect_params(set);
4541 }
4542 
involves_locals()4543 boolean aff::involves_locals() const
4544 {
4545   return isl::checked::multi_aff(*this).involves_locals();
4546 }
4547 
involves_nan()4548 boolean aff::involves_nan() const
4549 {
4550   return isl::checked::multi_aff(*this).involves_nan();
4551 }
4552 
involves_param(const isl::checked::id & id)4553 boolean aff::involves_param(const isl::checked::id &id) const
4554 {
4555   return isl::checked::pw_aff(*this).involves_param(id);
4556 }
4557 
involves_param(const std::string & id)4558 boolean aff::involves_param(const std::string &id) const
4559 {
4560   return this->involves_param(isl::checked::id(ctx(), id));
4561 }
4562 
involves_param(const isl::checked::id_list & list)4563 boolean aff::involves_param(const isl::checked::id_list &list) const
4564 {
4565   return isl::checked::pw_aff(*this).involves_param(list);
4566 }
4567 
is_cst()4568 boolean aff::is_cst() const
4569 {
4570   auto res = isl_aff_is_cst(get());
4571   return manage(res);
4572 }
4573 
isa_aff()4574 boolean aff::isa_aff() const
4575 {
4576   return isl::checked::pw_aff(*this).isa_aff();
4577 }
4578 
isa_multi_aff()4579 boolean aff::isa_multi_aff() const
4580 {
4581   return isl::checked::pw_aff(*this).isa_multi_aff();
4582 }
4583 
isa_pw_multi_aff()4584 boolean aff::isa_pw_multi_aff() const
4585 {
4586   return isl::checked::pw_aff(*this).isa_pw_multi_aff();
4587 }
4588 
le_set(isl::checked::aff aff2)4589 isl::checked::set aff::le_set(isl::checked::aff aff2) const
4590 {
4591   auto res = isl_aff_le_set(copy(), aff2.release());
4592   return manage(res);
4593 }
4594 
le_set(const isl::checked::pw_aff & pwaff2)4595 isl::checked::set aff::le_set(const isl::checked::pw_aff &pwaff2) const
4596 {
4597   return isl::checked::pw_aff(*this).le_set(pwaff2);
4598 }
4599 
list()4600 isl::checked::aff_list aff::list() const
4601 {
4602   return isl::checked::multi_aff(*this).list();
4603 }
4604 
lt_set(isl::checked::aff aff2)4605 isl::checked::set aff::lt_set(isl::checked::aff aff2) const
4606 {
4607   auto res = isl_aff_lt_set(copy(), aff2.release());
4608   return manage(res);
4609 }
4610 
lt_set(const isl::checked::pw_aff & pwaff2)4611 isl::checked::set aff::lt_set(const isl::checked::pw_aff &pwaff2) const
4612 {
4613   return isl::checked::pw_aff(*this).lt_set(pwaff2);
4614 }
4615 
max(const isl::checked::multi_pw_aff & multi2)4616 isl::checked::multi_pw_aff aff::max(const isl::checked::multi_pw_aff &multi2) const
4617 {
4618   return isl::checked::pw_aff(*this).max(multi2);
4619 }
4620 
max(const isl::checked::pw_aff & pwaff2)4621 isl::checked::pw_aff aff::max(const isl::checked::pw_aff &pwaff2) const
4622 {
4623   return isl::checked::pw_aff(*this).max(pwaff2);
4624 }
4625 
max_multi_val()4626 isl::checked::multi_val aff::max_multi_val() const
4627 {
4628   return isl::checked::pw_aff(*this).max_multi_val();
4629 }
4630 
min(const isl::checked::multi_pw_aff & multi2)4631 isl::checked::multi_pw_aff aff::min(const isl::checked::multi_pw_aff &multi2) const
4632 {
4633   return isl::checked::pw_aff(*this).min(multi2);
4634 }
4635 
min(const isl::checked::pw_aff & pwaff2)4636 isl::checked::pw_aff aff::min(const isl::checked::pw_aff &pwaff2) const
4637 {
4638   return isl::checked::pw_aff(*this).min(pwaff2);
4639 }
4640 
min_multi_val()4641 isl::checked::multi_val aff::min_multi_val() const
4642 {
4643   return isl::checked::pw_aff(*this).min_multi_val();
4644 }
4645 
mod(isl::checked::val mod)4646 isl::checked::aff aff::mod(isl::checked::val mod) const
4647 {
4648   auto res = isl_aff_mod_val(copy(), mod.release());
4649   return manage(res);
4650 }
4651 
mod(long mod)4652 isl::checked::aff aff::mod(long mod) const
4653 {
4654   return this->mod(isl::checked::val(ctx(), mod));
4655 }
4656 
mul(isl::checked::aff aff2)4657 isl::checked::aff aff::mul(isl::checked::aff aff2) const
4658 {
4659   auto res = isl_aff_mul(copy(), aff2.release());
4660   return manage(res);
4661 }
4662 
mul(const isl::checked::pw_aff & pwaff2)4663 isl::checked::pw_aff aff::mul(const isl::checked::pw_aff &pwaff2) const
4664 {
4665   return isl::checked::pw_aff(*this).mul(pwaff2);
4666 }
4667 
n_piece()4668 class size aff::n_piece() const
4669 {
4670   return isl::checked::pw_aff(*this).n_piece();
4671 }
4672 
ne_set(isl::checked::aff aff2)4673 isl::checked::set aff::ne_set(isl::checked::aff aff2) const
4674 {
4675   auto res = isl_aff_ne_set(copy(), aff2.release());
4676   return manage(res);
4677 }
4678 
ne_set(const isl::checked::pw_aff & pwaff2)4679 isl::checked::set aff::ne_set(const isl::checked::pw_aff &pwaff2) const
4680 {
4681   return isl::checked::pw_aff(*this).ne_set(pwaff2);
4682 }
4683 
neg()4684 isl::checked::aff aff::neg() const
4685 {
4686   auto res = isl_aff_neg(copy());
4687   return manage(res);
4688 }
4689 
plain_is_empty()4690 boolean aff::plain_is_empty() const
4691 {
4692   return isl::checked::pw_aff(*this).plain_is_empty();
4693 }
4694 
plain_is_equal(const isl::checked::multi_aff & multi2)4695 boolean aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
4696 {
4697   return isl::checked::multi_aff(*this).plain_is_equal(multi2);
4698 }
4699 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)4700 boolean aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
4701 {
4702   return isl::checked::pw_aff(*this).plain_is_equal(multi2);
4703 }
4704 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)4705 boolean aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
4706 {
4707   return isl::checked::pw_aff(*this).plain_is_equal(multi2);
4708 }
4709 
preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff & pma2)4710 isl::checked::pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
4711 {
4712   return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
4713 }
4714 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)4715 isl::checked::union_pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
4716 {
4717   return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
4718 }
4719 
product(const isl::checked::multi_aff & multi2)4720 isl::checked::multi_aff aff::product(const isl::checked::multi_aff &multi2) const
4721 {
4722   return isl::checked::multi_aff(*this).product(multi2);
4723 }
4724 
product(const isl::checked::multi_pw_aff & multi2)4725 isl::checked::multi_pw_aff aff::product(const isl::checked::multi_pw_aff &multi2) const
4726 {
4727   return isl::checked::pw_aff(*this).product(multi2);
4728 }
4729 
product(const isl::checked::pw_multi_aff & pma2)4730 isl::checked::pw_multi_aff aff::product(const isl::checked::pw_multi_aff &pma2) const
4731 {
4732   return isl::checked::pw_aff(*this).product(pma2);
4733 }
4734 
pullback(isl::checked::multi_aff ma)4735 isl::checked::aff aff::pullback(isl::checked::multi_aff ma) const
4736 {
4737   auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
4738   return manage(res);
4739 }
4740 
pullback(const isl::checked::multi_pw_aff & mpa)4741 isl::checked::pw_aff aff::pullback(const isl::checked::multi_pw_aff &mpa) const
4742 {
4743   return isl::checked::pw_aff(*this).pullback(mpa);
4744 }
4745 
pullback(const isl::checked::pw_multi_aff & pma)4746 isl::checked::pw_aff aff::pullback(const isl::checked::pw_multi_aff &pma) const
4747 {
4748   return isl::checked::pw_aff(*this).pullback(pma);
4749 }
4750 
pullback(const isl::checked::union_pw_multi_aff & upma)4751 isl::checked::union_pw_aff aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
4752 {
4753   return isl::checked::pw_aff(*this).pullback(upma);
4754 }
4755 
pullback(const isl::checked::aff & ma)4756 isl::checked::aff aff::pullback(const isl::checked::aff &ma) const
4757 {
4758   return this->pullback(isl::checked::multi_aff(ma));
4759 }
4760 
range_factor_domain()4761 isl::checked::pw_multi_aff aff::range_factor_domain() const
4762 {
4763   return isl::checked::pw_aff(*this).range_factor_domain();
4764 }
4765 
range_factor_range()4766 isl::checked::pw_multi_aff aff::range_factor_range() const
4767 {
4768   return isl::checked::pw_aff(*this).range_factor_range();
4769 }
4770 
range_product(const isl::checked::multi_aff & multi2)4771 isl::checked::multi_aff aff::range_product(const isl::checked::multi_aff &multi2) const
4772 {
4773   return isl::checked::multi_aff(*this).range_product(multi2);
4774 }
4775 
range_product(const isl::checked::multi_pw_aff & multi2)4776 isl::checked::multi_pw_aff aff::range_product(const isl::checked::multi_pw_aff &multi2) const
4777 {
4778   return isl::checked::pw_aff(*this).range_product(multi2);
4779 }
4780 
range_product(const isl::checked::multi_union_pw_aff & multi2)4781 isl::checked::multi_union_pw_aff aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
4782 {
4783   return isl::checked::pw_aff(*this).range_product(multi2);
4784 }
4785 
range_product(const isl::checked::pw_multi_aff & pma2)4786 isl::checked::pw_multi_aff aff::range_product(const isl::checked::pw_multi_aff &pma2) const
4787 {
4788   return isl::checked::pw_aff(*this).range_product(pma2);
4789 }
4790 
range_product(const isl::checked::union_pw_multi_aff & upma2)4791 isl::checked::union_pw_multi_aff aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
4792 {
4793   return isl::checked::pw_aff(*this).range_product(upma2);
4794 }
4795 
range_tuple_id()4796 isl::checked::id aff::range_tuple_id() const
4797 {
4798   return isl::checked::multi_aff(*this).range_tuple_id();
4799 }
4800 
reset_range_tuple_id()4801 isl::checked::multi_aff aff::reset_range_tuple_id() const
4802 {
4803   return isl::checked::multi_aff(*this).reset_range_tuple_id();
4804 }
4805 
scale(isl::checked::val v)4806 isl::checked::aff aff::scale(isl::checked::val v) const
4807 {
4808   auto res = isl_aff_scale_val(copy(), v.release());
4809   return manage(res);
4810 }
4811 
scale(long v)4812 isl::checked::aff aff::scale(long v) const
4813 {
4814   return this->scale(isl::checked::val(ctx(), v));
4815 }
4816 
scale(const isl::checked::multi_val & mv)4817 isl::checked::multi_aff aff::scale(const isl::checked::multi_val &mv) const
4818 {
4819   return isl::checked::multi_aff(*this).scale(mv);
4820 }
4821 
scale_down(isl::checked::val v)4822 isl::checked::aff aff::scale_down(isl::checked::val v) const
4823 {
4824   auto res = isl_aff_scale_down_val(copy(), v.release());
4825   return manage(res);
4826 }
4827 
scale_down(long v)4828 isl::checked::aff aff::scale_down(long v) const
4829 {
4830   return this->scale_down(isl::checked::val(ctx(), v));
4831 }
4832 
scale_down(const isl::checked::multi_val & mv)4833 isl::checked::multi_aff aff::scale_down(const isl::checked::multi_val &mv) const
4834 {
4835   return isl::checked::multi_aff(*this).scale_down(mv);
4836 }
4837 
set_at(int pos,const isl::checked::aff & el)4838 isl::checked::multi_aff aff::set_at(int pos, const isl::checked::aff &el) const
4839 {
4840   return isl::checked::multi_aff(*this).set_at(pos, el);
4841 }
4842 
set_at(int pos,const isl::checked::pw_aff & el)4843 isl::checked::multi_pw_aff aff::set_at(int pos, const isl::checked::pw_aff &el) const
4844 {
4845   return isl::checked::pw_aff(*this).set_at(pos, el);
4846 }
4847 
set_at(int pos,const isl::checked::union_pw_aff & el)4848 isl::checked::multi_union_pw_aff aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
4849 {
4850   return isl::checked::pw_aff(*this).set_at(pos, el);
4851 }
4852 
set_range_tuple(const isl::checked::id & id)4853 isl::checked::multi_aff aff::set_range_tuple(const isl::checked::id &id) const
4854 {
4855   return isl::checked::multi_aff(*this).set_range_tuple(id);
4856 }
4857 
set_range_tuple(const std::string & id)4858 isl::checked::multi_aff aff::set_range_tuple(const std::string &id) const
4859 {
4860   return this->set_range_tuple(isl::checked::id(ctx(), id));
4861 }
4862 
size()4863 class size aff::size() const
4864 {
4865   return isl::checked::multi_aff(*this).size();
4866 }
4867 
space()4868 isl::checked::space aff::space() const
4869 {
4870   return isl::checked::multi_aff(*this).space();
4871 }
4872 
sub(isl::checked::aff aff2)4873 isl::checked::aff aff::sub(isl::checked::aff aff2) const
4874 {
4875   auto res = isl_aff_sub(copy(), aff2.release());
4876   return manage(res);
4877 }
4878 
sub(const isl::checked::multi_aff & multi2)4879 isl::checked::multi_aff aff::sub(const isl::checked::multi_aff &multi2) const
4880 {
4881   return isl::checked::multi_aff(*this).sub(multi2);
4882 }
4883 
sub(const isl::checked::multi_pw_aff & multi2)4884 isl::checked::multi_pw_aff aff::sub(const isl::checked::multi_pw_aff &multi2) const
4885 {
4886   return isl::checked::pw_aff(*this).sub(multi2);
4887 }
4888 
sub(const isl::checked::multi_union_pw_aff & multi2)4889 isl::checked::multi_union_pw_aff aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
4890 {
4891   return isl::checked::pw_aff(*this).sub(multi2);
4892 }
4893 
sub(const isl::checked::pw_aff & pwaff2)4894 isl::checked::pw_aff aff::sub(const isl::checked::pw_aff &pwaff2) const
4895 {
4896   return isl::checked::pw_aff(*this).sub(pwaff2);
4897 }
4898 
sub(const isl::checked::pw_multi_aff & pma2)4899 isl::checked::pw_multi_aff aff::sub(const isl::checked::pw_multi_aff &pma2) const
4900 {
4901   return isl::checked::pw_aff(*this).sub(pma2);
4902 }
4903 
sub(const isl::checked::union_pw_aff & upa2)4904 isl::checked::union_pw_aff aff::sub(const isl::checked::union_pw_aff &upa2) const
4905 {
4906   return isl::checked::pw_aff(*this).sub(upa2);
4907 }
4908 
sub(const isl::checked::union_pw_multi_aff & upma2)4909 isl::checked::union_pw_multi_aff aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
4910 {
4911   return isl::checked::pw_aff(*this).sub(upma2);
4912 }
4913 
subtract_domain(const isl::checked::set & set)4914 isl::checked::pw_aff aff::subtract_domain(const isl::checked::set &set) const
4915 {
4916   return isl::checked::pw_aff(*this).subtract_domain(set);
4917 }
4918 
subtract_domain(const isl::checked::space & space)4919 isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::space &space) const
4920 {
4921   return isl::checked::pw_aff(*this).subtract_domain(space);
4922 }
4923 
subtract_domain(const isl::checked::union_set & uset)4924 isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::union_set &uset) const
4925 {
4926   return isl::checked::pw_aff(*this).subtract_domain(uset);
4927 }
4928 
tdiv_q(const isl::checked::pw_aff & pa2)4929 isl::checked::pw_aff aff::tdiv_q(const isl::checked::pw_aff &pa2) const
4930 {
4931   return isl::checked::pw_aff(*this).tdiv_q(pa2);
4932 }
4933 
tdiv_r(const isl::checked::pw_aff & pa2)4934 isl::checked::pw_aff aff::tdiv_r(const isl::checked::pw_aff &pa2) const
4935 {
4936   return isl::checked::pw_aff(*this).tdiv_r(pa2);
4937 }
4938 
to_list()4939 isl::checked::aff_list aff::to_list() const
4940 {
4941   auto res = isl_aff_to_list(copy());
4942   return manage(res);
4943 }
4944 
to_multi_pw_aff()4945 isl::checked::multi_pw_aff aff::to_multi_pw_aff() const
4946 {
4947   return isl::checked::multi_aff(*this).to_multi_pw_aff();
4948 }
4949 
to_multi_union_pw_aff()4950 isl::checked::multi_union_pw_aff aff::to_multi_union_pw_aff() const
4951 {
4952   return isl::checked::multi_aff(*this).to_multi_union_pw_aff();
4953 }
4954 
to_pw_multi_aff()4955 isl::checked::pw_multi_aff aff::to_pw_multi_aff() const
4956 {
4957   return isl::checked::multi_aff(*this).to_pw_multi_aff();
4958 }
4959 
to_union_pw_aff()4960 isl::checked::union_pw_aff aff::to_union_pw_aff() const
4961 {
4962   return isl::checked::pw_aff(*this).to_union_pw_aff();
4963 }
4964 
to_union_pw_multi_aff()4965 isl::checked::union_pw_multi_aff aff::to_union_pw_multi_aff() const
4966 {
4967   return isl::checked::pw_aff(*this).to_union_pw_multi_aff();
4968 }
4969 
unbind_params_insert_domain(isl::checked::multi_id domain)4970 isl::checked::aff aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
4971 {
4972   auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
4973   return manage(res);
4974 }
4975 
union_add(const isl::checked::multi_pw_aff & mpa2)4976 isl::checked::multi_pw_aff aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
4977 {
4978   return isl::checked::pw_aff(*this).union_add(mpa2);
4979 }
4980 
union_add(const isl::checked::multi_union_pw_aff & mupa2)4981 isl::checked::multi_union_pw_aff aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
4982 {
4983   return isl::checked::pw_aff(*this).union_add(mupa2);
4984 }
4985 
union_add(const isl::checked::pw_aff & pwaff2)4986 isl::checked::pw_aff aff::union_add(const isl::checked::pw_aff &pwaff2) const
4987 {
4988   return isl::checked::pw_aff(*this).union_add(pwaff2);
4989 }
4990 
union_add(const isl::checked::pw_multi_aff & pma2)4991 isl::checked::pw_multi_aff aff::union_add(const isl::checked::pw_multi_aff &pma2) const
4992 {
4993   return isl::checked::pw_aff(*this).union_add(pma2);
4994 }
4995 
union_add(const isl::checked::union_pw_aff & upa2)4996 isl::checked::union_pw_aff aff::union_add(const isl::checked::union_pw_aff &upa2) const
4997 {
4998   return isl::checked::pw_aff(*this).union_add(upa2);
4999 }
5000 
union_add(const isl::checked::union_pw_multi_aff & upma2)5001 isl::checked::union_pw_multi_aff aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
5002 {
5003   return isl::checked::pw_aff(*this).union_add(upma2);
5004 }
5005 
zero_on_domain(isl::checked::space space)5006 isl::checked::aff aff::zero_on_domain(isl::checked::space space)
5007 {
5008   auto res = isl_aff_zero_on_domain_space(space.release());
5009   return manage(res);
5010 }
5011 
5012 inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5013 {
5014   char *str = isl_aff_to_str(obj.get());
5015   if (!str) {
5016     os.setstate(std::ios_base::badbit);
5017     return os;
5018   }
5019   os << str;
5020   free(str);
5021   return os;
5022 }
5023 
5024 // implementations for isl::aff_list
manage(__isl_take isl_aff_list * ptr)5025 aff_list manage(__isl_take isl_aff_list *ptr) {
5026   return aff_list(ptr);
5027 }
manage_copy(__isl_keep isl_aff_list * ptr)5028 aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
5029   ptr = isl_aff_list_copy(ptr);
5030   return aff_list(ptr);
5031 }
5032 
aff_list()5033 aff_list::aff_list()
5034     : ptr(nullptr) {}
5035 
aff_list(const aff_list & obj)5036 aff_list::aff_list(const aff_list &obj)
5037     : ptr(nullptr)
5038 {
5039   ptr = obj.copy();
5040 }
5041 
aff_list(__isl_take isl_aff_list * ptr)5042 aff_list::aff_list(__isl_take isl_aff_list *ptr)
5043     : ptr(ptr) {}
5044 
aff_list(isl::checked::ctx ctx,int n)5045 aff_list::aff_list(isl::checked::ctx ctx, int n)
5046 {
5047   auto res = isl_aff_list_alloc(ctx.release(), n);
5048   ptr = res;
5049 }
5050 
aff_list(isl::checked::aff el)5051 aff_list::aff_list(isl::checked::aff el)
5052 {
5053   auto res = isl_aff_list_from_aff(el.release());
5054   ptr = res;
5055 }
5056 
5057 aff_list &aff_list::operator=(aff_list obj) {
5058   std::swap(this->ptr, obj.ptr);
5059   return *this;
5060 }
5061 
~aff_list()5062 aff_list::~aff_list() {
5063   if (ptr)
5064     isl_aff_list_free(ptr);
5065 }
5066 
copy()5067 __isl_give isl_aff_list *aff_list::copy() const & {
5068   return isl_aff_list_copy(ptr);
5069 }
5070 
get()5071 __isl_keep isl_aff_list *aff_list::get() const {
5072   return ptr;
5073 }
5074 
release()5075 __isl_give isl_aff_list *aff_list::release() {
5076   isl_aff_list *tmp = ptr;
5077   ptr = nullptr;
5078   return tmp;
5079 }
5080 
is_null()5081 bool aff_list::is_null() const {
5082   return ptr == nullptr;
5083 }
5084 
ctx()5085 isl::checked::ctx aff_list::ctx() const {
5086   return isl::checked::ctx(isl_aff_list_get_ctx(ptr));
5087 }
5088 
add(isl::checked::aff el)5089 isl::checked::aff_list aff_list::add(isl::checked::aff el) const
5090 {
5091   auto res = isl_aff_list_add(copy(), el.release());
5092   return manage(res);
5093 }
5094 
at(int index)5095 isl::checked::aff aff_list::at(int index) const
5096 {
5097   auto res = isl_aff_list_get_at(get(), index);
5098   return manage(res);
5099 }
5100 
get_at(int index)5101 isl::checked::aff aff_list::get_at(int index) const
5102 {
5103   return at(index);
5104 }
5105 
clear()5106 isl::checked::aff_list aff_list::clear() const
5107 {
5108   auto res = isl_aff_list_clear(copy());
5109   return manage(res);
5110 }
5111 
concat(isl::checked::aff_list list2)5112 isl::checked::aff_list aff_list::concat(isl::checked::aff_list list2) const
5113 {
5114   auto res = isl_aff_list_concat(copy(), list2.release());
5115   return manage(res);
5116 }
5117 
drop(unsigned int first,unsigned int n)5118 isl::checked::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5119 {
5120   auto res = isl_aff_list_drop(copy(), first, n);
5121   return manage(res);
5122 }
5123 
foreach(const std::function<stat (isl::checked::aff)> & fn)5124 stat aff_list::foreach(const std::function<stat(isl::checked::aff)> &fn) const
5125 {
5126   struct fn_data {
5127     std::function<stat(isl::checked::aff)> func;
5128   } fn_data = { fn };
5129   auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
5130     auto *data = static_cast<struct fn_data *>(arg_1);
5131     auto ret = (data->func)(manage(arg_0));
5132     return ret.release();
5133   };
5134   auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
5135   return manage(res);
5136 }
5137 
insert(unsigned int pos,isl::checked::aff el)5138 isl::checked::aff_list aff_list::insert(unsigned int pos, isl::checked::aff el) const
5139 {
5140   auto res = isl_aff_list_insert(copy(), pos, el.release());
5141   return manage(res);
5142 }
5143 
size()5144 class size aff_list::size() const
5145 {
5146   auto res = isl_aff_list_size(get());
5147   return manage(res);
5148 }
5149 
5150 inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5151 {
5152   char *str = isl_aff_list_to_str(obj.get());
5153   if (!str) {
5154     os.setstate(std::ios_base::badbit);
5155     return os;
5156   }
5157   os << str;
5158   free(str);
5159   return os;
5160 }
5161 
5162 // implementations for isl::ast_build
manage(__isl_take isl_ast_build * ptr)5163 ast_build manage(__isl_take isl_ast_build *ptr) {
5164   return ast_build(ptr);
5165 }
manage_copy(__isl_keep isl_ast_build * ptr)5166 ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
5167   ptr = isl_ast_build_copy(ptr);
5168   return ast_build(ptr);
5169 }
5170 
ast_build()5171 ast_build::ast_build()
5172     : ptr(nullptr) {}
5173 
ast_build(const ast_build & obj)5174 ast_build::ast_build(const ast_build &obj)
5175     : ptr(nullptr)
5176 {
5177   ptr = obj.copy();
5178   copy_callbacks(obj);
5179 }
5180 
ast_build(__isl_take isl_ast_build * ptr)5181 ast_build::ast_build(__isl_take isl_ast_build *ptr)
5182     : ptr(ptr) {}
5183 
ast_build(isl::checked::ctx ctx)5184 ast_build::ast_build(isl::checked::ctx ctx)
5185 {
5186   auto res = isl_ast_build_alloc(ctx.release());
5187   ptr = res;
5188 }
5189 
5190 ast_build &ast_build::operator=(ast_build obj) {
5191   std::swap(this->ptr, obj.ptr);
5192   copy_callbacks(obj);
5193   return *this;
5194 }
5195 
~ast_build()5196 ast_build::~ast_build() {
5197   if (ptr)
5198     isl_ast_build_free(ptr);
5199 }
5200 
copy()5201 __isl_give isl_ast_build *ast_build::copy() const & {
5202   return isl_ast_build_copy(ptr);
5203 }
5204 
get()5205 __isl_keep isl_ast_build *ast_build::get() const {
5206   return ptr;
5207 }
5208 
release()5209 __isl_give isl_ast_build *ast_build::release() {
5210   if (at_each_domain_data)
5211     isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
5212   isl_ast_build *tmp = ptr;
5213   ptr = nullptr;
5214   return tmp;
5215 }
5216 
is_null()5217 bool ast_build::is_null() const {
5218   return ptr == nullptr;
5219 }
5220 
ctx()5221 isl::checked::ctx ast_build::ctx() const {
5222   return isl::checked::ctx(isl_ast_build_get_ctx(ptr));
5223 }
5224 
copy_callbacks(const ast_build & obj)5225 ast_build &ast_build::copy_callbacks(const ast_build &obj)
5226 {
5227   at_each_domain_data = obj.at_each_domain_data;
5228   return *this;
5229 }
5230 
at_each_domain(isl_ast_node * arg_0,isl_ast_build * arg_1,void * arg_2)5231 isl_ast_node *ast_build::at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
5232 {
5233   auto *data = static_cast<struct at_each_domain_data *>(arg_2);
5234   auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
5235   return ret.release();
5236 }
5237 
set_at_each_domain_data(const std::function<isl::checked::ast_node (isl::checked::ast_node,isl::checked::ast_build)> & fn)5238 void ast_build::set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn)
5239 {
5240   at_each_domain_data = std::make_shared<struct at_each_domain_data>();
5241   at_each_domain_data->func = fn;
5242   ptr = isl_ast_build_set_at_each_domain(ptr, &at_each_domain, at_each_domain_data.get());
5243 }
5244 
set_at_each_domain(const std::function<isl::checked::ast_node (isl::checked::ast_node,isl::checked::ast_build)> & fn)5245 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
5246 {
5247   auto copy = *this;
5248   copy.set_at_each_domain_data(fn);
5249   return copy;
5250 }
5251 
access_from(isl::checked::multi_pw_aff mpa)5252 isl::checked::ast_expr ast_build::access_from(isl::checked::multi_pw_aff mpa) const
5253 {
5254   auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
5255   return manage(res);
5256 }
5257 
access_from(isl::checked::pw_multi_aff pma)5258 isl::checked::ast_expr ast_build::access_from(isl::checked::pw_multi_aff pma) const
5259 {
5260   auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
5261   return manage(res);
5262 }
5263 
call_from(isl::checked::multi_pw_aff mpa)5264 isl::checked::ast_expr ast_build::call_from(isl::checked::multi_pw_aff mpa) const
5265 {
5266   auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
5267   return manage(res);
5268 }
5269 
call_from(isl::checked::pw_multi_aff pma)5270 isl::checked::ast_expr ast_build::call_from(isl::checked::pw_multi_aff pma) const
5271 {
5272   auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
5273   return manage(res);
5274 }
5275 
expr_from(isl::checked::pw_aff pa)5276 isl::checked::ast_expr ast_build::expr_from(isl::checked::pw_aff pa) const
5277 {
5278   auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
5279   return manage(res);
5280 }
5281 
expr_from(isl::checked::set set)5282 isl::checked::ast_expr ast_build::expr_from(isl::checked::set set) const
5283 {
5284   auto res = isl_ast_build_expr_from_set(get(), set.release());
5285   return manage(res);
5286 }
5287 
from_context(isl::checked::set set)5288 isl::checked::ast_build ast_build::from_context(isl::checked::set set)
5289 {
5290   auto res = isl_ast_build_from_context(set.release());
5291   return manage(res);
5292 }
5293 
node_from(isl::checked::schedule schedule)5294 isl::checked::ast_node ast_build::node_from(isl::checked::schedule schedule) const
5295 {
5296   auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
5297   return manage(res);
5298 }
5299 
node_from_schedule_map(isl::checked::union_map schedule)5300 isl::checked::ast_node ast_build::node_from_schedule_map(isl::checked::union_map schedule) const
5301 {
5302   auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
5303   return manage(res);
5304 }
5305 
schedule()5306 isl::checked::union_map ast_build::schedule() const
5307 {
5308   auto res = isl_ast_build_get_schedule(get());
5309   return manage(res);
5310 }
5311 
get_schedule()5312 isl::checked::union_map ast_build::get_schedule() const
5313 {
5314   return schedule();
5315 }
5316 
5317 // implementations for isl::ast_expr
manage(__isl_take isl_ast_expr * ptr)5318 ast_expr manage(__isl_take isl_ast_expr *ptr) {
5319   return ast_expr(ptr);
5320 }
manage_copy(__isl_keep isl_ast_expr * ptr)5321 ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
5322   ptr = isl_ast_expr_copy(ptr);
5323   return ast_expr(ptr);
5324 }
5325 
ast_expr()5326 ast_expr::ast_expr()
5327     : ptr(nullptr) {}
5328 
ast_expr(const ast_expr & obj)5329 ast_expr::ast_expr(const ast_expr &obj)
5330     : ptr(nullptr)
5331 {
5332   ptr = obj.copy();
5333 }
5334 
ast_expr(__isl_take isl_ast_expr * ptr)5335 ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
5336     : ptr(ptr) {}
5337 
5338 ast_expr &ast_expr::operator=(ast_expr obj) {
5339   std::swap(this->ptr, obj.ptr);
5340   return *this;
5341 }
5342 
~ast_expr()5343 ast_expr::~ast_expr() {
5344   if (ptr)
5345     isl_ast_expr_free(ptr);
5346 }
5347 
copy()5348 __isl_give isl_ast_expr *ast_expr::copy() const & {
5349   return isl_ast_expr_copy(ptr);
5350 }
5351 
get()5352 __isl_keep isl_ast_expr *ast_expr::get() const {
5353   return ptr;
5354 }
5355 
release()5356 __isl_give isl_ast_expr *ast_expr::release() {
5357   isl_ast_expr *tmp = ptr;
5358   ptr = nullptr;
5359   return tmp;
5360 }
5361 
is_null()5362 bool ast_expr::is_null() const {
5363   return ptr == nullptr;
5364 }
5365 
5366 template <typename T, typename>
isa_type(T subtype)5367 boolean ast_expr::isa_type(T subtype) const
5368 {
5369   if (is_null())
5370     return boolean();
5371   return isl_ast_expr_get_type(get()) == subtype;
5372 }
5373 template <class T>
isa()5374 boolean ast_expr::isa() const
5375 {
5376   return isa_type<decltype(T::type)>(T::type);
5377 }
5378 template <class T>
as()5379 T ast_expr::as() const
5380 {
5381  if (isa<T>().is_false())
5382     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5383   return T(copy());
5384 }
5385 
ctx()5386 isl::checked::ctx ast_expr::ctx() const {
5387   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5388 }
5389 
to_C_str()5390 std::string ast_expr::to_C_str() const
5391 {
5392   auto res = isl_ast_expr_to_C_str(get());
5393   std::string tmp(res);
5394   free(res);
5395   return tmp;
5396 }
5397 
5398 inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
5399 {
5400   char *str = isl_ast_expr_to_str(obj.get());
5401   if (!str) {
5402     os.setstate(std::ios_base::badbit);
5403     return os;
5404   }
5405   os << str;
5406   free(str);
5407   return os;
5408 }
5409 
5410 // implementations for isl::ast_expr_id
ast_expr_id()5411 ast_expr_id::ast_expr_id()
5412     : ast_expr() {}
5413 
ast_expr_id(const ast_expr_id & obj)5414 ast_expr_id::ast_expr_id(const ast_expr_id &obj)
5415     : ast_expr(obj)
5416 {
5417 }
5418 
ast_expr_id(__isl_take isl_ast_expr * ptr)5419 ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
5420     : ast_expr(ptr) {}
5421 
5422 ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
5423   std::swap(this->ptr, obj.ptr);
5424   return *this;
5425 }
5426 
ctx()5427 isl::checked::ctx ast_expr_id::ctx() const {
5428   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5429 }
5430 
id()5431 isl::checked::id ast_expr_id::id() const
5432 {
5433   auto res = isl_ast_expr_id_get_id(get());
5434   return manage(res);
5435 }
5436 
get_id()5437 isl::checked::id ast_expr_id::get_id() const
5438 {
5439   return id();
5440 }
5441 
5442 inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
5443 {
5444   char *str = isl_ast_expr_to_str(obj.get());
5445   if (!str) {
5446     os.setstate(std::ios_base::badbit);
5447     return os;
5448   }
5449   os << str;
5450   free(str);
5451   return os;
5452 }
5453 
5454 // implementations for isl::ast_expr_int
ast_expr_int()5455 ast_expr_int::ast_expr_int()
5456     : ast_expr() {}
5457 
ast_expr_int(const ast_expr_int & obj)5458 ast_expr_int::ast_expr_int(const ast_expr_int &obj)
5459     : ast_expr(obj)
5460 {
5461 }
5462 
ast_expr_int(__isl_take isl_ast_expr * ptr)5463 ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
5464     : ast_expr(ptr) {}
5465 
5466 ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
5467   std::swap(this->ptr, obj.ptr);
5468   return *this;
5469 }
5470 
ctx()5471 isl::checked::ctx ast_expr_int::ctx() const {
5472   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5473 }
5474 
val()5475 isl::checked::val ast_expr_int::val() const
5476 {
5477   auto res = isl_ast_expr_int_get_val(get());
5478   return manage(res);
5479 }
5480 
get_val()5481 isl::checked::val ast_expr_int::get_val() const
5482 {
5483   return val();
5484 }
5485 
5486 inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
5487 {
5488   char *str = isl_ast_expr_to_str(obj.get());
5489   if (!str) {
5490     os.setstate(std::ios_base::badbit);
5491     return os;
5492   }
5493   os << str;
5494   free(str);
5495   return os;
5496 }
5497 
5498 // implementations for isl::ast_expr_op
ast_expr_op()5499 ast_expr_op::ast_expr_op()
5500     : ast_expr() {}
5501 
ast_expr_op(const ast_expr_op & obj)5502 ast_expr_op::ast_expr_op(const ast_expr_op &obj)
5503     : ast_expr(obj)
5504 {
5505 }
5506 
ast_expr_op(__isl_take isl_ast_expr * ptr)5507 ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
5508     : ast_expr(ptr) {}
5509 
5510 ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
5511   std::swap(this->ptr, obj.ptr);
5512   return *this;
5513 }
5514 
5515 template <typename T, typename>
isa_type(T subtype)5516 boolean ast_expr_op::isa_type(T subtype) const
5517 {
5518   if (is_null())
5519     return boolean();
5520   return isl_ast_expr_op_get_type(get()) == subtype;
5521 }
5522 template <class T>
isa()5523 boolean ast_expr_op::isa() const
5524 {
5525   return isa_type<decltype(T::type)>(T::type);
5526 }
5527 template <class T>
as()5528 T ast_expr_op::as() const
5529 {
5530  if (isa<T>().is_false())
5531     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5532   return T(copy());
5533 }
5534 
ctx()5535 isl::checked::ctx ast_expr_op::ctx() const {
5536   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5537 }
5538 
arg(int pos)5539 isl::checked::ast_expr ast_expr_op::arg(int pos) const
5540 {
5541   auto res = isl_ast_expr_op_get_arg(get(), pos);
5542   return manage(res);
5543 }
5544 
get_arg(int pos)5545 isl::checked::ast_expr ast_expr_op::get_arg(int pos) const
5546 {
5547   return arg(pos);
5548 }
5549 
n_arg()5550 class size ast_expr_op::n_arg() const
5551 {
5552   auto res = isl_ast_expr_op_get_n_arg(get());
5553   return manage(res);
5554 }
5555 
get_n_arg()5556 class size ast_expr_op::get_n_arg() const
5557 {
5558   return n_arg();
5559 }
5560 
5561 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
5562 {
5563   char *str = isl_ast_expr_to_str(obj.get());
5564   if (!str) {
5565     os.setstate(std::ios_base::badbit);
5566     return os;
5567   }
5568   os << str;
5569   free(str);
5570   return os;
5571 }
5572 
5573 // implementations for isl::ast_expr_op_access
ast_expr_op_access()5574 ast_expr_op_access::ast_expr_op_access()
5575     : ast_expr_op() {}
5576 
ast_expr_op_access(const ast_expr_op_access & obj)5577 ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
5578     : ast_expr_op(obj)
5579 {
5580 }
5581 
ast_expr_op_access(__isl_take isl_ast_expr * ptr)5582 ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
5583     : ast_expr_op(ptr) {}
5584 
5585 ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
5586   std::swap(this->ptr, obj.ptr);
5587   return *this;
5588 }
5589 
ctx()5590 isl::checked::ctx ast_expr_op_access::ctx() const {
5591   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5592 }
5593 
5594 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
5595 {
5596   char *str = isl_ast_expr_to_str(obj.get());
5597   if (!str) {
5598     os.setstate(std::ios_base::badbit);
5599     return os;
5600   }
5601   os << str;
5602   free(str);
5603   return os;
5604 }
5605 
5606 // implementations for isl::ast_expr_op_add
ast_expr_op_add()5607 ast_expr_op_add::ast_expr_op_add()
5608     : ast_expr_op() {}
5609 
ast_expr_op_add(const ast_expr_op_add & obj)5610 ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
5611     : ast_expr_op(obj)
5612 {
5613 }
5614 
ast_expr_op_add(__isl_take isl_ast_expr * ptr)5615 ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
5616     : ast_expr_op(ptr) {}
5617 
5618 ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
5619   std::swap(this->ptr, obj.ptr);
5620   return *this;
5621 }
5622 
ctx()5623 isl::checked::ctx ast_expr_op_add::ctx() const {
5624   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5625 }
5626 
5627 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
5628 {
5629   char *str = isl_ast_expr_to_str(obj.get());
5630   if (!str) {
5631     os.setstate(std::ios_base::badbit);
5632     return os;
5633   }
5634   os << str;
5635   free(str);
5636   return os;
5637 }
5638 
5639 // implementations for isl::ast_expr_op_address_of
ast_expr_op_address_of()5640 ast_expr_op_address_of::ast_expr_op_address_of()
5641     : ast_expr_op() {}
5642 
ast_expr_op_address_of(const ast_expr_op_address_of & obj)5643 ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
5644     : ast_expr_op(obj)
5645 {
5646 }
5647 
ast_expr_op_address_of(__isl_take isl_ast_expr * ptr)5648 ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
5649     : ast_expr_op(ptr) {}
5650 
5651 ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
5652   std::swap(this->ptr, obj.ptr);
5653   return *this;
5654 }
5655 
ctx()5656 isl::checked::ctx ast_expr_op_address_of::ctx() const {
5657   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5658 }
5659 
5660 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
5661 {
5662   char *str = isl_ast_expr_to_str(obj.get());
5663   if (!str) {
5664     os.setstate(std::ios_base::badbit);
5665     return os;
5666   }
5667   os << str;
5668   free(str);
5669   return os;
5670 }
5671 
5672 // implementations for isl::ast_expr_op_and
ast_expr_op_and()5673 ast_expr_op_and::ast_expr_op_and()
5674     : ast_expr_op() {}
5675 
ast_expr_op_and(const ast_expr_op_and & obj)5676 ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
5677     : ast_expr_op(obj)
5678 {
5679 }
5680 
ast_expr_op_and(__isl_take isl_ast_expr * ptr)5681 ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
5682     : ast_expr_op(ptr) {}
5683 
5684 ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
5685   std::swap(this->ptr, obj.ptr);
5686   return *this;
5687 }
5688 
ctx()5689 isl::checked::ctx ast_expr_op_and::ctx() const {
5690   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5691 }
5692 
5693 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
5694 {
5695   char *str = isl_ast_expr_to_str(obj.get());
5696   if (!str) {
5697     os.setstate(std::ios_base::badbit);
5698     return os;
5699   }
5700   os << str;
5701   free(str);
5702   return os;
5703 }
5704 
5705 // implementations for isl::ast_expr_op_and_then
ast_expr_op_and_then()5706 ast_expr_op_and_then::ast_expr_op_and_then()
5707     : ast_expr_op() {}
5708 
ast_expr_op_and_then(const ast_expr_op_and_then & obj)5709 ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
5710     : ast_expr_op(obj)
5711 {
5712 }
5713 
ast_expr_op_and_then(__isl_take isl_ast_expr * ptr)5714 ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
5715     : ast_expr_op(ptr) {}
5716 
5717 ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
5718   std::swap(this->ptr, obj.ptr);
5719   return *this;
5720 }
5721 
ctx()5722 isl::checked::ctx ast_expr_op_and_then::ctx() const {
5723   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5724 }
5725 
5726 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
5727 {
5728   char *str = isl_ast_expr_to_str(obj.get());
5729   if (!str) {
5730     os.setstate(std::ios_base::badbit);
5731     return os;
5732   }
5733   os << str;
5734   free(str);
5735   return os;
5736 }
5737 
5738 // implementations for isl::ast_expr_op_call
ast_expr_op_call()5739 ast_expr_op_call::ast_expr_op_call()
5740     : ast_expr_op() {}
5741 
ast_expr_op_call(const ast_expr_op_call & obj)5742 ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
5743     : ast_expr_op(obj)
5744 {
5745 }
5746 
ast_expr_op_call(__isl_take isl_ast_expr * ptr)5747 ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
5748     : ast_expr_op(ptr) {}
5749 
5750 ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
5751   std::swap(this->ptr, obj.ptr);
5752   return *this;
5753 }
5754 
ctx()5755 isl::checked::ctx ast_expr_op_call::ctx() const {
5756   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5757 }
5758 
5759 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
5760 {
5761   char *str = isl_ast_expr_to_str(obj.get());
5762   if (!str) {
5763     os.setstate(std::ios_base::badbit);
5764     return os;
5765   }
5766   os << str;
5767   free(str);
5768   return os;
5769 }
5770 
5771 // implementations for isl::ast_expr_op_cond
ast_expr_op_cond()5772 ast_expr_op_cond::ast_expr_op_cond()
5773     : ast_expr_op() {}
5774 
ast_expr_op_cond(const ast_expr_op_cond & obj)5775 ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
5776     : ast_expr_op(obj)
5777 {
5778 }
5779 
ast_expr_op_cond(__isl_take isl_ast_expr * ptr)5780 ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
5781     : ast_expr_op(ptr) {}
5782 
5783 ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
5784   std::swap(this->ptr, obj.ptr);
5785   return *this;
5786 }
5787 
ctx()5788 isl::checked::ctx ast_expr_op_cond::ctx() const {
5789   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5790 }
5791 
5792 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
5793 {
5794   char *str = isl_ast_expr_to_str(obj.get());
5795   if (!str) {
5796     os.setstate(std::ios_base::badbit);
5797     return os;
5798   }
5799   os << str;
5800   free(str);
5801   return os;
5802 }
5803 
5804 // implementations for isl::ast_expr_op_div
ast_expr_op_div()5805 ast_expr_op_div::ast_expr_op_div()
5806     : ast_expr_op() {}
5807 
ast_expr_op_div(const ast_expr_op_div & obj)5808 ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
5809     : ast_expr_op(obj)
5810 {
5811 }
5812 
ast_expr_op_div(__isl_take isl_ast_expr * ptr)5813 ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
5814     : ast_expr_op(ptr) {}
5815 
5816 ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
5817   std::swap(this->ptr, obj.ptr);
5818   return *this;
5819 }
5820 
ctx()5821 isl::checked::ctx ast_expr_op_div::ctx() const {
5822   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5823 }
5824 
5825 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
5826 {
5827   char *str = isl_ast_expr_to_str(obj.get());
5828   if (!str) {
5829     os.setstate(std::ios_base::badbit);
5830     return os;
5831   }
5832   os << str;
5833   free(str);
5834   return os;
5835 }
5836 
5837 // implementations for isl::ast_expr_op_eq
ast_expr_op_eq()5838 ast_expr_op_eq::ast_expr_op_eq()
5839     : ast_expr_op() {}
5840 
ast_expr_op_eq(const ast_expr_op_eq & obj)5841 ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
5842     : ast_expr_op(obj)
5843 {
5844 }
5845 
ast_expr_op_eq(__isl_take isl_ast_expr * ptr)5846 ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
5847     : ast_expr_op(ptr) {}
5848 
5849 ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
5850   std::swap(this->ptr, obj.ptr);
5851   return *this;
5852 }
5853 
ctx()5854 isl::checked::ctx ast_expr_op_eq::ctx() const {
5855   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5856 }
5857 
5858 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
5859 {
5860   char *str = isl_ast_expr_to_str(obj.get());
5861   if (!str) {
5862     os.setstate(std::ios_base::badbit);
5863     return os;
5864   }
5865   os << str;
5866   free(str);
5867   return os;
5868 }
5869 
5870 // implementations for isl::ast_expr_op_fdiv_q
ast_expr_op_fdiv_q()5871 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
5872     : ast_expr_op() {}
5873 
ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q & obj)5874 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
5875     : ast_expr_op(obj)
5876 {
5877 }
5878 
ast_expr_op_fdiv_q(__isl_take isl_ast_expr * ptr)5879 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
5880     : ast_expr_op(ptr) {}
5881 
5882 ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
5883   std::swap(this->ptr, obj.ptr);
5884   return *this;
5885 }
5886 
ctx()5887 isl::checked::ctx ast_expr_op_fdiv_q::ctx() const {
5888   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5889 }
5890 
5891 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
5892 {
5893   char *str = isl_ast_expr_to_str(obj.get());
5894   if (!str) {
5895     os.setstate(std::ios_base::badbit);
5896     return os;
5897   }
5898   os << str;
5899   free(str);
5900   return os;
5901 }
5902 
5903 // implementations for isl::ast_expr_op_ge
ast_expr_op_ge()5904 ast_expr_op_ge::ast_expr_op_ge()
5905     : ast_expr_op() {}
5906 
ast_expr_op_ge(const ast_expr_op_ge & obj)5907 ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
5908     : ast_expr_op(obj)
5909 {
5910 }
5911 
ast_expr_op_ge(__isl_take isl_ast_expr * ptr)5912 ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
5913     : ast_expr_op(ptr) {}
5914 
5915 ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
5916   std::swap(this->ptr, obj.ptr);
5917   return *this;
5918 }
5919 
ctx()5920 isl::checked::ctx ast_expr_op_ge::ctx() const {
5921   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5922 }
5923 
5924 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
5925 {
5926   char *str = isl_ast_expr_to_str(obj.get());
5927   if (!str) {
5928     os.setstate(std::ios_base::badbit);
5929     return os;
5930   }
5931   os << str;
5932   free(str);
5933   return os;
5934 }
5935 
5936 // implementations for isl::ast_expr_op_gt
ast_expr_op_gt()5937 ast_expr_op_gt::ast_expr_op_gt()
5938     : ast_expr_op() {}
5939 
ast_expr_op_gt(const ast_expr_op_gt & obj)5940 ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
5941     : ast_expr_op(obj)
5942 {
5943 }
5944 
ast_expr_op_gt(__isl_take isl_ast_expr * ptr)5945 ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
5946     : ast_expr_op(ptr) {}
5947 
5948 ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
5949   std::swap(this->ptr, obj.ptr);
5950   return *this;
5951 }
5952 
ctx()5953 isl::checked::ctx ast_expr_op_gt::ctx() const {
5954   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5955 }
5956 
5957 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
5958 {
5959   char *str = isl_ast_expr_to_str(obj.get());
5960   if (!str) {
5961     os.setstate(std::ios_base::badbit);
5962     return os;
5963   }
5964   os << str;
5965   free(str);
5966   return os;
5967 }
5968 
5969 // implementations for isl::ast_expr_op_le
ast_expr_op_le()5970 ast_expr_op_le::ast_expr_op_le()
5971     : ast_expr_op() {}
5972 
ast_expr_op_le(const ast_expr_op_le & obj)5973 ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
5974     : ast_expr_op(obj)
5975 {
5976 }
5977 
ast_expr_op_le(__isl_take isl_ast_expr * ptr)5978 ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
5979     : ast_expr_op(ptr) {}
5980 
5981 ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
5982   std::swap(this->ptr, obj.ptr);
5983   return *this;
5984 }
5985 
ctx()5986 isl::checked::ctx ast_expr_op_le::ctx() const {
5987   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5988 }
5989 
5990 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
5991 {
5992   char *str = isl_ast_expr_to_str(obj.get());
5993   if (!str) {
5994     os.setstate(std::ios_base::badbit);
5995     return os;
5996   }
5997   os << str;
5998   free(str);
5999   return os;
6000 }
6001 
6002 // implementations for isl::ast_expr_op_lt
ast_expr_op_lt()6003 ast_expr_op_lt::ast_expr_op_lt()
6004     : ast_expr_op() {}
6005 
ast_expr_op_lt(const ast_expr_op_lt & obj)6006 ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
6007     : ast_expr_op(obj)
6008 {
6009 }
6010 
ast_expr_op_lt(__isl_take isl_ast_expr * ptr)6011 ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
6012     : ast_expr_op(ptr) {}
6013 
6014 ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
6015   std::swap(this->ptr, obj.ptr);
6016   return *this;
6017 }
6018 
ctx()6019 isl::checked::ctx ast_expr_op_lt::ctx() const {
6020   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6021 }
6022 
6023 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6024 {
6025   char *str = isl_ast_expr_to_str(obj.get());
6026   if (!str) {
6027     os.setstate(std::ios_base::badbit);
6028     return os;
6029   }
6030   os << str;
6031   free(str);
6032   return os;
6033 }
6034 
6035 // implementations for isl::ast_expr_op_max
ast_expr_op_max()6036 ast_expr_op_max::ast_expr_op_max()
6037     : ast_expr_op() {}
6038 
ast_expr_op_max(const ast_expr_op_max & obj)6039 ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
6040     : ast_expr_op(obj)
6041 {
6042 }
6043 
ast_expr_op_max(__isl_take isl_ast_expr * ptr)6044 ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
6045     : ast_expr_op(ptr) {}
6046 
6047 ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
6048   std::swap(this->ptr, obj.ptr);
6049   return *this;
6050 }
6051 
ctx()6052 isl::checked::ctx ast_expr_op_max::ctx() const {
6053   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6054 }
6055 
6056 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6057 {
6058   char *str = isl_ast_expr_to_str(obj.get());
6059   if (!str) {
6060     os.setstate(std::ios_base::badbit);
6061     return os;
6062   }
6063   os << str;
6064   free(str);
6065   return os;
6066 }
6067 
6068 // implementations for isl::ast_expr_op_member
ast_expr_op_member()6069 ast_expr_op_member::ast_expr_op_member()
6070     : ast_expr_op() {}
6071 
ast_expr_op_member(const ast_expr_op_member & obj)6072 ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
6073     : ast_expr_op(obj)
6074 {
6075 }
6076 
ast_expr_op_member(__isl_take isl_ast_expr * ptr)6077 ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
6078     : ast_expr_op(ptr) {}
6079 
6080 ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
6081   std::swap(this->ptr, obj.ptr);
6082   return *this;
6083 }
6084 
ctx()6085 isl::checked::ctx ast_expr_op_member::ctx() const {
6086   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6087 }
6088 
6089 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6090 {
6091   char *str = isl_ast_expr_to_str(obj.get());
6092   if (!str) {
6093     os.setstate(std::ios_base::badbit);
6094     return os;
6095   }
6096   os << str;
6097   free(str);
6098   return os;
6099 }
6100 
6101 // implementations for isl::ast_expr_op_min
ast_expr_op_min()6102 ast_expr_op_min::ast_expr_op_min()
6103     : ast_expr_op() {}
6104 
ast_expr_op_min(const ast_expr_op_min & obj)6105 ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
6106     : ast_expr_op(obj)
6107 {
6108 }
6109 
ast_expr_op_min(__isl_take isl_ast_expr * ptr)6110 ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
6111     : ast_expr_op(ptr) {}
6112 
6113 ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
6114   std::swap(this->ptr, obj.ptr);
6115   return *this;
6116 }
6117 
ctx()6118 isl::checked::ctx ast_expr_op_min::ctx() const {
6119   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6120 }
6121 
6122 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
6123 {
6124   char *str = isl_ast_expr_to_str(obj.get());
6125   if (!str) {
6126     os.setstate(std::ios_base::badbit);
6127     return os;
6128   }
6129   os << str;
6130   free(str);
6131   return os;
6132 }
6133 
6134 // implementations for isl::ast_expr_op_minus
ast_expr_op_minus()6135 ast_expr_op_minus::ast_expr_op_minus()
6136     : ast_expr_op() {}
6137 
ast_expr_op_minus(const ast_expr_op_minus & obj)6138 ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
6139     : ast_expr_op(obj)
6140 {
6141 }
6142 
ast_expr_op_minus(__isl_take isl_ast_expr * ptr)6143 ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
6144     : ast_expr_op(ptr) {}
6145 
6146 ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
6147   std::swap(this->ptr, obj.ptr);
6148   return *this;
6149 }
6150 
ctx()6151 isl::checked::ctx ast_expr_op_minus::ctx() const {
6152   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6153 }
6154 
6155 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
6156 {
6157   char *str = isl_ast_expr_to_str(obj.get());
6158   if (!str) {
6159     os.setstate(std::ios_base::badbit);
6160     return os;
6161   }
6162   os << str;
6163   free(str);
6164   return os;
6165 }
6166 
6167 // implementations for isl::ast_expr_op_mul
ast_expr_op_mul()6168 ast_expr_op_mul::ast_expr_op_mul()
6169     : ast_expr_op() {}
6170 
ast_expr_op_mul(const ast_expr_op_mul & obj)6171 ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
6172     : ast_expr_op(obj)
6173 {
6174 }
6175 
ast_expr_op_mul(__isl_take isl_ast_expr * ptr)6176 ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
6177     : ast_expr_op(ptr) {}
6178 
6179 ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
6180   std::swap(this->ptr, obj.ptr);
6181   return *this;
6182 }
6183 
ctx()6184 isl::checked::ctx ast_expr_op_mul::ctx() const {
6185   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6186 }
6187 
6188 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
6189 {
6190   char *str = isl_ast_expr_to_str(obj.get());
6191   if (!str) {
6192     os.setstate(std::ios_base::badbit);
6193     return os;
6194   }
6195   os << str;
6196   free(str);
6197   return os;
6198 }
6199 
6200 // implementations for isl::ast_expr_op_or
ast_expr_op_or()6201 ast_expr_op_or::ast_expr_op_or()
6202     : ast_expr_op() {}
6203 
ast_expr_op_or(const ast_expr_op_or & obj)6204 ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
6205     : ast_expr_op(obj)
6206 {
6207 }
6208 
ast_expr_op_or(__isl_take isl_ast_expr * ptr)6209 ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
6210     : ast_expr_op(ptr) {}
6211 
6212 ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
6213   std::swap(this->ptr, obj.ptr);
6214   return *this;
6215 }
6216 
ctx()6217 isl::checked::ctx ast_expr_op_or::ctx() const {
6218   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6219 }
6220 
6221 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
6222 {
6223   char *str = isl_ast_expr_to_str(obj.get());
6224   if (!str) {
6225     os.setstate(std::ios_base::badbit);
6226     return os;
6227   }
6228   os << str;
6229   free(str);
6230   return os;
6231 }
6232 
6233 // implementations for isl::ast_expr_op_or_else
ast_expr_op_or_else()6234 ast_expr_op_or_else::ast_expr_op_or_else()
6235     : ast_expr_op() {}
6236 
ast_expr_op_or_else(const ast_expr_op_or_else & obj)6237 ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
6238     : ast_expr_op(obj)
6239 {
6240 }
6241 
ast_expr_op_or_else(__isl_take isl_ast_expr * ptr)6242 ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
6243     : ast_expr_op(ptr) {}
6244 
6245 ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
6246   std::swap(this->ptr, obj.ptr);
6247   return *this;
6248 }
6249 
ctx()6250 isl::checked::ctx ast_expr_op_or_else::ctx() const {
6251   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6252 }
6253 
6254 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
6255 {
6256   char *str = isl_ast_expr_to_str(obj.get());
6257   if (!str) {
6258     os.setstate(std::ios_base::badbit);
6259     return os;
6260   }
6261   os << str;
6262   free(str);
6263   return os;
6264 }
6265 
6266 // implementations for isl::ast_expr_op_pdiv_q
ast_expr_op_pdiv_q()6267 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
6268     : ast_expr_op() {}
6269 
ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q & obj)6270 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
6271     : ast_expr_op(obj)
6272 {
6273 }
6274 
ast_expr_op_pdiv_q(__isl_take isl_ast_expr * ptr)6275 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
6276     : ast_expr_op(ptr) {}
6277 
6278 ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
6279   std::swap(this->ptr, obj.ptr);
6280   return *this;
6281 }
6282 
ctx()6283 isl::checked::ctx ast_expr_op_pdiv_q::ctx() const {
6284   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6285 }
6286 
6287 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
6288 {
6289   char *str = isl_ast_expr_to_str(obj.get());
6290   if (!str) {
6291     os.setstate(std::ios_base::badbit);
6292     return os;
6293   }
6294   os << str;
6295   free(str);
6296   return os;
6297 }
6298 
6299 // implementations for isl::ast_expr_op_pdiv_r
ast_expr_op_pdiv_r()6300 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
6301     : ast_expr_op() {}
6302 
ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r & obj)6303 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
6304     : ast_expr_op(obj)
6305 {
6306 }
6307 
ast_expr_op_pdiv_r(__isl_take isl_ast_expr * ptr)6308 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
6309     : ast_expr_op(ptr) {}
6310 
6311 ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
6312   std::swap(this->ptr, obj.ptr);
6313   return *this;
6314 }
6315 
ctx()6316 isl::checked::ctx ast_expr_op_pdiv_r::ctx() const {
6317   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6318 }
6319 
6320 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
6321 {
6322   char *str = isl_ast_expr_to_str(obj.get());
6323   if (!str) {
6324     os.setstate(std::ios_base::badbit);
6325     return os;
6326   }
6327   os << str;
6328   free(str);
6329   return os;
6330 }
6331 
6332 // implementations for isl::ast_expr_op_select
ast_expr_op_select()6333 ast_expr_op_select::ast_expr_op_select()
6334     : ast_expr_op() {}
6335 
ast_expr_op_select(const ast_expr_op_select & obj)6336 ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
6337     : ast_expr_op(obj)
6338 {
6339 }
6340 
ast_expr_op_select(__isl_take isl_ast_expr * ptr)6341 ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
6342     : ast_expr_op(ptr) {}
6343 
6344 ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
6345   std::swap(this->ptr, obj.ptr);
6346   return *this;
6347 }
6348 
ctx()6349 isl::checked::ctx ast_expr_op_select::ctx() const {
6350   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6351 }
6352 
6353 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
6354 {
6355   char *str = isl_ast_expr_to_str(obj.get());
6356   if (!str) {
6357     os.setstate(std::ios_base::badbit);
6358     return os;
6359   }
6360   os << str;
6361   free(str);
6362   return os;
6363 }
6364 
6365 // implementations for isl::ast_expr_op_sub
ast_expr_op_sub()6366 ast_expr_op_sub::ast_expr_op_sub()
6367     : ast_expr_op() {}
6368 
ast_expr_op_sub(const ast_expr_op_sub & obj)6369 ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
6370     : ast_expr_op(obj)
6371 {
6372 }
6373 
ast_expr_op_sub(__isl_take isl_ast_expr * ptr)6374 ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
6375     : ast_expr_op(ptr) {}
6376 
6377 ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
6378   std::swap(this->ptr, obj.ptr);
6379   return *this;
6380 }
6381 
ctx()6382 isl::checked::ctx ast_expr_op_sub::ctx() const {
6383   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6384 }
6385 
6386 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
6387 {
6388   char *str = isl_ast_expr_to_str(obj.get());
6389   if (!str) {
6390     os.setstate(std::ios_base::badbit);
6391     return os;
6392   }
6393   os << str;
6394   free(str);
6395   return os;
6396 }
6397 
6398 // implementations for isl::ast_expr_op_zdiv_r
ast_expr_op_zdiv_r()6399 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
6400     : ast_expr_op() {}
6401 
ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r & obj)6402 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
6403     : ast_expr_op(obj)
6404 {
6405 }
6406 
ast_expr_op_zdiv_r(__isl_take isl_ast_expr * ptr)6407 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
6408     : ast_expr_op(ptr) {}
6409 
6410 ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
6411   std::swap(this->ptr, obj.ptr);
6412   return *this;
6413 }
6414 
ctx()6415 isl::checked::ctx ast_expr_op_zdiv_r::ctx() const {
6416   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6417 }
6418 
6419 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
6420 {
6421   char *str = isl_ast_expr_to_str(obj.get());
6422   if (!str) {
6423     os.setstate(std::ios_base::badbit);
6424     return os;
6425   }
6426   os << str;
6427   free(str);
6428   return os;
6429 }
6430 
6431 // implementations for isl::ast_node
manage(__isl_take isl_ast_node * ptr)6432 ast_node manage(__isl_take isl_ast_node *ptr) {
6433   return ast_node(ptr);
6434 }
manage_copy(__isl_keep isl_ast_node * ptr)6435 ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
6436   ptr = isl_ast_node_copy(ptr);
6437   return ast_node(ptr);
6438 }
6439 
ast_node()6440 ast_node::ast_node()
6441     : ptr(nullptr) {}
6442 
ast_node(const ast_node & obj)6443 ast_node::ast_node(const ast_node &obj)
6444     : ptr(nullptr)
6445 {
6446   ptr = obj.copy();
6447 }
6448 
ast_node(__isl_take isl_ast_node * ptr)6449 ast_node::ast_node(__isl_take isl_ast_node *ptr)
6450     : ptr(ptr) {}
6451 
6452 ast_node &ast_node::operator=(ast_node obj) {
6453   std::swap(this->ptr, obj.ptr);
6454   return *this;
6455 }
6456 
~ast_node()6457 ast_node::~ast_node() {
6458   if (ptr)
6459     isl_ast_node_free(ptr);
6460 }
6461 
copy()6462 __isl_give isl_ast_node *ast_node::copy() const & {
6463   return isl_ast_node_copy(ptr);
6464 }
6465 
get()6466 __isl_keep isl_ast_node *ast_node::get() const {
6467   return ptr;
6468 }
6469 
release()6470 __isl_give isl_ast_node *ast_node::release() {
6471   isl_ast_node *tmp = ptr;
6472   ptr = nullptr;
6473   return tmp;
6474 }
6475 
is_null()6476 bool ast_node::is_null() const {
6477   return ptr == nullptr;
6478 }
6479 
6480 template <typename T, typename>
isa_type(T subtype)6481 boolean ast_node::isa_type(T subtype) const
6482 {
6483   if (is_null())
6484     return boolean();
6485   return isl_ast_node_get_type(get()) == subtype;
6486 }
6487 template <class T>
isa()6488 boolean ast_node::isa() const
6489 {
6490   return isa_type<decltype(T::type)>(T::type);
6491 }
6492 template <class T>
as()6493 T ast_node::as() const
6494 {
6495  if (isa<T>().is_false())
6496     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6497   return T(copy());
6498 }
6499 
ctx()6500 isl::checked::ctx ast_node::ctx() const {
6501   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6502 }
6503 
to_C_str()6504 std::string ast_node::to_C_str() const
6505 {
6506   auto res = isl_ast_node_to_C_str(get());
6507   std::string tmp(res);
6508   free(res);
6509   return tmp;
6510 }
6511 
to_list()6512 isl::checked::ast_node_list ast_node::to_list() const
6513 {
6514   auto res = isl_ast_node_to_list(copy());
6515   return manage(res);
6516 }
6517 
6518 inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
6519 {
6520   char *str = isl_ast_node_to_str(obj.get());
6521   if (!str) {
6522     os.setstate(std::ios_base::badbit);
6523     return os;
6524   }
6525   os << str;
6526   free(str);
6527   return os;
6528 }
6529 
6530 // implementations for isl::ast_node_block
ast_node_block()6531 ast_node_block::ast_node_block()
6532     : ast_node() {}
6533 
ast_node_block(const ast_node_block & obj)6534 ast_node_block::ast_node_block(const ast_node_block &obj)
6535     : ast_node(obj)
6536 {
6537 }
6538 
ast_node_block(__isl_take isl_ast_node * ptr)6539 ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
6540     : ast_node(ptr) {}
6541 
6542 ast_node_block &ast_node_block::operator=(ast_node_block obj) {
6543   std::swap(this->ptr, obj.ptr);
6544   return *this;
6545 }
6546 
ctx()6547 isl::checked::ctx ast_node_block::ctx() const {
6548   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6549 }
6550 
children()6551 isl::checked::ast_node_list ast_node_block::children() const
6552 {
6553   auto res = isl_ast_node_block_get_children(get());
6554   return manage(res);
6555 }
6556 
get_children()6557 isl::checked::ast_node_list ast_node_block::get_children() const
6558 {
6559   return children();
6560 }
6561 
6562 inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
6563 {
6564   char *str = isl_ast_node_to_str(obj.get());
6565   if (!str) {
6566     os.setstate(std::ios_base::badbit);
6567     return os;
6568   }
6569   os << str;
6570   free(str);
6571   return os;
6572 }
6573 
6574 // implementations for isl::ast_node_for
ast_node_for()6575 ast_node_for::ast_node_for()
6576     : ast_node() {}
6577 
ast_node_for(const ast_node_for & obj)6578 ast_node_for::ast_node_for(const ast_node_for &obj)
6579     : ast_node(obj)
6580 {
6581 }
6582 
ast_node_for(__isl_take isl_ast_node * ptr)6583 ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
6584     : ast_node(ptr) {}
6585 
6586 ast_node_for &ast_node_for::operator=(ast_node_for obj) {
6587   std::swap(this->ptr, obj.ptr);
6588   return *this;
6589 }
6590 
ctx()6591 isl::checked::ctx ast_node_for::ctx() const {
6592   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6593 }
6594 
body()6595 isl::checked::ast_node ast_node_for::body() const
6596 {
6597   auto res = isl_ast_node_for_get_body(get());
6598   return manage(res);
6599 }
6600 
get_body()6601 isl::checked::ast_node ast_node_for::get_body() const
6602 {
6603   return body();
6604 }
6605 
cond()6606 isl::checked::ast_expr ast_node_for::cond() const
6607 {
6608   auto res = isl_ast_node_for_get_cond(get());
6609   return manage(res);
6610 }
6611 
get_cond()6612 isl::checked::ast_expr ast_node_for::get_cond() const
6613 {
6614   return cond();
6615 }
6616 
inc()6617 isl::checked::ast_expr ast_node_for::inc() const
6618 {
6619   auto res = isl_ast_node_for_get_inc(get());
6620   return manage(res);
6621 }
6622 
get_inc()6623 isl::checked::ast_expr ast_node_for::get_inc() const
6624 {
6625   return inc();
6626 }
6627 
init()6628 isl::checked::ast_expr ast_node_for::init() const
6629 {
6630   auto res = isl_ast_node_for_get_init(get());
6631   return manage(res);
6632 }
6633 
get_init()6634 isl::checked::ast_expr ast_node_for::get_init() const
6635 {
6636   return init();
6637 }
6638 
is_degenerate()6639 boolean ast_node_for::is_degenerate() const
6640 {
6641   auto res = isl_ast_node_for_is_degenerate(get());
6642   return manage(res);
6643 }
6644 
iterator()6645 isl::checked::ast_expr ast_node_for::iterator() const
6646 {
6647   auto res = isl_ast_node_for_get_iterator(get());
6648   return manage(res);
6649 }
6650 
get_iterator()6651 isl::checked::ast_expr ast_node_for::get_iterator() const
6652 {
6653   return iterator();
6654 }
6655 
6656 inline std::ostream &operator<<(std::ostream &os, const ast_node_for &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_if
ast_node_if()6669 ast_node_if::ast_node_if()
6670     : ast_node() {}
6671 
ast_node_if(const ast_node_if & obj)6672 ast_node_if::ast_node_if(const ast_node_if &obj)
6673     : ast_node(obj)
6674 {
6675 }
6676 
ast_node_if(__isl_take isl_ast_node * ptr)6677 ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
6678     : ast_node(ptr) {}
6679 
6680 ast_node_if &ast_node_if::operator=(ast_node_if obj) {
6681   std::swap(this->ptr, obj.ptr);
6682   return *this;
6683 }
6684 
ctx()6685 isl::checked::ctx ast_node_if::ctx() const {
6686   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6687 }
6688 
cond()6689 isl::checked::ast_expr ast_node_if::cond() const
6690 {
6691   auto res = isl_ast_node_if_get_cond(get());
6692   return manage(res);
6693 }
6694 
get_cond()6695 isl::checked::ast_expr ast_node_if::get_cond() const
6696 {
6697   return cond();
6698 }
6699 
else_node()6700 isl::checked::ast_node ast_node_if::else_node() const
6701 {
6702   auto res = isl_ast_node_if_get_else_node(get());
6703   return manage(res);
6704 }
6705 
get_else_node()6706 isl::checked::ast_node ast_node_if::get_else_node() const
6707 {
6708   return else_node();
6709 }
6710 
has_else_node()6711 boolean ast_node_if::has_else_node() const
6712 {
6713   auto res = isl_ast_node_if_has_else_node(get());
6714   return manage(res);
6715 }
6716 
then_node()6717 isl::checked::ast_node ast_node_if::then_node() const
6718 {
6719   auto res = isl_ast_node_if_get_then_node(get());
6720   return manage(res);
6721 }
6722 
get_then_node()6723 isl::checked::ast_node ast_node_if::get_then_node() const
6724 {
6725   return then_node();
6726 }
6727 
6728 inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
6729 {
6730   char *str = isl_ast_node_to_str(obj.get());
6731   if (!str) {
6732     os.setstate(std::ios_base::badbit);
6733     return os;
6734   }
6735   os << str;
6736   free(str);
6737   return os;
6738 }
6739 
6740 // implementations for isl::ast_node_list
manage(__isl_take isl_ast_node_list * ptr)6741 ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
6742   return ast_node_list(ptr);
6743 }
manage_copy(__isl_keep isl_ast_node_list * ptr)6744 ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
6745   ptr = isl_ast_node_list_copy(ptr);
6746   return ast_node_list(ptr);
6747 }
6748 
ast_node_list()6749 ast_node_list::ast_node_list()
6750     : ptr(nullptr) {}
6751 
ast_node_list(const ast_node_list & obj)6752 ast_node_list::ast_node_list(const ast_node_list &obj)
6753     : ptr(nullptr)
6754 {
6755   ptr = obj.copy();
6756 }
6757 
ast_node_list(__isl_take isl_ast_node_list * ptr)6758 ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
6759     : ptr(ptr) {}
6760 
ast_node_list(isl::checked::ctx ctx,int n)6761 ast_node_list::ast_node_list(isl::checked::ctx ctx, int n)
6762 {
6763   auto res = isl_ast_node_list_alloc(ctx.release(), n);
6764   ptr = res;
6765 }
6766 
ast_node_list(isl::checked::ast_node el)6767 ast_node_list::ast_node_list(isl::checked::ast_node el)
6768 {
6769   auto res = isl_ast_node_list_from_ast_node(el.release());
6770   ptr = res;
6771 }
6772 
6773 ast_node_list &ast_node_list::operator=(ast_node_list obj) {
6774   std::swap(this->ptr, obj.ptr);
6775   return *this;
6776 }
6777 
~ast_node_list()6778 ast_node_list::~ast_node_list() {
6779   if (ptr)
6780     isl_ast_node_list_free(ptr);
6781 }
6782 
copy()6783 __isl_give isl_ast_node_list *ast_node_list::copy() const & {
6784   return isl_ast_node_list_copy(ptr);
6785 }
6786 
get()6787 __isl_keep isl_ast_node_list *ast_node_list::get() const {
6788   return ptr;
6789 }
6790 
release()6791 __isl_give isl_ast_node_list *ast_node_list::release() {
6792   isl_ast_node_list *tmp = ptr;
6793   ptr = nullptr;
6794   return tmp;
6795 }
6796 
is_null()6797 bool ast_node_list::is_null() const {
6798   return ptr == nullptr;
6799 }
6800 
ctx()6801 isl::checked::ctx ast_node_list::ctx() const {
6802   return isl::checked::ctx(isl_ast_node_list_get_ctx(ptr));
6803 }
6804 
add(isl::checked::ast_node el)6805 isl::checked::ast_node_list ast_node_list::add(isl::checked::ast_node el) const
6806 {
6807   auto res = isl_ast_node_list_add(copy(), el.release());
6808   return manage(res);
6809 }
6810 
at(int index)6811 isl::checked::ast_node ast_node_list::at(int index) const
6812 {
6813   auto res = isl_ast_node_list_get_at(get(), index);
6814   return manage(res);
6815 }
6816 
get_at(int index)6817 isl::checked::ast_node ast_node_list::get_at(int index) const
6818 {
6819   return at(index);
6820 }
6821 
clear()6822 isl::checked::ast_node_list ast_node_list::clear() const
6823 {
6824   auto res = isl_ast_node_list_clear(copy());
6825   return manage(res);
6826 }
6827 
concat(isl::checked::ast_node_list list2)6828 isl::checked::ast_node_list ast_node_list::concat(isl::checked::ast_node_list list2) const
6829 {
6830   auto res = isl_ast_node_list_concat(copy(), list2.release());
6831   return manage(res);
6832 }
6833 
drop(unsigned int first,unsigned int n)6834 isl::checked::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
6835 {
6836   auto res = isl_ast_node_list_drop(copy(), first, n);
6837   return manage(res);
6838 }
6839 
foreach(const std::function<stat (isl::checked::ast_node)> & fn)6840 stat ast_node_list::foreach(const std::function<stat(isl::checked::ast_node)> &fn) const
6841 {
6842   struct fn_data {
6843     std::function<stat(isl::checked::ast_node)> func;
6844   } fn_data = { fn };
6845   auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
6846     auto *data = static_cast<struct fn_data *>(arg_1);
6847     auto ret = (data->func)(manage(arg_0));
6848     return ret.release();
6849   };
6850   auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
6851   return manage(res);
6852 }
6853 
insert(unsigned int pos,isl::checked::ast_node el)6854 isl::checked::ast_node_list ast_node_list::insert(unsigned int pos, isl::checked::ast_node el) const
6855 {
6856   auto res = isl_ast_node_list_insert(copy(), pos, el.release());
6857   return manage(res);
6858 }
6859 
size()6860 class size ast_node_list::size() const
6861 {
6862   auto res = isl_ast_node_list_size(get());
6863   return manage(res);
6864 }
6865 
6866 inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
6867 {
6868   char *str = isl_ast_node_list_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_mark
ast_node_mark()6879 ast_node_mark::ast_node_mark()
6880     : ast_node() {}
6881 
ast_node_mark(const ast_node_mark & obj)6882 ast_node_mark::ast_node_mark(const ast_node_mark &obj)
6883     : ast_node(obj)
6884 {
6885 }
6886 
ast_node_mark(__isl_take isl_ast_node * ptr)6887 ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
6888     : ast_node(ptr) {}
6889 
6890 ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
6891   std::swap(this->ptr, obj.ptr);
6892   return *this;
6893 }
6894 
ctx()6895 isl::checked::ctx ast_node_mark::ctx() const {
6896   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6897 }
6898 
id()6899 isl::checked::id ast_node_mark::id() const
6900 {
6901   auto res = isl_ast_node_mark_get_id(get());
6902   return manage(res);
6903 }
6904 
get_id()6905 isl::checked::id ast_node_mark::get_id() const
6906 {
6907   return id();
6908 }
6909 
node()6910 isl::checked::ast_node ast_node_mark::node() const
6911 {
6912   auto res = isl_ast_node_mark_get_node(get());
6913   return manage(res);
6914 }
6915 
get_node()6916 isl::checked::ast_node ast_node_mark::get_node() const
6917 {
6918   return node();
6919 }
6920 
6921 inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
6922 {
6923   char *str = isl_ast_node_to_str(obj.get());
6924   if (!str) {
6925     os.setstate(std::ios_base::badbit);
6926     return os;
6927   }
6928   os << str;
6929   free(str);
6930   return os;
6931 }
6932 
6933 // implementations for isl::ast_node_user
ast_node_user()6934 ast_node_user::ast_node_user()
6935     : ast_node() {}
6936 
ast_node_user(const ast_node_user & obj)6937 ast_node_user::ast_node_user(const ast_node_user &obj)
6938     : ast_node(obj)
6939 {
6940 }
6941 
ast_node_user(__isl_take isl_ast_node * ptr)6942 ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
6943     : ast_node(ptr) {}
6944 
6945 ast_node_user &ast_node_user::operator=(ast_node_user obj) {
6946   std::swap(this->ptr, obj.ptr);
6947   return *this;
6948 }
6949 
ctx()6950 isl::checked::ctx ast_node_user::ctx() const {
6951   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6952 }
6953 
expr()6954 isl::checked::ast_expr ast_node_user::expr() const
6955 {
6956   auto res = isl_ast_node_user_get_expr(get());
6957   return manage(res);
6958 }
6959 
get_expr()6960 isl::checked::ast_expr ast_node_user::get_expr() const
6961 {
6962   return expr();
6963 }
6964 
6965 inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
6966 {
6967   char *str = isl_ast_node_to_str(obj.get());
6968   if (!str) {
6969     os.setstate(std::ios_base::badbit);
6970     return os;
6971   }
6972   os << str;
6973   free(str);
6974   return os;
6975 }
6976 
6977 // implementations for isl::basic_map
manage(__isl_take isl_basic_map * ptr)6978 basic_map manage(__isl_take isl_basic_map *ptr) {
6979   return basic_map(ptr);
6980 }
manage_copy(__isl_keep isl_basic_map * ptr)6981 basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
6982   ptr = isl_basic_map_copy(ptr);
6983   return basic_map(ptr);
6984 }
6985 
basic_map()6986 basic_map::basic_map()
6987     : ptr(nullptr) {}
6988 
basic_map(const basic_map & obj)6989 basic_map::basic_map(const basic_map &obj)
6990     : ptr(nullptr)
6991 {
6992   ptr = obj.copy();
6993 }
6994 
basic_map(__isl_take isl_basic_map * ptr)6995 basic_map::basic_map(__isl_take isl_basic_map *ptr)
6996     : ptr(ptr) {}
6997 
basic_map(isl::checked::ctx ctx,const std::string & str)6998 basic_map::basic_map(isl::checked::ctx ctx, const std::string &str)
6999 {
7000   auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
7001   ptr = res;
7002 }
7003 
7004 basic_map &basic_map::operator=(basic_map obj) {
7005   std::swap(this->ptr, obj.ptr);
7006   return *this;
7007 }
7008 
~basic_map()7009 basic_map::~basic_map() {
7010   if (ptr)
7011     isl_basic_map_free(ptr);
7012 }
7013 
copy()7014 __isl_give isl_basic_map *basic_map::copy() const & {
7015   return isl_basic_map_copy(ptr);
7016 }
7017 
get()7018 __isl_keep isl_basic_map *basic_map::get() const {
7019   return ptr;
7020 }
7021 
release()7022 __isl_give isl_basic_map *basic_map::release() {
7023   isl_basic_map *tmp = ptr;
7024   ptr = nullptr;
7025   return tmp;
7026 }
7027 
is_null()7028 bool basic_map::is_null() const {
7029   return ptr == nullptr;
7030 }
7031 
ctx()7032 isl::checked::ctx basic_map::ctx() const {
7033   return isl::checked::ctx(isl_basic_map_get_ctx(ptr));
7034 }
7035 
affine_hull()7036 isl::checked::basic_map basic_map::affine_hull() const
7037 {
7038   auto res = isl_basic_map_affine_hull(copy());
7039   return manage(res);
7040 }
7041 
apply_domain(isl::checked::basic_map bmap2)7042 isl::checked::basic_map basic_map::apply_domain(isl::checked::basic_map bmap2) const
7043 {
7044   auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
7045   return manage(res);
7046 }
7047 
apply_domain(const isl::checked::map & map2)7048 isl::checked::map basic_map::apply_domain(const isl::checked::map &map2) const
7049 {
7050   return isl::checked::map(*this).apply_domain(map2);
7051 }
7052 
apply_domain(const isl::checked::union_map & umap2)7053 isl::checked::union_map basic_map::apply_domain(const isl::checked::union_map &umap2) const
7054 {
7055   return isl::checked::map(*this).apply_domain(umap2);
7056 }
7057 
apply_range(isl::checked::basic_map bmap2)7058 isl::checked::basic_map basic_map::apply_range(isl::checked::basic_map bmap2) const
7059 {
7060   auto res = isl_basic_map_apply_range(copy(), bmap2.release());
7061   return manage(res);
7062 }
7063 
apply_range(const isl::checked::map & map2)7064 isl::checked::map basic_map::apply_range(const isl::checked::map &map2) const
7065 {
7066   return isl::checked::map(*this).apply_range(map2);
7067 }
7068 
apply_range(const isl::checked::union_map & umap2)7069 isl::checked::union_map basic_map::apply_range(const isl::checked::union_map &umap2) const
7070 {
7071   return isl::checked::map(*this).apply_range(umap2);
7072 }
7073 
as_map()7074 isl::checked::map basic_map::as_map() const
7075 {
7076   return isl::checked::map(*this).as_map();
7077 }
7078 
as_multi_union_pw_aff()7079 isl::checked::multi_union_pw_aff basic_map::as_multi_union_pw_aff() const
7080 {
7081   return isl::checked::map(*this).as_multi_union_pw_aff();
7082 }
7083 
as_pw_multi_aff()7084 isl::checked::pw_multi_aff basic_map::as_pw_multi_aff() const
7085 {
7086   return isl::checked::map(*this).as_pw_multi_aff();
7087 }
7088 
as_union_pw_multi_aff()7089 isl::checked::union_pw_multi_aff basic_map::as_union_pw_multi_aff() const
7090 {
7091   return isl::checked::map(*this).as_union_pw_multi_aff();
7092 }
7093 
bind_domain(const isl::checked::multi_id & tuple)7094 isl::checked::set basic_map::bind_domain(const isl::checked::multi_id &tuple) const
7095 {
7096   return isl::checked::map(*this).bind_domain(tuple);
7097 }
7098 
bind_range(const isl::checked::multi_id & tuple)7099 isl::checked::set basic_map::bind_range(const isl::checked::multi_id &tuple) const
7100 {
7101   return isl::checked::map(*this).bind_range(tuple);
7102 }
7103 
coalesce()7104 isl::checked::map basic_map::coalesce() const
7105 {
7106   return isl::checked::map(*this).coalesce();
7107 }
7108 
complement()7109 isl::checked::map basic_map::complement() const
7110 {
7111   return isl::checked::map(*this).complement();
7112 }
7113 
compute_divs()7114 isl::checked::union_map basic_map::compute_divs() const
7115 {
7116   return isl::checked::map(*this).compute_divs();
7117 }
7118 
curry()7119 isl::checked::map basic_map::curry() const
7120 {
7121   return isl::checked::map(*this).curry();
7122 }
7123 
deltas()7124 isl::checked::basic_set basic_map::deltas() const
7125 {
7126   auto res = isl_basic_map_deltas(copy());
7127   return manage(res);
7128 }
7129 
detect_equalities()7130 isl::checked::basic_map basic_map::detect_equalities() const
7131 {
7132   auto res = isl_basic_map_detect_equalities(copy());
7133   return manage(res);
7134 }
7135 
domain()7136 isl::checked::set basic_map::domain() const
7137 {
7138   return isl::checked::map(*this).domain();
7139 }
7140 
domain_factor_domain()7141 isl::checked::map basic_map::domain_factor_domain() const
7142 {
7143   return isl::checked::map(*this).domain_factor_domain();
7144 }
7145 
domain_factor_range()7146 isl::checked::map basic_map::domain_factor_range() const
7147 {
7148   return isl::checked::map(*this).domain_factor_range();
7149 }
7150 
domain_map()7151 isl::checked::union_map basic_map::domain_map() const
7152 {
7153   return isl::checked::map(*this).domain_map();
7154 }
7155 
domain_map_union_pw_multi_aff()7156 isl::checked::union_pw_multi_aff basic_map::domain_map_union_pw_multi_aff() const
7157 {
7158   return isl::checked::map(*this).domain_map_union_pw_multi_aff();
7159 }
7160 
domain_product(const isl::checked::map & map2)7161 isl::checked::map basic_map::domain_product(const isl::checked::map &map2) const
7162 {
7163   return isl::checked::map(*this).domain_product(map2);
7164 }
7165 
domain_product(const isl::checked::union_map & umap2)7166 isl::checked::union_map basic_map::domain_product(const isl::checked::union_map &umap2) const
7167 {
7168   return isl::checked::map(*this).domain_product(umap2);
7169 }
7170 
domain_tuple_id()7171 isl::checked::id basic_map::domain_tuple_id() const
7172 {
7173   return isl::checked::map(*this).domain_tuple_id();
7174 }
7175 
eq_at(const isl::checked::multi_pw_aff & mpa)7176 isl::checked::map basic_map::eq_at(const isl::checked::multi_pw_aff &mpa) const
7177 {
7178   return isl::checked::map(*this).eq_at(mpa);
7179 }
7180 
eq_at(const isl::checked::multi_union_pw_aff & mupa)7181 isl::checked::union_map basic_map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
7182 {
7183   return isl::checked::map(*this).eq_at(mupa);
7184 }
7185 
every_map(const std::function<boolean (isl::checked::map)> & test)7186 boolean basic_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
7187 {
7188   return isl::checked::map(*this).every_map(test);
7189 }
7190 
extract_map(const isl::checked::space & space)7191 isl::checked::map basic_map::extract_map(const isl::checked::space &space) const
7192 {
7193   return isl::checked::map(*this).extract_map(space);
7194 }
7195 
factor_domain()7196 isl::checked::map basic_map::factor_domain() const
7197 {
7198   return isl::checked::map(*this).factor_domain();
7199 }
7200 
factor_range()7201 isl::checked::map basic_map::factor_range() const
7202 {
7203   return isl::checked::map(*this).factor_range();
7204 }
7205 
fixed_power(const isl::checked::val & exp)7206 isl::checked::union_map basic_map::fixed_power(const isl::checked::val &exp) const
7207 {
7208   return isl::checked::map(*this).fixed_power(exp);
7209 }
7210 
fixed_power(long exp)7211 isl::checked::union_map basic_map::fixed_power(long exp) const
7212 {
7213   return this->fixed_power(isl::checked::val(ctx(), exp));
7214 }
7215 
flatten()7216 isl::checked::basic_map basic_map::flatten() const
7217 {
7218   auto res = isl_basic_map_flatten(copy());
7219   return manage(res);
7220 }
7221 
flatten_domain()7222 isl::checked::basic_map basic_map::flatten_domain() const
7223 {
7224   auto res = isl_basic_map_flatten_domain(copy());
7225   return manage(res);
7226 }
7227 
flatten_range()7228 isl::checked::basic_map basic_map::flatten_range() const
7229 {
7230   auto res = isl_basic_map_flatten_range(copy());
7231   return manage(res);
7232 }
7233 
foreach_basic_map(const std::function<stat (isl::checked::basic_map)> & fn)7234 stat basic_map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
7235 {
7236   return isl::checked::map(*this).foreach_basic_map(fn);
7237 }
7238 
foreach_map(const std::function<stat (isl::checked::map)> & fn)7239 stat basic_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
7240 {
7241   return isl::checked::map(*this).foreach_map(fn);
7242 }
7243 
gist(isl::checked::basic_map context)7244 isl::checked::basic_map basic_map::gist(isl::checked::basic_map context) const
7245 {
7246   auto res = isl_basic_map_gist(copy(), context.release());
7247   return manage(res);
7248 }
7249 
gist(const isl::checked::map & context)7250 isl::checked::map basic_map::gist(const isl::checked::map &context) const
7251 {
7252   return isl::checked::map(*this).gist(context);
7253 }
7254 
gist(const isl::checked::union_map & context)7255 isl::checked::union_map basic_map::gist(const isl::checked::union_map &context) const
7256 {
7257   return isl::checked::map(*this).gist(context);
7258 }
7259 
gist_domain(const isl::checked::set & context)7260 isl::checked::map basic_map::gist_domain(const isl::checked::set &context) const
7261 {
7262   return isl::checked::map(*this).gist_domain(context);
7263 }
7264 
gist_domain(const isl::checked::union_set & uset)7265 isl::checked::union_map basic_map::gist_domain(const isl::checked::union_set &uset) const
7266 {
7267   return isl::checked::map(*this).gist_domain(uset);
7268 }
7269 
gist_params(const isl::checked::set & set)7270 isl::checked::union_map basic_map::gist_params(const isl::checked::set &set) const
7271 {
7272   return isl::checked::map(*this).gist_params(set);
7273 }
7274 
gist_range(const isl::checked::union_set & uset)7275 isl::checked::union_map basic_map::gist_range(const isl::checked::union_set &uset) const
7276 {
7277   return isl::checked::map(*this).gist_range(uset);
7278 }
7279 
has_domain_tuple_id()7280 boolean basic_map::has_domain_tuple_id() const
7281 {
7282   return isl::checked::map(*this).has_domain_tuple_id();
7283 }
7284 
has_range_tuple_id()7285 boolean basic_map::has_range_tuple_id() const
7286 {
7287   return isl::checked::map(*this).has_range_tuple_id();
7288 }
7289 
intersect(isl::checked::basic_map bmap2)7290 isl::checked::basic_map basic_map::intersect(isl::checked::basic_map bmap2) const
7291 {
7292   auto res = isl_basic_map_intersect(copy(), bmap2.release());
7293   return manage(res);
7294 }
7295 
intersect(const isl::checked::map & map2)7296 isl::checked::map basic_map::intersect(const isl::checked::map &map2) const
7297 {
7298   return isl::checked::map(*this).intersect(map2);
7299 }
7300 
intersect(const isl::checked::union_map & umap2)7301 isl::checked::union_map basic_map::intersect(const isl::checked::union_map &umap2) const
7302 {
7303   return isl::checked::map(*this).intersect(umap2);
7304 }
7305 
intersect_domain(isl::checked::basic_set bset)7306 isl::checked::basic_map basic_map::intersect_domain(isl::checked::basic_set bset) const
7307 {
7308   auto res = isl_basic_map_intersect_domain(copy(), bset.release());
7309   return manage(res);
7310 }
7311 
intersect_domain(const isl::checked::set & set)7312 isl::checked::map basic_map::intersect_domain(const isl::checked::set &set) const
7313 {
7314   return isl::checked::map(*this).intersect_domain(set);
7315 }
7316 
intersect_domain(const isl::checked::space & space)7317 isl::checked::union_map basic_map::intersect_domain(const isl::checked::space &space) const
7318 {
7319   return isl::checked::map(*this).intersect_domain(space);
7320 }
7321 
intersect_domain(const isl::checked::union_set & uset)7322 isl::checked::union_map basic_map::intersect_domain(const isl::checked::union_set &uset) const
7323 {
7324   return isl::checked::map(*this).intersect_domain(uset);
7325 }
7326 
intersect_domain(const isl::checked::point & bset)7327 isl::checked::basic_map basic_map::intersect_domain(const isl::checked::point &bset) const
7328 {
7329   return this->intersect_domain(isl::checked::basic_set(bset));
7330 }
7331 
intersect_domain_factor_domain(const isl::checked::map & factor)7332 isl::checked::map basic_map::intersect_domain_factor_domain(const isl::checked::map &factor) const
7333 {
7334   return isl::checked::map(*this).intersect_domain_factor_domain(factor);
7335 }
7336 
intersect_domain_factor_domain(const isl::checked::union_map & factor)7337 isl::checked::union_map basic_map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
7338 {
7339   return isl::checked::map(*this).intersect_domain_factor_domain(factor);
7340 }
7341 
intersect_domain_factor_range(const isl::checked::map & factor)7342 isl::checked::map basic_map::intersect_domain_factor_range(const isl::checked::map &factor) const
7343 {
7344   return isl::checked::map(*this).intersect_domain_factor_range(factor);
7345 }
7346 
intersect_domain_factor_range(const isl::checked::union_map & factor)7347 isl::checked::union_map basic_map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
7348 {
7349   return isl::checked::map(*this).intersect_domain_factor_range(factor);
7350 }
7351 
intersect_params(const isl::checked::set & params)7352 isl::checked::map basic_map::intersect_params(const isl::checked::set &params) const
7353 {
7354   return isl::checked::map(*this).intersect_params(params);
7355 }
7356 
intersect_range(isl::checked::basic_set bset)7357 isl::checked::basic_map basic_map::intersect_range(isl::checked::basic_set bset) const
7358 {
7359   auto res = isl_basic_map_intersect_range(copy(), bset.release());
7360   return manage(res);
7361 }
7362 
intersect_range(const isl::checked::set & set)7363 isl::checked::map basic_map::intersect_range(const isl::checked::set &set) const
7364 {
7365   return isl::checked::map(*this).intersect_range(set);
7366 }
7367 
intersect_range(const isl::checked::space & space)7368 isl::checked::union_map basic_map::intersect_range(const isl::checked::space &space) const
7369 {
7370   return isl::checked::map(*this).intersect_range(space);
7371 }
7372 
intersect_range(const isl::checked::union_set & uset)7373 isl::checked::union_map basic_map::intersect_range(const isl::checked::union_set &uset) const
7374 {
7375   return isl::checked::map(*this).intersect_range(uset);
7376 }
7377 
intersect_range(const isl::checked::point & bset)7378 isl::checked::basic_map basic_map::intersect_range(const isl::checked::point &bset) const
7379 {
7380   return this->intersect_range(isl::checked::basic_set(bset));
7381 }
7382 
intersect_range_factor_domain(const isl::checked::map & factor)7383 isl::checked::map basic_map::intersect_range_factor_domain(const isl::checked::map &factor) const
7384 {
7385   return isl::checked::map(*this).intersect_range_factor_domain(factor);
7386 }
7387 
intersect_range_factor_domain(const isl::checked::union_map & factor)7388 isl::checked::union_map basic_map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
7389 {
7390   return isl::checked::map(*this).intersect_range_factor_domain(factor);
7391 }
7392 
intersect_range_factor_range(const isl::checked::map & factor)7393 isl::checked::map basic_map::intersect_range_factor_range(const isl::checked::map &factor) const
7394 {
7395   return isl::checked::map(*this).intersect_range_factor_range(factor);
7396 }
7397 
intersect_range_factor_range(const isl::checked::union_map & factor)7398 isl::checked::union_map basic_map::intersect_range_factor_range(const isl::checked::union_map &factor) const
7399 {
7400   return isl::checked::map(*this).intersect_range_factor_range(factor);
7401 }
7402 
is_bijective()7403 boolean basic_map::is_bijective() const
7404 {
7405   return isl::checked::map(*this).is_bijective();
7406 }
7407 
is_disjoint(const isl::checked::map & map2)7408 boolean basic_map::is_disjoint(const isl::checked::map &map2) const
7409 {
7410   return isl::checked::map(*this).is_disjoint(map2);
7411 }
7412 
is_disjoint(const isl::checked::union_map & umap2)7413 boolean basic_map::is_disjoint(const isl::checked::union_map &umap2) const
7414 {
7415   return isl::checked::map(*this).is_disjoint(umap2);
7416 }
7417 
is_empty()7418 boolean basic_map::is_empty() const
7419 {
7420   auto res = isl_basic_map_is_empty(get());
7421   return manage(res);
7422 }
7423 
is_equal(const isl::checked::basic_map & bmap2)7424 boolean basic_map::is_equal(const isl::checked::basic_map &bmap2) const
7425 {
7426   auto res = isl_basic_map_is_equal(get(), bmap2.get());
7427   return manage(res);
7428 }
7429 
is_equal(const isl::checked::map & map2)7430 boolean basic_map::is_equal(const isl::checked::map &map2) const
7431 {
7432   return isl::checked::map(*this).is_equal(map2);
7433 }
7434 
is_equal(const isl::checked::union_map & umap2)7435 boolean basic_map::is_equal(const isl::checked::union_map &umap2) const
7436 {
7437   return isl::checked::map(*this).is_equal(umap2);
7438 }
7439 
is_injective()7440 boolean basic_map::is_injective() const
7441 {
7442   return isl::checked::map(*this).is_injective();
7443 }
7444 
is_single_valued()7445 boolean basic_map::is_single_valued() const
7446 {
7447   return isl::checked::map(*this).is_single_valued();
7448 }
7449 
is_strict_subset(const isl::checked::map & map2)7450 boolean basic_map::is_strict_subset(const isl::checked::map &map2) const
7451 {
7452   return isl::checked::map(*this).is_strict_subset(map2);
7453 }
7454 
is_strict_subset(const isl::checked::union_map & umap2)7455 boolean basic_map::is_strict_subset(const isl::checked::union_map &umap2) const
7456 {
7457   return isl::checked::map(*this).is_strict_subset(umap2);
7458 }
7459 
is_subset(const isl::checked::basic_map & bmap2)7460 boolean basic_map::is_subset(const isl::checked::basic_map &bmap2) const
7461 {
7462   auto res = isl_basic_map_is_subset(get(), bmap2.get());
7463   return manage(res);
7464 }
7465 
is_subset(const isl::checked::map & map2)7466 boolean basic_map::is_subset(const isl::checked::map &map2) const
7467 {
7468   return isl::checked::map(*this).is_subset(map2);
7469 }
7470 
is_subset(const isl::checked::union_map & umap2)7471 boolean basic_map::is_subset(const isl::checked::union_map &umap2) const
7472 {
7473   return isl::checked::map(*this).is_subset(umap2);
7474 }
7475 
isa_map()7476 boolean basic_map::isa_map() const
7477 {
7478   return isl::checked::map(*this).isa_map();
7479 }
7480 
lex_ge_at(const isl::checked::multi_pw_aff & mpa)7481 isl::checked::map basic_map::lex_ge_at(const isl::checked::multi_pw_aff &mpa) const
7482 {
7483   return isl::checked::map(*this).lex_ge_at(mpa);
7484 }
7485 
lex_gt_at(const isl::checked::multi_pw_aff & mpa)7486 isl::checked::map basic_map::lex_gt_at(const isl::checked::multi_pw_aff &mpa) const
7487 {
7488   return isl::checked::map(*this).lex_gt_at(mpa);
7489 }
7490 
lex_le_at(const isl::checked::multi_pw_aff & mpa)7491 isl::checked::map basic_map::lex_le_at(const isl::checked::multi_pw_aff &mpa) const
7492 {
7493   return isl::checked::map(*this).lex_le_at(mpa);
7494 }
7495 
lex_lt_at(const isl::checked::multi_pw_aff & mpa)7496 isl::checked::map basic_map::lex_lt_at(const isl::checked::multi_pw_aff &mpa) const
7497 {
7498   return isl::checked::map(*this).lex_lt_at(mpa);
7499 }
7500 
lexmax()7501 isl::checked::map basic_map::lexmax() const
7502 {
7503   auto res = isl_basic_map_lexmax(copy());
7504   return manage(res);
7505 }
7506 
lexmax_pw_multi_aff()7507 isl::checked::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
7508 {
7509   return isl::checked::map(*this).lexmax_pw_multi_aff();
7510 }
7511 
lexmin()7512 isl::checked::map basic_map::lexmin() const
7513 {
7514   auto res = isl_basic_map_lexmin(copy());
7515   return manage(res);
7516 }
7517 
lexmin_pw_multi_aff()7518 isl::checked::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
7519 {
7520   return isl::checked::map(*this).lexmin_pw_multi_aff();
7521 }
7522 
lower_bound(const isl::checked::multi_pw_aff & lower)7523 isl::checked::map basic_map::lower_bound(const isl::checked::multi_pw_aff &lower) const
7524 {
7525   return isl::checked::map(*this).lower_bound(lower);
7526 }
7527 
max_multi_pw_aff()7528 isl::checked::multi_pw_aff basic_map::max_multi_pw_aff() const
7529 {
7530   return isl::checked::map(*this).max_multi_pw_aff();
7531 }
7532 
min_multi_pw_aff()7533 isl::checked::multi_pw_aff basic_map::min_multi_pw_aff() const
7534 {
7535   return isl::checked::map(*this).min_multi_pw_aff();
7536 }
7537 
polyhedral_hull()7538 isl::checked::basic_map basic_map::polyhedral_hull() const
7539 {
7540   return isl::checked::map(*this).polyhedral_hull();
7541 }
7542 
preimage_domain(const isl::checked::multi_aff & ma)7543 isl::checked::map basic_map::preimage_domain(const isl::checked::multi_aff &ma) const
7544 {
7545   return isl::checked::map(*this).preimage_domain(ma);
7546 }
7547 
preimage_domain(const isl::checked::multi_pw_aff & mpa)7548 isl::checked::map basic_map::preimage_domain(const isl::checked::multi_pw_aff &mpa) const
7549 {
7550   return isl::checked::map(*this).preimage_domain(mpa);
7551 }
7552 
preimage_domain(const isl::checked::pw_multi_aff & pma)7553 isl::checked::map basic_map::preimage_domain(const isl::checked::pw_multi_aff &pma) const
7554 {
7555   return isl::checked::map(*this).preimage_domain(pma);
7556 }
7557 
preimage_domain(const isl::checked::union_pw_multi_aff & upma)7558 isl::checked::union_map basic_map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
7559 {
7560   return isl::checked::map(*this).preimage_domain(upma);
7561 }
7562 
preimage_range(const isl::checked::multi_aff & ma)7563 isl::checked::map basic_map::preimage_range(const isl::checked::multi_aff &ma) const
7564 {
7565   return isl::checked::map(*this).preimage_range(ma);
7566 }
7567 
preimage_range(const isl::checked::pw_multi_aff & pma)7568 isl::checked::map basic_map::preimage_range(const isl::checked::pw_multi_aff &pma) const
7569 {
7570   return isl::checked::map(*this).preimage_range(pma);
7571 }
7572 
preimage_range(const isl::checked::union_pw_multi_aff & upma)7573 isl::checked::union_map basic_map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
7574 {
7575   return isl::checked::map(*this).preimage_range(upma);
7576 }
7577 
product(const isl::checked::map & map2)7578 isl::checked::map basic_map::product(const isl::checked::map &map2) const
7579 {
7580   return isl::checked::map(*this).product(map2);
7581 }
7582 
product(const isl::checked::union_map & umap2)7583 isl::checked::union_map basic_map::product(const isl::checked::union_map &umap2) const
7584 {
7585   return isl::checked::map(*this).product(umap2);
7586 }
7587 
project_out_all_params()7588 isl::checked::map basic_map::project_out_all_params() const
7589 {
7590   return isl::checked::map(*this).project_out_all_params();
7591 }
7592 
range()7593 isl::checked::set basic_map::range() const
7594 {
7595   return isl::checked::map(*this).range();
7596 }
7597 
range_factor_domain()7598 isl::checked::map basic_map::range_factor_domain() const
7599 {
7600   return isl::checked::map(*this).range_factor_domain();
7601 }
7602 
range_factor_range()7603 isl::checked::map basic_map::range_factor_range() const
7604 {
7605   return isl::checked::map(*this).range_factor_range();
7606 }
7607 
range_map()7608 isl::checked::union_map basic_map::range_map() const
7609 {
7610   return isl::checked::map(*this).range_map();
7611 }
7612 
range_product(const isl::checked::map & map2)7613 isl::checked::map basic_map::range_product(const isl::checked::map &map2) const
7614 {
7615   return isl::checked::map(*this).range_product(map2);
7616 }
7617 
range_product(const isl::checked::union_map & umap2)7618 isl::checked::union_map basic_map::range_product(const isl::checked::union_map &umap2) const
7619 {
7620   return isl::checked::map(*this).range_product(umap2);
7621 }
7622 
range_reverse()7623 isl::checked::map basic_map::range_reverse() const
7624 {
7625   return isl::checked::map(*this).range_reverse();
7626 }
7627 
range_simple_fixed_box_hull()7628 isl::checked::fixed_box basic_map::range_simple_fixed_box_hull() const
7629 {
7630   return isl::checked::map(*this).range_simple_fixed_box_hull();
7631 }
7632 
range_tuple_id()7633 isl::checked::id basic_map::range_tuple_id() const
7634 {
7635   return isl::checked::map(*this).range_tuple_id();
7636 }
7637 
reverse()7638 isl::checked::basic_map basic_map::reverse() const
7639 {
7640   auto res = isl_basic_map_reverse(copy());
7641   return manage(res);
7642 }
7643 
sample()7644 isl::checked::basic_map basic_map::sample() const
7645 {
7646   auto res = isl_basic_map_sample(copy());
7647   return manage(res);
7648 }
7649 
set_domain_tuple(const isl::checked::id & id)7650 isl::checked::map basic_map::set_domain_tuple(const isl::checked::id &id) const
7651 {
7652   return isl::checked::map(*this).set_domain_tuple(id);
7653 }
7654 
set_domain_tuple(const std::string & id)7655 isl::checked::map basic_map::set_domain_tuple(const std::string &id) const
7656 {
7657   return this->set_domain_tuple(isl::checked::id(ctx(), id));
7658 }
7659 
set_range_tuple(const isl::checked::id & id)7660 isl::checked::map basic_map::set_range_tuple(const isl::checked::id &id) const
7661 {
7662   return isl::checked::map(*this).set_range_tuple(id);
7663 }
7664 
set_range_tuple(const std::string & id)7665 isl::checked::map basic_map::set_range_tuple(const std::string &id) const
7666 {
7667   return this->set_range_tuple(isl::checked::id(ctx(), id));
7668 }
7669 
space()7670 isl::checked::space basic_map::space() const
7671 {
7672   return isl::checked::map(*this).space();
7673 }
7674 
subtract(const isl::checked::map & map2)7675 isl::checked::map basic_map::subtract(const isl::checked::map &map2) const
7676 {
7677   return isl::checked::map(*this).subtract(map2);
7678 }
7679 
subtract(const isl::checked::union_map & umap2)7680 isl::checked::union_map basic_map::subtract(const isl::checked::union_map &umap2) const
7681 {
7682   return isl::checked::map(*this).subtract(umap2);
7683 }
7684 
subtract_domain(const isl::checked::union_set & dom)7685 isl::checked::union_map basic_map::subtract_domain(const isl::checked::union_set &dom) const
7686 {
7687   return isl::checked::map(*this).subtract_domain(dom);
7688 }
7689 
subtract_range(const isl::checked::union_set & dom)7690 isl::checked::union_map basic_map::subtract_range(const isl::checked::union_set &dom) const
7691 {
7692   return isl::checked::map(*this).subtract_range(dom);
7693 }
7694 
to_union_map()7695 isl::checked::union_map basic_map::to_union_map() const
7696 {
7697   return isl::checked::map(*this).to_union_map();
7698 }
7699 
uncurry()7700 isl::checked::map basic_map::uncurry() const
7701 {
7702   return isl::checked::map(*this).uncurry();
7703 }
7704 
unite(isl::checked::basic_map bmap2)7705 isl::checked::map basic_map::unite(isl::checked::basic_map bmap2) const
7706 {
7707   auto res = isl_basic_map_union(copy(), bmap2.release());
7708   return manage(res);
7709 }
7710 
unite(const isl::checked::map & map2)7711 isl::checked::map basic_map::unite(const isl::checked::map &map2) const
7712 {
7713   return isl::checked::map(*this).unite(map2);
7714 }
7715 
unite(const isl::checked::union_map & umap2)7716 isl::checked::union_map basic_map::unite(const isl::checked::union_map &umap2) const
7717 {
7718   return isl::checked::map(*this).unite(umap2);
7719 }
7720 
unshifted_simple_hull()7721 isl::checked::basic_map basic_map::unshifted_simple_hull() const
7722 {
7723   return isl::checked::map(*this).unshifted_simple_hull();
7724 }
7725 
upper_bound(const isl::checked::multi_pw_aff & upper)7726 isl::checked::map basic_map::upper_bound(const isl::checked::multi_pw_aff &upper) const
7727 {
7728   return isl::checked::map(*this).upper_bound(upper);
7729 }
7730 
wrap()7731 isl::checked::set basic_map::wrap() const
7732 {
7733   return isl::checked::map(*this).wrap();
7734 }
7735 
zip()7736 isl::checked::map basic_map::zip() const
7737 {
7738   return isl::checked::map(*this).zip();
7739 }
7740 
7741 inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
7742 {
7743   char *str = isl_basic_map_to_str(obj.get());
7744   if (!str) {
7745     os.setstate(std::ios_base::badbit);
7746     return os;
7747   }
7748   os << str;
7749   free(str);
7750   return os;
7751 }
7752 
7753 // implementations for isl::basic_set
manage(__isl_take isl_basic_set * ptr)7754 basic_set manage(__isl_take isl_basic_set *ptr) {
7755   return basic_set(ptr);
7756 }
manage_copy(__isl_keep isl_basic_set * ptr)7757 basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
7758   ptr = isl_basic_set_copy(ptr);
7759   return basic_set(ptr);
7760 }
7761 
basic_set()7762 basic_set::basic_set()
7763     : ptr(nullptr) {}
7764 
basic_set(const basic_set & obj)7765 basic_set::basic_set(const basic_set &obj)
7766     : ptr(nullptr)
7767 {
7768   ptr = obj.copy();
7769 }
7770 
basic_set(__isl_take isl_basic_set * ptr)7771 basic_set::basic_set(__isl_take isl_basic_set *ptr)
7772     : ptr(ptr) {}
7773 
basic_set(isl::checked::point pnt)7774 basic_set::basic_set(isl::checked::point pnt)
7775 {
7776   auto res = isl_basic_set_from_point(pnt.release());
7777   ptr = res;
7778 }
7779 
basic_set(isl::checked::ctx ctx,const std::string & str)7780 basic_set::basic_set(isl::checked::ctx ctx, const std::string &str)
7781 {
7782   auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
7783   ptr = res;
7784 }
7785 
7786 basic_set &basic_set::operator=(basic_set obj) {
7787   std::swap(this->ptr, obj.ptr);
7788   return *this;
7789 }
7790 
~basic_set()7791 basic_set::~basic_set() {
7792   if (ptr)
7793     isl_basic_set_free(ptr);
7794 }
7795 
copy()7796 __isl_give isl_basic_set *basic_set::copy() const & {
7797   return isl_basic_set_copy(ptr);
7798 }
7799 
get()7800 __isl_keep isl_basic_set *basic_set::get() const {
7801   return ptr;
7802 }
7803 
release()7804 __isl_give isl_basic_set *basic_set::release() {
7805   isl_basic_set *tmp = ptr;
7806   ptr = nullptr;
7807   return tmp;
7808 }
7809 
is_null()7810 bool basic_set::is_null() const {
7811   return ptr == nullptr;
7812 }
7813 
ctx()7814 isl::checked::ctx basic_set::ctx() const {
7815   return isl::checked::ctx(isl_basic_set_get_ctx(ptr));
7816 }
7817 
affine_hull()7818 isl::checked::basic_set basic_set::affine_hull() const
7819 {
7820   auto res = isl_basic_set_affine_hull(copy());
7821   return manage(res);
7822 }
7823 
apply(isl::checked::basic_map bmap)7824 isl::checked::basic_set basic_set::apply(isl::checked::basic_map bmap) const
7825 {
7826   auto res = isl_basic_set_apply(copy(), bmap.release());
7827   return manage(res);
7828 }
7829 
apply(const isl::checked::map & map)7830 isl::checked::set basic_set::apply(const isl::checked::map &map) const
7831 {
7832   return isl::checked::set(*this).apply(map);
7833 }
7834 
apply(const isl::checked::union_map & umap)7835 isl::checked::union_set basic_set::apply(const isl::checked::union_map &umap) const
7836 {
7837   return isl::checked::set(*this).apply(umap);
7838 }
7839 
as_pw_multi_aff()7840 isl::checked::pw_multi_aff basic_set::as_pw_multi_aff() const
7841 {
7842   return isl::checked::set(*this).as_pw_multi_aff();
7843 }
7844 
as_set()7845 isl::checked::set basic_set::as_set() const
7846 {
7847   return isl::checked::set(*this).as_set();
7848 }
7849 
bind(const isl::checked::multi_id & tuple)7850 isl::checked::set basic_set::bind(const isl::checked::multi_id &tuple) const
7851 {
7852   return isl::checked::set(*this).bind(tuple);
7853 }
7854 
coalesce()7855 isl::checked::set basic_set::coalesce() const
7856 {
7857   return isl::checked::set(*this).coalesce();
7858 }
7859 
complement()7860 isl::checked::set basic_set::complement() const
7861 {
7862   return isl::checked::set(*this).complement();
7863 }
7864 
compute_divs()7865 isl::checked::union_set basic_set::compute_divs() const
7866 {
7867   return isl::checked::set(*this).compute_divs();
7868 }
7869 
detect_equalities()7870 isl::checked::basic_set basic_set::detect_equalities() const
7871 {
7872   auto res = isl_basic_set_detect_equalities(copy());
7873   return manage(res);
7874 }
7875 
dim_max_val(int pos)7876 isl::checked::val basic_set::dim_max_val(int pos) const
7877 {
7878   auto res = isl_basic_set_dim_max_val(copy(), pos);
7879   return manage(res);
7880 }
7881 
dim_min_val(int pos)7882 isl::checked::val basic_set::dim_min_val(int pos) const
7883 {
7884   return isl::checked::set(*this).dim_min_val(pos);
7885 }
7886 
every_set(const std::function<boolean (isl::checked::set)> & test)7887 boolean basic_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
7888 {
7889   return isl::checked::set(*this).every_set(test);
7890 }
7891 
extract_set(const isl::checked::space & space)7892 isl::checked::set basic_set::extract_set(const isl::checked::space &space) const
7893 {
7894   return isl::checked::set(*this).extract_set(space);
7895 }
7896 
flatten()7897 isl::checked::basic_set basic_set::flatten() const
7898 {
7899   auto res = isl_basic_set_flatten(copy());
7900   return manage(res);
7901 }
7902 
foreach_basic_set(const std::function<stat (isl::checked::basic_set)> & fn)7903 stat basic_set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
7904 {
7905   return isl::checked::set(*this).foreach_basic_set(fn);
7906 }
7907 
foreach_point(const std::function<stat (isl::checked::point)> & fn)7908 stat basic_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
7909 {
7910   return isl::checked::set(*this).foreach_point(fn);
7911 }
7912 
foreach_set(const std::function<stat (isl::checked::set)> & fn)7913 stat basic_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
7914 {
7915   return isl::checked::set(*this).foreach_set(fn);
7916 }
7917 
gist(isl::checked::basic_set context)7918 isl::checked::basic_set basic_set::gist(isl::checked::basic_set context) const
7919 {
7920   auto res = isl_basic_set_gist(copy(), context.release());
7921   return manage(res);
7922 }
7923 
gist(const isl::checked::set & context)7924 isl::checked::set basic_set::gist(const isl::checked::set &context) const
7925 {
7926   return isl::checked::set(*this).gist(context);
7927 }
7928 
gist(const isl::checked::union_set & context)7929 isl::checked::union_set basic_set::gist(const isl::checked::union_set &context) const
7930 {
7931   return isl::checked::set(*this).gist(context);
7932 }
7933 
gist(const isl::checked::point & context)7934 isl::checked::basic_set basic_set::gist(const isl::checked::point &context) const
7935 {
7936   return this->gist(isl::checked::basic_set(context));
7937 }
7938 
gist_params(const isl::checked::set & set)7939 isl::checked::union_set basic_set::gist_params(const isl::checked::set &set) const
7940 {
7941   return isl::checked::set(*this).gist_params(set);
7942 }
7943 
identity()7944 isl::checked::map basic_set::identity() const
7945 {
7946   return isl::checked::set(*this).identity();
7947 }
7948 
indicator_function()7949 isl::checked::pw_aff basic_set::indicator_function() const
7950 {
7951   return isl::checked::set(*this).indicator_function();
7952 }
7953 
insert_domain(const isl::checked::space & domain)7954 isl::checked::map basic_set::insert_domain(const isl::checked::space &domain) const
7955 {
7956   return isl::checked::set(*this).insert_domain(domain);
7957 }
7958 
intersect(isl::checked::basic_set bset2)7959 isl::checked::basic_set basic_set::intersect(isl::checked::basic_set bset2) const
7960 {
7961   auto res = isl_basic_set_intersect(copy(), bset2.release());
7962   return manage(res);
7963 }
7964 
intersect(const isl::checked::set & set2)7965 isl::checked::set basic_set::intersect(const isl::checked::set &set2) const
7966 {
7967   return isl::checked::set(*this).intersect(set2);
7968 }
7969 
intersect(const isl::checked::union_set & uset2)7970 isl::checked::union_set basic_set::intersect(const isl::checked::union_set &uset2) const
7971 {
7972   return isl::checked::set(*this).intersect(uset2);
7973 }
7974 
intersect(const isl::checked::point & bset2)7975 isl::checked::basic_set basic_set::intersect(const isl::checked::point &bset2) const
7976 {
7977   return this->intersect(isl::checked::basic_set(bset2));
7978 }
7979 
intersect_params(isl::checked::basic_set bset2)7980 isl::checked::basic_set basic_set::intersect_params(isl::checked::basic_set bset2) const
7981 {
7982   auto res = isl_basic_set_intersect_params(copy(), bset2.release());
7983   return manage(res);
7984 }
7985 
intersect_params(const isl::checked::set & params)7986 isl::checked::set basic_set::intersect_params(const isl::checked::set &params) const
7987 {
7988   return isl::checked::set(*this).intersect_params(params);
7989 }
7990 
intersect_params(const isl::checked::point & bset2)7991 isl::checked::basic_set basic_set::intersect_params(const isl::checked::point &bset2) const
7992 {
7993   return this->intersect_params(isl::checked::basic_set(bset2));
7994 }
7995 
involves_locals()7996 boolean basic_set::involves_locals() const
7997 {
7998   return isl::checked::set(*this).involves_locals();
7999 }
8000 
is_disjoint(const isl::checked::set & set2)8001 boolean basic_set::is_disjoint(const isl::checked::set &set2) const
8002 {
8003   return isl::checked::set(*this).is_disjoint(set2);
8004 }
8005 
is_disjoint(const isl::checked::union_set & uset2)8006 boolean basic_set::is_disjoint(const isl::checked::union_set &uset2) const
8007 {
8008   return isl::checked::set(*this).is_disjoint(uset2);
8009 }
8010 
is_empty()8011 boolean basic_set::is_empty() const
8012 {
8013   auto res = isl_basic_set_is_empty(get());
8014   return manage(res);
8015 }
8016 
is_equal(const isl::checked::basic_set & bset2)8017 boolean basic_set::is_equal(const isl::checked::basic_set &bset2) const
8018 {
8019   auto res = isl_basic_set_is_equal(get(), bset2.get());
8020   return manage(res);
8021 }
8022 
is_equal(const isl::checked::set & set2)8023 boolean basic_set::is_equal(const isl::checked::set &set2) const
8024 {
8025   return isl::checked::set(*this).is_equal(set2);
8026 }
8027 
is_equal(const isl::checked::union_set & uset2)8028 boolean basic_set::is_equal(const isl::checked::union_set &uset2) const
8029 {
8030   return isl::checked::set(*this).is_equal(uset2);
8031 }
8032 
is_equal(const isl::checked::point & bset2)8033 boolean basic_set::is_equal(const isl::checked::point &bset2) const
8034 {
8035   return this->is_equal(isl::checked::basic_set(bset2));
8036 }
8037 
is_singleton()8038 boolean basic_set::is_singleton() const
8039 {
8040   return isl::checked::set(*this).is_singleton();
8041 }
8042 
is_strict_subset(const isl::checked::set & set2)8043 boolean basic_set::is_strict_subset(const isl::checked::set &set2) const
8044 {
8045   return isl::checked::set(*this).is_strict_subset(set2);
8046 }
8047 
is_strict_subset(const isl::checked::union_set & uset2)8048 boolean basic_set::is_strict_subset(const isl::checked::union_set &uset2) const
8049 {
8050   return isl::checked::set(*this).is_strict_subset(uset2);
8051 }
8052 
is_subset(const isl::checked::basic_set & bset2)8053 boolean basic_set::is_subset(const isl::checked::basic_set &bset2) const
8054 {
8055   auto res = isl_basic_set_is_subset(get(), bset2.get());
8056   return manage(res);
8057 }
8058 
is_subset(const isl::checked::set & set2)8059 boolean basic_set::is_subset(const isl::checked::set &set2) const
8060 {
8061   return isl::checked::set(*this).is_subset(set2);
8062 }
8063 
is_subset(const isl::checked::union_set & uset2)8064 boolean basic_set::is_subset(const isl::checked::union_set &uset2) const
8065 {
8066   return isl::checked::set(*this).is_subset(uset2);
8067 }
8068 
is_subset(const isl::checked::point & bset2)8069 boolean basic_set::is_subset(const isl::checked::point &bset2) const
8070 {
8071   return this->is_subset(isl::checked::basic_set(bset2));
8072 }
8073 
is_wrapping()8074 boolean basic_set::is_wrapping() const
8075 {
8076   auto res = isl_basic_set_is_wrapping(get());
8077   return manage(res);
8078 }
8079 
isa_set()8080 boolean basic_set::isa_set() const
8081 {
8082   return isl::checked::set(*this).isa_set();
8083 }
8084 
lexmax()8085 isl::checked::set basic_set::lexmax() const
8086 {
8087   auto res = isl_basic_set_lexmax(copy());
8088   return manage(res);
8089 }
8090 
lexmax_pw_multi_aff()8091 isl::checked::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
8092 {
8093   return isl::checked::set(*this).lexmax_pw_multi_aff();
8094 }
8095 
lexmin()8096 isl::checked::set basic_set::lexmin() const
8097 {
8098   auto res = isl_basic_set_lexmin(copy());
8099   return manage(res);
8100 }
8101 
lexmin_pw_multi_aff()8102 isl::checked::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
8103 {
8104   return isl::checked::set(*this).lexmin_pw_multi_aff();
8105 }
8106 
lower_bound(const isl::checked::multi_pw_aff & lower)8107 isl::checked::set basic_set::lower_bound(const isl::checked::multi_pw_aff &lower) const
8108 {
8109   return isl::checked::set(*this).lower_bound(lower);
8110 }
8111 
lower_bound(const isl::checked::multi_val & lower)8112 isl::checked::set basic_set::lower_bound(const isl::checked::multi_val &lower) const
8113 {
8114   return isl::checked::set(*this).lower_bound(lower);
8115 }
8116 
max_multi_pw_aff()8117 isl::checked::multi_pw_aff basic_set::max_multi_pw_aff() const
8118 {
8119   return isl::checked::set(*this).max_multi_pw_aff();
8120 }
8121 
max_val(const isl::checked::aff & obj)8122 isl::checked::val basic_set::max_val(const isl::checked::aff &obj) const
8123 {
8124   return isl::checked::set(*this).max_val(obj);
8125 }
8126 
min_multi_pw_aff()8127 isl::checked::multi_pw_aff basic_set::min_multi_pw_aff() const
8128 {
8129   return isl::checked::set(*this).min_multi_pw_aff();
8130 }
8131 
min_val(const isl::checked::aff & obj)8132 isl::checked::val basic_set::min_val(const isl::checked::aff &obj) const
8133 {
8134   return isl::checked::set(*this).min_val(obj);
8135 }
8136 
params()8137 isl::checked::basic_set basic_set::params() const
8138 {
8139   auto res = isl_basic_set_params(copy());
8140   return manage(res);
8141 }
8142 
plain_multi_val_if_fixed()8143 isl::checked::multi_val basic_set::plain_multi_val_if_fixed() const
8144 {
8145   return isl::checked::set(*this).plain_multi_val_if_fixed();
8146 }
8147 
polyhedral_hull()8148 isl::checked::basic_set basic_set::polyhedral_hull() const
8149 {
8150   return isl::checked::set(*this).polyhedral_hull();
8151 }
8152 
preimage(const isl::checked::multi_aff & ma)8153 isl::checked::set basic_set::preimage(const isl::checked::multi_aff &ma) const
8154 {
8155   return isl::checked::set(*this).preimage(ma);
8156 }
8157 
preimage(const isl::checked::multi_pw_aff & mpa)8158 isl::checked::set basic_set::preimage(const isl::checked::multi_pw_aff &mpa) const
8159 {
8160   return isl::checked::set(*this).preimage(mpa);
8161 }
8162 
preimage(const isl::checked::pw_multi_aff & pma)8163 isl::checked::set basic_set::preimage(const isl::checked::pw_multi_aff &pma) const
8164 {
8165   return isl::checked::set(*this).preimage(pma);
8166 }
8167 
preimage(const isl::checked::union_pw_multi_aff & upma)8168 isl::checked::union_set basic_set::preimage(const isl::checked::union_pw_multi_aff &upma) const
8169 {
8170   return isl::checked::set(*this).preimage(upma);
8171 }
8172 
product(const isl::checked::set & set2)8173 isl::checked::set basic_set::product(const isl::checked::set &set2) const
8174 {
8175   return isl::checked::set(*this).product(set2);
8176 }
8177 
project_out_all_params()8178 isl::checked::set basic_set::project_out_all_params() const
8179 {
8180   return isl::checked::set(*this).project_out_all_params();
8181 }
8182 
project_out_param(const isl::checked::id & id)8183 isl::checked::set basic_set::project_out_param(const isl::checked::id &id) const
8184 {
8185   return isl::checked::set(*this).project_out_param(id);
8186 }
8187 
project_out_param(const std::string & id)8188 isl::checked::set basic_set::project_out_param(const std::string &id) const
8189 {
8190   return this->project_out_param(isl::checked::id(ctx(), id));
8191 }
8192 
project_out_param(const isl::checked::id_list & list)8193 isl::checked::set basic_set::project_out_param(const isl::checked::id_list &list) const
8194 {
8195   return isl::checked::set(*this).project_out_param(list);
8196 }
8197 
pw_multi_aff_on_domain(const isl::checked::multi_val & mv)8198 isl::checked::pw_multi_aff basic_set::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
8199 {
8200   return isl::checked::set(*this).pw_multi_aff_on_domain(mv);
8201 }
8202 
sample()8203 isl::checked::basic_set basic_set::sample() const
8204 {
8205   auto res = isl_basic_set_sample(copy());
8206   return manage(res);
8207 }
8208 
sample_point()8209 isl::checked::point basic_set::sample_point() const
8210 {
8211   auto res = isl_basic_set_sample_point(copy());
8212   return manage(res);
8213 }
8214 
simple_fixed_box_hull()8215 isl::checked::fixed_box basic_set::simple_fixed_box_hull() const
8216 {
8217   return isl::checked::set(*this).simple_fixed_box_hull();
8218 }
8219 
space()8220 isl::checked::space basic_set::space() const
8221 {
8222   return isl::checked::set(*this).space();
8223 }
8224 
stride(int pos)8225 isl::checked::val basic_set::stride(int pos) const
8226 {
8227   return isl::checked::set(*this).stride(pos);
8228 }
8229 
subtract(const isl::checked::set & set2)8230 isl::checked::set basic_set::subtract(const isl::checked::set &set2) const
8231 {
8232   return isl::checked::set(*this).subtract(set2);
8233 }
8234 
subtract(const isl::checked::union_set & uset2)8235 isl::checked::union_set basic_set::subtract(const isl::checked::union_set &uset2) const
8236 {
8237   return isl::checked::set(*this).subtract(uset2);
8238 }
8239 
to_list()8240 isl::checked::union_set_list basic_set::to_list() const
8241 {
8242   return isl::checked::set(*this).to_list();
8243 }
8244 
to_set()8245 isl::checked::set basic_set::to_set() const
8246 {
8247   auto res = isl_basic_set_to_set(copy());
8248   return manage(res);
8249 }
8250 
to_union_set()8251 isl::checked::union_set basic_set::to_union_set() const
8252 {
8253   return isl::checked::set(*this).to_union_set();
8254 }
8255 
translation()8256 isl::checked::map basic_set::translation() const
8257 {
8258   return isl::checked::set(*this).translation();
8259 }
8260 
unbind_params(const isl::checked::multi_id & tuple)8261 isl::checked::set basic_set::unbind_params(const isl::checked::multi_id &tuple) const
8262 {
8263   return isl::checked::set(*this).unbind_params(tuple);
8264 }
8265 
unbind_params_insert_domain(const isl::checked::multi_id & domain)8266 isl::checked::map basic_set::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
8267 {
8268   return isl::checked::set(*this).unbind_params_insert_domain(domain);
8269 }
8270 
unite(isl::checked::basic_set bset2)8271 isl::checked::set basic_set::unite(isl::checked::basic_set bset2) const
8272 {
8273   auto res = isl_basic_set_union(copy(), bset2.release());
8274   return manage(res);
8275 }
8276 
unite(const isl::checked::set & set2)8277 isl::checked::set basic_set::unite(const isl::checked::set &set2) const
8278 {
8279   return isl::checked::set(*this).unite(set2);
8280 }
8281 
unite(const isl::checked::union_set & uset2)8282 isl::checked::union_set basic_set::unite(const isl::checked::union_set &uset2) const
8283 {
8284   return isl::checked::set(*this).unite(uset2);
8285 }
8286 
unite(const isl::checked::point & bset2)8287 isl::checked::set basic_set::unite(const isl::checked::point &bset2) const
8288 {
8289   return this->unite(isl::checked::basic_set(bset2));
8290 }
8291 
unshifted_simple_hull()8292 isl::checked::basic_set basic_set::unshifted_simple_hull() const
8293 {
8294   return isl::checked::set(*this).unshifted_simple_hull();
8295 }
8296 
unwrap()8297 isl::checked::map basic_set::unwrap() const
8298 {
8299   return isl::checked::set(*this).unwrap();
8300 }
8301 
upper_bound(const isl::checked::multi_pw_aff & upper)8302 isl::checked::set basic_set::upper_bound(const isl::checked::multi_pw_aff &upper) const
8303 {
8304   return isl::checked::set(*this).upper_bound(upper);
8305 }
8306 
upper_bound(const isl::checked::multi_val & upper)8307 isl::checked::set basic_set::upper_bound(const isl::checked::multi_val &upper) const
8308 {
8309   return isl::checked::set(*this).upper_bound(upper);
8310 }
8311 
8312 inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
8313 {
8314   char *str = isl_basic_set_to_str(obj.get());
8315   if (!str) {
8316     os.setstate(std::ios_base::badbit);
8317     return os;
8318   }
8319   os << str;
8320   free(str);
8321   return os;
8322 }
8323 
8324 // implementations for isl::fixed_box
manage(__isl_take isl_fixed_box * ptr)8325 fixed_box manage(__isl_take isl_fixed_box *ptr) {
8326   return fixed_box(ptr);
8327 }
manage_copy(__isl_keep isl_fixed_box * ptr)8328 fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
8329   ptr = isl_fixed_box_copy(ptr);
8330   return fixed_box(ptr);
8331 }
8332 
fixed_box()8333 fixed_box::fixed_box()
8334     : ptr(nullptr) {}
8335 
fixed_box(const fixed_box & obj)8336 fixed_box::fixed_box(const fixed_box &obj)
8337     : ptr(nullptr)
8338 {
8339   ptr = obj.copy();
8340 }
8341 
fixed_box(__isl_take isl_fixed_box * ptr)8342 fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
8343     : ptr(ptr) {}
8344 
8345 fixed_box &fixed_box::operator=(fixed_box obj) {
8346   std::swap(this->ptr, obj.ptr);
8347   return *this;
8348 }
8349 
~fixed_box()8350 fixed_box::~fixed_box() {
8351   if (ptr)
8352     isl_fixed_box_free(ptr);
8353 }
8354 
copy()8355 __isl_give isl_fixed_box *fixed_box::copy() const & {
8356   return isl_fixed_box_copy(ptr);
8357 }
8358 
get()8359 __isl_keep isl_fixed_box *fixed_box::get() const {
8360   return ptr;
8361 }
8362 
release()8363 __isl_give isl_fixed_box *fixed_box::release() {
8364   isl_fixed_box *tmp = ptr;
8365   ptr = nullptr;
8366   return tmp;
8367 }
8368 
is_null()8369 bool fixed_box::is_null() const {
8370   return ptr == nullptr;
8371 }
8372 
ctx()8373 isl::checked::ctx fixed_box::ctx() const {
8374   return isl::checked::ctx(isl_fixed_box_get_ctx(ptr));
8375 }
8376 
is_valid()8377 boolean fixed_box::is_valid() const
8378 {
8379   auto res = isl_fixed_box_is_valid(get());
8380   return manage(res);
8381 }
8382 
offset()8383 isl::checked::multi_aff fixed_box::offset() const
8384 {
8385   auto res = isl_fixed_box_get_offset(get());
8386   return manage(res);
8387 }
8388 
get_offset()8389 isl::checked::multi_aff fixed_box::get_offset() const
8390 {
8391   return offset();
8392 }
8393 
size()8394 isl::checked::multi_val fixed_box::size() const
8395 {
8396   auto res = isl_fixed_box_get_size(get());
8397   return manage(res);
8398 }
8399 
get_size()8400 isl::checked::multi_val fixed_box::get_size() const
8401 {
8402   return size();
8403 }
8404 
space()8405 isl::checked::space fixed_box::space() const
8406 {
8407   auto res = isl_fixed_box_get_space(get());
8408   return manage(res);
8409 }
8410 
get_space()8411 isl::checked::space fixed_box::get_space() const
8412 {
8413   return space();
8414 }
8415 
8416 inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
8417 {
8418   char *str = isl_fixed_box_to_str(obj.get());
8419   if (!str) {
8420     os.setstate(std::ios_base::badbit);
8421     return os;
8422   }
8423   os << str;
8424   free(str);
8425   return os;
8426 }
8427 
8428 // implementations for isl::id
manage(__isl_take isl_id * ptr)8429 id manage(__isl_take isl_id *ptr) {
8430   return id(ptr);
8431 }
manage_copy(__isl_keep isl_id * ptr)8432 id manage_copy(__isl_keep isl_id *ptr) {
8433   ptr = isl_id_copy(ptr);
8434   return id(ptr);
8435 }
8436 
id()8437 id::id()
8438     : ptr(nullptr) {}
8439 
id(const id & obj)8440 id::id(const id &obj)
8441     : ptr(nullptr)
8442 {
8443   ptr = obj.copy();
8444 }
8445 
id(__isl_take isl_id * ptr)8446 id::id(__isl_take isl_id *ptr)
8447     : ptr(ptr) {}
8448 
id(isl::checked::ctx ctx,const std::string & str)8449 id::id(isl::checked::ctx ctx, const std::string &str)
8450 {
8451   auto res = isl_id_read_from_str(ctx.release(), str.c_str());
8452   ptr = res;
8453 }
8454 
8455 id &id::operator=(id obj) {
8456   std::swap(this->ptr, obj.ptr);
8457   return *this;
8458 }
8459 
~id()8460 id::~id() {
8461   if (ptr)
8462     isl_id_free(ptr);
8463 }
8464 
copy()8465 __isl_give isl_id *id::copy() const & {
8466   return isl_id_copy(ptr);
8467 }
8468 
get()8469 __isl_keep isl_id *id::get() const {
8470   return ptr;
8471 }
8472 
release()8473 __isl_give isl_id *id::release() {
8474   isl_id *tmp = ptr;
8475   ptr = nullptr;
8476   return tmp;
8477 }
8478 
is_null()8479 bool id::is_null() const {
8480   return ptr == nullptr;
8481 }
8482 
ctx()8483 isl::checked::ctx id::ctx() const {
8484   return isl::checked::ctx(isl_id_get_ctx(ptr));
8485 }
8486 
name()8487 std::string id::name() const
8488 {
8489   auto res = isl_id_get_name(get());
8490   std::string tmp(res);
8491   return tmp;
8492 }
8493 
get_name()8494 std::string id::get_name() const
8495 {
8496   return name();
8497 }
8498 
to_list()8499 isl::checked::id_list id::to_list() const
8500 {
8501   auto res = isl_id_to_list(copy());
8502   return manage(res);
8503 }
8504 
8505 inline std::ostream &operator<<(std::ostream &os, const id &obj)
8506 {
8507   char *str = isl_id_to_str(obj.get());
8508   if (!str) {
8509     os.setstate(std::ios_base::badbit);
8510     return os;
8511   }
8512   os << str;
8513   free(str);
8514   return os;
8515 }
8516 
8517 // implementations for isl::id_list
manage(__isl_take isl_id_list * ptr)8518 id_list manage(__isl_take isl_id_list *ptr) {
8519   return id_list(ptr);
8520 }
manage_copy(__isl_keep isl_id_list * ptr)8521 id_list manage_copy(__isl_keep isl_id_list *ptr) {
8522   ptr = isl_id_list_copy(ptr);
8523   return id_list(ptr);
8524 }
8525 
id_list()8526 id_list::id_list()
8527     : ptr(nullptr) {}
8528 
id_list(const id_list & obj)8529 id_list::id_list(const id_list &obj)
8530     : ptr(nullptr)
8531 {
8532   ptr = obj.copy();
8533 }
8534 
id_list(__isl_take isl_id_list * ptr)8535 id_list::id_list(__isl_take isl_id_list *ptr)
8536     : ptr(ptr) {}
8537 
id_list(isl::checked::ctx ctx,int n)8538 id_list::id_list(isl::checked::ctx ctx, int n)
8539 {
8540   auto res = isl_id_list_alloc(ctx.release(), n);
8541   ptr = res;
8542 }
8543 
id_list(isl::checked::id el)8544 id_list::id_list(isl::checked::id el)
8545 {
8546   auto res = isl_id_list_from_id(el.release());
8547   ptr = res;
8548 }
8549 
8550 id_list &id_list::operator=(id_list obj) {
8551   std::swap(this->ptr, obj.ptr);
8552   return *this;
8553 }
8554 
~id_list()8555 id_list::~id_list() {
8556   if (ptr)
8557     isl_id_list_free(ptr);
8558 }
8559 
copy()8560 __isl_give isl_id_list *id_list::copy() const & {
8561   return isl_id_list_copy(ptr);
8562 }
8563 
get()8564 __isl_keep isl_id_list *id_list::get() const {
8565   return ptr;
8566 }
8567 
release()8568 __isl_give isl_id_list *id_list::release() {
8569   isl_id_list *tmp = ptr;
8570   ptr = nullptr;
8571   return tmp;
8572 }
8573 
is_null()8574 bool id_list::is_null() const {
8575   return ptr == nullptr;
8576 }
8577 
ctx()8578 isl::checked::ctx id_list::ctx() const {
8579   return isl::checked::ctx(isl_id_list_get_ctx(ptr));
8580 }
8581 
add(isl::checked::id el)8582 isl::checked::id_list id_list::add(isl::checked::id el) const
8583 {
8584   auto res = isl_id_list_add(copy(), el.release());
8585   return manage(res);
8586 }
8587 
add(const std::string & el)8588 isl::checked::id_list id_list::add(const std::string &el) const
8589 {
8590   return this->add(isl::checked::id(ctx(), el));
8591 }
8592 
at(int index)8593 isl::checked::id id_list::at(int index) const
8594 {
8595   auto res = isl_id_list_get_at(get(), index);
8596   return manage(res);
8597 }
8598 
get_at(int index)8599 isl::checked::id id_list::get_at(int index) const
8600 {
8601   return at(index);
8602 }
8603 
clear()8604 isl::checked::id_list id_list::clear() const
8605 {
8606   auto res = isl_id_list_clear(copy());
8607   return manage(res);
8608 }
8609 
concat(isl::checked::id_list list2)8610 isl::checked::id_list id_list::concat(isl::checked::id_list list2) const
8611 {
8612   auto res = isl_id_list_concat(copy(), list2.release());
8613   return manage(res);
8614 }
8615 
drop(unsigned int first,unsigned int n)8616 isl::checked::id_list id_list::drop(unsigned int first, unsigned int n) const
8617 {
8618   auto res = isl_id_list_drop(copy(), first, n);
8619   return manage(res);
8620 }
8621 
foreach(const std::function<stat (isl::checked::id)> & fn)8622 stat id_list::foreach(const std::function<stat(isl::checked::id)> &fn) const
8623 {
8624   struct fn_data {
8625     std::function<stat(isl::checked::id)> func;
8626   } fn_data = { fn };
8627   auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
8628     auto *data = static_cast<struct fn_data *>(arg_1);
8629     auto ret = (data->func)(manage(arg_0));
8630     return ret.release();
8631   };
8632   auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
8633   return manage(res);
8634 }
8635 
insert(unsigned int pos,isl::checked::id el)8636 isl::checked::id_list id_list::insert(unsigned int pos, isl::checked::id el) const
8637 {
8638   auto res = isl_id_list_insert(copy(), pos, el.release());
8639   return manage(res);
8640 }
8641 
insert(unsigned int pos,const std::string & el)8642 isl::checked::id_list id_list::insert(unsigned int pos, const std::string &el) const
8643 {
8644   return this->insert(pos, isl::checked::id(ctx(), el));
8645 }
8646 
size()8647 class size id_list::size() const
8648 {
8649   auto res = isl_id_list_size(get());
8650   return manage(res);
8651 }
8652 
8653 inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
8654 {
8655   char *str = isl_id_list_to_str(obj.get());
8656   if (!str) {
8657     os.setstate(std::ios_base::badbit);
8658     return os;
8659   }
8660   os << str;
8661   free(str);
8662   return os;
8663 }
8664 
8665 // implementations for isl::map
manage(__isl_take isl_map * ptr)8666 map manage(__isl_take isl_map *ptr) {
8667   return map(ptr);
8668 }
manage_copy(__isl_keep isl_map * ptr)8669 map manage_copy(__isl_keep isl_map *ptr) {
8670   ptr = isl_map_copy(ptr);
8671   return map(ptr);
8672 }
8673 
map()8674 map::map()
8675     : ptr(nullptr) {}
8676 
map(const map & obj)8677 map::map(const map &obj)
8678     : ptr(nullptr)
8679 {
8680   ptr = obj.copy();
8681 }
8682 
map(__isl_take isl_map * ptr)8683 map::map(__isl_take isl_map *ptr)
8684     : ptr(ptr) {}
8685 
map(isl::checked::basic_map bmap)8686 map::map(isl::checked::basic_map bmap)
8687 {
8688   auto res = isl_map_from_basic_map(bmap.release());
8689   ptr = res;
8690 }
8691 
map(isl::checked::ctx ctx,const std::string & str)8692 map::map(isl::checked::ctx ctx, const std::string &str)
8693 {
8694   auto res = isl_map_read_from_str(ctx.release(), str.c_str());
8695   ptr = res;
8696 }
8697 
8698 map &map::operator=(map obj) {
8699   std::swap(this->ptr, obj.ptr);
8700   return *this;
8701 }
8702 
~map()8703 map::~map() {
8704   if (ptr)
8705     isl_map_free(ptr);
8706 }
8707 
copy()8708 __isl_give isl_map *map::copy() const & {
8709   return isl_map_copy(ptr);
8710 }
8711 
get()8712 __isl_keep isl_map *map::get() const {
8713   return ptr;
8714 }
8715 
release()8716 __isl_give isl_map *map::release() {
8717   isl_map *tmp = ptr;
8718   ptr = nullptr;
8719   return tmp;
8720 }
8721 
is_null()8722 bool map::is_null() const {
8723   return ptr == nullptr;
8724 }
8725 
ctx()8726 isl::checked::ctx map::ctx() const {
8727   return isl::checked::ctx(isl_map_get_ctx(ptr));
8728 }
8729 
affine_hull()8730 isl::checked::basic_map map::affine_hull() const
8731 {
8732   auto res = isl_map_affine_hull(copy());
8733   return manage(res);
8734 }
8735 
apply_domain(isl::checked::map map2)8736 isl::checked::map map::apply_domain(isl::checked::map map2) const
8737 {
8738   auto res = isl_map_apply_domain(copy(), map2.release());
8739   return manage(res);
8740 }
8741 
apply_domain(const isl::checked::union_map & umap2)8742 isl::checked::union_map map::apply_domain(const isl::checked::union_map &umap2) const
8743 {
8744   return isl::checked::union_map(*this).apply_domain(umap2);
8745 }
8746 
apply_domain(const isl::checked::basic_map & map2)8747 isl::checked::map map::apply_domain(const isl::checked::basic_map &map2) const
8748 {
8749   return this->apply_domain(isl::checked::map(map2));
8750 }
8751 
apply_range(isl::checked::map map2)8752 isl::checked::map map::apply_range(isl::checked::map map2) const
8753 {
8754   auto res = isl_map_apply_range(copy(), map2.release());
8755   return manage(res);
8756 }
8757 
apply_range(const isl::checked::union_map & umap2)8758 isl::checked::union_map map::apply_range(const isl::checked::union_map &umap2) const
8759 {
8760   return isl::checked::union_map(*this).apply_range(umap2);
8761 }
8762 
apply_range(const isl::checked::basic_map & map2)8763 isl::checked::map map::apply_range(const isl::checked::basic_map &map2) const
8764 {
8765   return this->apply_range(isl::checked::map(map2));
8766 }
8767 
as_map()8768 isl::checked::map map::as_map() const
8769 {
8770   return isl::checked::union_map(*this).as_map();
8771 }
8772 
as_multi_union_pw_aff()8773 isl::checked::multi_union_pw_aff map::as_multi_union_pw_aff() const
8774 {
8775   return isl::checked::union_map(*this).as_multi_union_pw_aff();
8776 }
8777 
as_pw_multi_aff()8778 isl::checked::pw_multi_aff map::as_pw_multi_aff() const
8779 {
8780   auto res = isl_map_as_pw_multi_aff(copy());
8781   return manage(res);
8782 }
8783 
as_union_pw_multi_aff()8784 isl::checked::union_pw_multi_aff map::as_union_pw_multi_aff() const
8785 {
8786   return isl::checked::union_map(*this).as_union_pw_multi_aff();
8787 }
8788 
bind_domain(isl::checked::multi_id tuple)8789 isl::checked::set map::bind_domain(isl::checked::multi_id tuple) const
8790 {
8791   auto res = isl_map_bind_domain(copy(), tuple.release());
8792   return manage(res);
8793 }
8794 
bind_range(isl::checked::multi_id tuple)8795 isl::checked::set map::bind_range(isl::checked::multi_id tuple) const
8796 {
8797   auto res = isl_map_bind_range(copy(), tuple.release());
8798   return manage(res);
8799 }
8800 
coalesce()8801 isl::checked::map map::coalesce() const
8802 {
8803   auto res = isl_map_coalesce(copy());
8804   return manage(res);
8805 }
8806 
complement()8807 isl::checked::map map::complement() const
8808 {
8809   auto res = isl_map_complement(copy());
8810   return manage(res);
8811 }
8812 
compute_divs()8813 isl::checked::union_map map::compute_divs() const
8814 {
8815   return isl::checked::union_map(*this).compute_divs();
8816 }
8817 
curry()8818 isl::checked::map map::curry() const
8819 {
8820   auto res = isl_map_curry(copy());
8821   return manage(res);
8822 }
8823 
deltas()8824 isl::checked::set map::deltas() const
8825 {
8826   auto res = isl_map_deltas(copy());
8827   return manage(res);
8828 }
8829 
detect_equalities()8830 isl::checked::map map::detect_equalities() const
8831 {
8832   auto res = isl_map_detect_equalities(copy());
8833   return manage(res);
8834 }
8835 
domain()8836 isl::checked::set map::domain() const
8837 {
8838   auto res = isl_map_domain(copy());
8839   return manage(res);
8840 }
8841 
domain_factor_domain()8842 isl::checked::map map::domain_factor_domain() const
8843 {
8844   auto res = isl_map_domain_factor_domain(copy());
8845   return manage(res);
8846 }
8847 
domain_factor_range()8848 isl::checked::map map::domain_factor_range() const
8849 {
8850   auto res = isl_map_domain_factor_range(copy());
8851   return manage(res);
8852 }
8853 
domain_map()8854 isl::checked::union_map map::domain_map() const
8855 {
8856   return isl::checked::union_map(*this).domain_map();
8857 }
8858 
domain_map_union_pw_multi_aff()8859 isl::checked::union_pw_multi_aff map::domain_map_union_pw_multi_aff() const
8860 {
8861   return isl::checked::union_map(*this).domain_map_union_pw_multi_aff();
8862 }
8863 
domain_product(isl::checked::map map2)8864 isl::checked::map map::domain_product(isl::checked::map map2) const
8865 {
8866   auto res = isl_map_domain_product(copy(), map2.release());
8867   return manage(res);
8868 }
8869 
domain_product(const isl::checked::union_map & umap2)8870 isl::checked::union_map map::domain_product(const isl::checked::union_map &umap2) const
8871 {
8872   return isl::checked::union_map(*this).domain_product(umap2);
8873 }
8874 
domain_product(const isl::checked::basic_map & map2)8875 isl::checked::map map::domain_product(const isl::checked::basic_map &map2) const
8876 {
8877   return this->domain_product(isl::checked::map(map2));
8878 }
8879 
domain_tuple_id()8880 isl::checked::id map::domain_tuple_id() const
8881 {
8882   auto res = isl_map_get_domain_tuple_id(get());
8883   return manage(res);
8884 }
8885 
get_domain_tuple_id()8886 isl::checked::id map::get_domain_tuple_id() const
8887 {
8888   return domain_tuple_id();
8889 }
8890 
empty(isl::checked::space space)8891 isl::checked::map map::empty(isl::checked::space space)
8892 {
8893   auto res = isl_map_empty(space.release());
8894   return manage(res);
8895 }
8896 
eq_at(isl::checked::multi_pw_aff mpa)8897 isl::checked::map map::eq_at(isl::checked::multi_pw_aff mpa) const
8898 {
8899   auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
8900   return manage(res);
8901 }
8902 
eq_at(const isl::checked::multi_union_pw_aff & mupa)8903 isl::checked::union_map map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
8904 {
8905   return isl::checked::union_map(*this).eq_at(mupa);
8906 }
8907 
eq_at(const isl::checked::aff & mpa)8908 isl::checked::map map::eq_at(const isl::checked::aff &mpa) const
8909 {
8910   return this->eq_at(isl::checked::multi_pw_aff(mpa));
8911 }
8912 
eq_at(const isl::checked::multi_aff & mpa)8913 isl::checked::map map::eq_at(const isl::checked::multi_aff &mpa) const
8914 {
8915   return this->eq_at(isl::checked::multi_pw_aff(mpa));
8916 }
8917 
eq_at(const isl::checked::pw_aff & mpa)8918 isl::checked::map map::eq_at(const isl::checked::pw_aff &mpa) const
8919 {
8920   return this->eq_at(isl::checked::multi_pw_aff(mpa));
8921 }
8922 
eq_at(const isl::checked::pw_multi_aff & mpa)8923 isl::checked::map map::eq_at(const isl::checked::pw_multi_aff &mpa) const
8924 {
8925   return this->eq_at(isl::checked::multi_pw_aff(mpa));
8926 }
8927 
every_map(const std::function<boolean (isl::checked::map)> & test)8928 boolean map::every_map(const std::function<boolean(isl::checked::map)> &test) const
8929 {
8930   return isl::checked::union_map(*this).every_map(test);
8931 }
8932 
extract_map(const isl::checked::space & space)8933 isl::checked::map map::extract_map(const isl::checked::space &space) const
8934 {
8935   return isl::checked::union_map(*this).extract_map(space);
8936 }
8937 
factor_domain()8938 isl::checked::map map::factor_domain() const
8939 {
8940   auto res = isl_map_factor_domain(copy());
8941   return manage(res);
8942 }
8943 
factor_range()8944 isl::checked::map map::factor_range() const
8945 {
8946   auto res = isl_map_factor_range(copy());
8947   return manage(res);
8948 }
8949 
fixed_power(const isl::checked::val & exp)8950 isl::checked::union_map map::fixed_power(const isl::checked::val &exp) const
8951 {
8952   return isl::checked::union_map(*this).fixed_power(exp);
8953 }
8954 
fixed_power(long exp)8955 isl::checked::union_map map::fixed_power(long exp) const
8956 {
8957   return this->fixed_power(isl::checked::val(ctx(), exp));
8958 }
8959 
flatten()8960 isl::checked::map map::flatten() const
8961 {
8962   auto res = isl_map_flatten(copy());
8963   return manage(res);
8964 }
8965 
flatten_domain()8966 isl::checked::map map::flatten_domain() const
8967 {
8968   auto res = isl_map_flatten_domain(copy());
8969   return manage(res);
8970 }
8971 
flatten_range()8972 isl::checked::map map::flatten_range() const
8973 {
8974   auto res = isl_map_flatten_range(copy());
8975   return manage(res);
8976 }
8977 
foreach_basic_map(const std::function<stat (isl::checked::basic_map)> & fn)8978 stat map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
8979 {
8980   struct fn_data {
8981     std::function<stat(isl::checked::basic_map)> func;
8982   } fn_data = { fn };
8983   auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
8984     auto *data = static_cast<struct fn_data *>(arg_1);
8985     auto ret = (data->func)(manage(arg_0));
8986     return ret.release();
8987   };
8988   auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
8989   return manage(res);
8990 }
8991 
foreach_map(const std::function<stat (isl::checked::map)> & fn)8992 stat map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
8993 {
8994   return isl::checked::union_map(*this).foreach_map(fn);
8995 }
8996 
gist(isl::checked::map context)8997 isl::checked::map map::gist(isl::checked::map context) const
8998 {
8999   auto res = isl_map_gist(copy(), context.release());
9000   return manage(res);
9001 }
9002 
gist(const isl::checked::union_map & context)9003 isl::checked::union_map map::gist(const isl::checked::union_map &context) const
9004 {
9005   return isl::checked::union_map(*this).gist(context);
9006 }
9007 
gist(const isl::checked::basic_map & context)9008 isl::checked::map map::gist(const isl::checked::basic_map &context) const
9009 {
9010   return this->gist(isl::checked::map(context));
9011 }
9012 
gist_domain(isl::checked::set context)9013 isl::checked::map map::gist_domain(isl::checked::set context) const
9014 {
9015   auto res = isl_map_gist_domain(copy(), context.release());
9016   return manage(res);
9017 }
9018 
gist_domain(const isl::checked::union_set & uset)9019 isl::checked::union_map map::gist_domain(const isl::checked::union_set &uset) const
9020 {
9021   return isl::checked::union_map(*this).gist_domain(uset);
9022 }
9023 
gist_domain(const isl::checked::basic_set & context)9024 isl::checked::map map::gist_domain(const isl::checked::basic_set &context) const
9025 {
9026   return this->gist_domain(isl::checked::set(context));
9027 }
9028 
gist_domain(const isl::checked::point & context)9029 isl::checked::map map::gist_domain(const isl::checked::point &context) const
9030 {
9031   return this->gist_domain(isl::checked::set(context));
9032 }
9033 
gist_params(const isl::checked::set & set)9034 isl::checked::union_map map::gist_params(const isl::checked::set &set) const
9035 {
9036   return isl::checked::union_map(*this).gist_params(set);
9037 }
9038 
gist_range(const isl::checked::union_set & uset)9039 isl::checked::union_map map::gist_range(const isl::checked::union_set &uset) const
9040 {
9041   return isl::checked::union_map(*this).gist_range(uset);
9042 }
9043 
has_domain_tuple_id()9044 boolean map::has_domain_tuple_id() const
9045 {
9046   auto res = isl_map_has_domain_tuple_id(get());
9047   return manage(res);
9048 }
9049 
has_range_tuple_id()9050 boolean map::has_range_tuple_id() const
9051 {
9052   auto res = isl_map_has_range_tuple_id(get());
9053   return manage(res);
9054 }
9055 
intersect(isl::checked::map map2)9056 isl::checked::map map::intersect(isl::checked::map map2) const
9057 {
9058   auto res = isl_map_intersect(copy(), map2.release());
9059   return manage(res);
9060 }
9061 
intersect(const isl::checked::union_map & umap2)9062 isl::checked::union_map map::intersect(const isl::checked::union_map &umap2) const
9063 {
9064   return isl::checked::union_map(*this).intersect(umap2);
9065 }
9066 
intersect(const isl::checked::basic_map & map2)9067 isl::checked::map map::intersect(const isl::checked::basic_map &map2) const
9068 {
9069   return this->intersect(isl::checked::map(map2));
9070 }
9071 
intersect_domain(isl::checked::set set)9072 isl::checked::map map::intersect_domain(isl::checked::set set) const
9073 {
9074   auto res = isl_map_intersect_domain(copy(), set.release());
9075   return manage(res);
9076 }
9077 
intersect_domain(const isl::checked::space & space)9078 isl::checked::union_map map::intersect_domain(const isl::checked::space &space) const
9079 {
9080   return isl::checked::union_map(*this).intersect_domain(space);
9081 }
9082 
intersect_domain(const isl::checked::union_set & uset)9083 isl::checked::union_map map::intersect_domain(const isl::checked::union_set &uset) const
9084 {
9085   return isl::checked::union_map(*this).intersect_domain(uset);
9086 }
9087 
intersect_domain(const isl::checked::basic_set & set)9088 isl::checked::map map::intersect_domain(const isl::checked::basic_set &set) const
9089 {
9090   return this->intersect_domain(isl::checked::set(set));
9091 }
9092 
intersect_domain(const isl::checked::point & set)9093 isl::checked::map map::intersect_domain(const isl::checked::point &set) const
9094 {
9095   return this->intersect_domain(isl::checked::set(set));
9096 }
9097 
intersect_domain_factor_domain(isl::checked::map factor)9098 isl::checked::map map::intersect_domain_factor_domain(isl::checked::map factor) const
9099 {
9100   auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
9101   return manage(res);
9102 }
9103 
intersect_domain_factor_domain(const isl::checked::union_map & factor)9104 isl::checked::union_map map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
9105 {
9106   return isl::checked::union_map(*this).intersect_domain_factor_domain(factor);
9107 }
9108 
intersect_domain_factor_domain(const isl::checked::basic_map & factor)9109 isl::checked::map map::intersect_domain_factor_domain(const isl::checked::basic_map &factor) const
9110 {
9111   return this->intersect_domain_factor_domain(isl::checked::map(factor));
9112 }
9113 
intersect_domain_factor_range(isl::checked::map factor)9114 isl::checked::map map::intersect_domain_factor_range(isl::checked::map factor) const
9115 {
9116   auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
9117   return manage(res);
9118 }
9119 
intersect_domain_factor_range(const isl::checked::union_map & factor)9120 isl::checked::union_map map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
9121 {
9122   return isl::checked::union_map(*this).intersect_domain_factor_range(factor);
9123 }
9124 
intersect_domain_factor_range(const isl::checked::basic_map & factor)9125 isl::checked::map map::intersect_domain_factor_range(const isl::checked::basic_map &factor) const
9126 {
9127   return this->intersect_domain_factor_range(isl::checked::map(factor));
9128 }
9129 
intersect_params(isl::checked::set params)9130 isl::checked::map map::intersect_params(isl::checked::set params) const
9131 {
9132   auto res = isl_map_intersect_params(copy(), params.release());
9133   return manage(res);
9134 }
9135 
intersect_range(isl::checked::set set)9136 isl::checked::map map::intersect_range(isl::checked::set set) const
9137 {
9138   auto res = isl_map_intersect_range(copy(), set.release());
9139   return manage(res);
9140 }
9141 
intersect_range(const isl::checked::space & space)9142 isl::checked::union_map map::intersect_range(const isl::checked::space &space) const
9143 {
9144   return isl::checked::union_map(*this).intersect_range(space);
9145 }
9146 
intersect_range(const isl::checked::union_set & uset)9147 isl::checked::union_map map::intersect_range(const isl::checked::union_set &uset) const
9148 {
9149   return isl::checked::union_map(*this).intersect_range(uset);
9150 }
9151 
intersect_range(const isl::checked::basic_set & set)9152 isl::checked::map map::intersect_range(const isl::checked::basic_set &set) const
9153 {
9154   return this->intersect_range(isl::checked::set(set));
9155 }
9156 
intersect_range(const isl::checked::point & set)9157 isl::checked::map map::intersect_range(const isl::checked::point &set) const
9158 {
9159   return this->intersect_range(isl::checked::set(set));
9160 }
9161 
intersect_range_factor_domain(isl::checked::map factor)9162 isl::checked::map map::intersect_range_factor_domain(isl::checked::map factor) const
9163 {
9164   auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
9165   return manage(res);
9166 }
9167 
intersect_range_factor_domain(const isl::checked::union_map & factor)9168 isl::checked::union_map map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
9169 {
9170   return isl::checked::union_map(*this).intersect_range_factor_domain(factor);
9171 }
9172 
intersect_range_factor_domain(const isl::checked::basic_map & factor)9173 isl::checked::map map::intersect_range_factor_domain(const isl::checked::basic_map &factor) const
9174 {
9175   return this->intersect_range_factor_domain(isl::checked::map(factor));
9176 }
9177 
intersect_range_factor_range(isl::checked::map factor)9178 isl::checked::map map::intersect_range_factor_range(isl::checked::map factor) const
9179 {
9180   auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
9181   return manage(res);
9182 }
9183 
intersect_range_factor_range(const isl::checked::union_map & factor)9184 isl::checked::union_map map::intersect_range_factor_range(const isl::checked::union_map &factor) const
9185 {
9186   return isl::checked::union_map(*this).intersect_range_factor_range(factor);
9187 }
9188 
intersect_range_factor_range(const isl::checked::basic_map & factor)9189 isl::checked::map map::intersect_range_factor_range(const isl::checked::basic_map &factor) const
9190 {
9191   return this->intersect_range_factor_range(isl::checked::map(factor));
9192 }
9193 
is_bijective()9194 boolean map::is_bijective() const
9195 {
9196   auto res = isl_map_is_bijective(get());
9197   return manage(res);
9198 }
9199 
is_disjoint(const isl::checked::map & map2)9200 boolean map::is_disjoint(const isl::checked::map &map2) const
9201 {
9202   auto res = isl_map_is_disjoint(get(), map2.get());
9203   return manage(res);
9204 }
9205 
is_disjoint(const isl::checked::union_map & umap2)9206 boolean map::is_disjoint(const isl::checked::union_map &umap2) const
9207 {
9208   return isl::checked::union_map(*this).is_disjoint(umap2);
9209 }
9210 
is_disjoint(const isl::checked::basic_map & map2)9211 boolean map::is_disjoint(const isl::checked::basic_map &map2) const
9212 {
9213   return this->is_disjoint(isl::checked::map(map2));
9214 }
9215 
is_empty()9216 boolean map::is_empty() const
9217 {
9218   auto res = isl_map_is_empty(get());
9219   return manage(res);
9220 }
9221 
is_equal(const isl::checked::map & map2)9222 boolean map::is_equal(const isl::checked::map &map2) const
9223 {
9224   auto res = isl_map_is_equal(get(), map2.get());
9225   return manage(res);
9226 }
9227 
is_equal(const isl::checked::union_map & umap2)9228 boolean map::is_equal(const isl::checked::union_map &umap2) const
9229 {
9230   return isl::checked::union_map(*this).is_equal(umap2);
9231 }
9232 
is_equal(const isl::checked::basic_map & map2)9233 boolean map::is_equal(const isl::checked::basic_map &map2) const
9234 {
9235   return this->is_equal(isl::checked::map(map2));
9236 }
9237 
is_injective()9238 boolean map::is_injective() const
9239 {
9240   auto res = isl_map_is_injective(get());
9241   return manage(res);
9242 }
9243 
is_single_valued()9244 boolean map::is_single_valued() const
9245 {
9246   auto res = isl_map_is_single_valued(get());
9247   return manage(res);
9248 }
9249 
is_strict_subset(const isl::checked::map & map2)9250 boolean map::is_strict_subset(const isl::checked::map &map2) const
9251 {
9252   auto res = isl_map_is_strict_subset(get(), map2.get());
9253   return manage(res);
9254 }
9255 
is_strict_subset(const isl::checked::union_map & umap2)9256 boolean map::is_strict_subset(const isl::checked::union_map &umap2) const
9257 {
9258   return isl::checked::union_map(*this).is_strict_subset(umap2);
9259 }
9260 
is_strict_subset(const isl::checked::basic_map & map2)9261 boolean map::is_strict_subset(const isl::checked::basic_map &map2) const
9262 {
9263   return this->is_strict_subset(isl::checked::map(map2));
9264 }
9265 
is_subset(const isl::checked::map & map2)9266 boolean map::is_subset(const isl::checked::map &map2) const
9267 {
9268   auto res = isl_map_is_subset(get(), map2.get());
9269   return manage(res);
9270 }
9271 
is_subset(const isl::checked::union_map & umap2)9272 boolean map::is_subset(const isl::checked::union_map &umap2) const
9273 {
9274   return isl::checked::union_map(*this).is_subset(umap2);
9275 }
9276 
is_subset(const isl::checked::basic_map & map2)9277 boolean map::is_subset(const isl::checked::basic_map &map2) const
9278 {
9279   return this->is_subset(isl::checked::map(map2));
9280 }
9281 
isa_map()9282 boolean map::isa_map() const
9283 {
9284   return isl::checked::union_map(*this).isa_map();
9285 }
9286 
lex_ge_at(isl::checked::multi_pw_aff mpa)9287 isl::checked::map map::lex_ge_at(isl::checked::multi_pw_aff mpa) const
9288 {
9289   auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
9290   return manage(res);
9291 }
9292 
lex_gt_at(isl::checked::multi_pw_aff mpa)9293 isl::checked::map map::lex_gt_at(isl::checked::multi_pw_aff mpa) const
9294 {
9295   auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
9296   return manage(res);
9297 }
9298 
lex_le_at(isl::checked::multi_pw_aff mpa)9299 isl::checked::map map::lex_le_at(isl::checked::multi_pw_aff mpa) const
9300 {
9301   auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
9302   return manage(res);
9303 }
9304 
lex_lt_at(isl::checked::multi_pw_aff mpa)9305 isl::checked::map map::lex_lt_at(isl::checked::multi_pw_aff mpa) const
9306 {
9307   auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
9308   return manage(res);
9309 }
9310 
lexmax()9311 isl::checked::map map::lexmax() const
9312 {
9313   auto res = isl_map_lexmax(copy());
9314   return manage(res);
9315 }
9316 
lexmax_pw_multi_aff()9317 isl::checked::pw_multi_aff map::lexmax_pw_multi_aff() const
9318 {
9319   auto res = isl_map_lexmax_pw_multi_aff(copy());
9320   return manage(res);
9321 }
9322 
lexmin()9323 isl::checked::map map::lexmin() const
9324 {
9325   auto res = isl_map_lexmin(copy());
9326   return manage(res);
9327 }
9328 
lexmin_pw_multi_aff()9329 isl::checked::pw_multi_aff map::lexmin_pw_multi_aff() const
9330 {
9331   auto res = isl_map_lexmin_pw_multi_aff(copy());
9332   return manage(res);
9333 }
9334 
lower_bound(isl::checked::multi_pw_aff lower)9335 isl::checked::map map::lower_bound(isl::checked::multi_pw_aff lower) const
9336 {
9337   auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
9338   return manage(res);
9339 }
9340 
max_multi_pw_aff()9341 isl::checked::multi_pw_aff map::max_multi_pw_aff() const
9342 {
9343   auto res = isl_map_max_multi_pw_aff(copy());
9344   return manage(res);
9345 }
9346 
min_multi_pw_aff()9347 isl::checked::multi_pw_aff map::min_multi_pw_aff() const
9348 {
9349   auto res = isl_map_min_multi_pw_aff(copy());
9350   return manage(res);
9351 }
9352 
polyhedral_hull()9353 isl::checked::basic_map map::polyhedral_hull() const
9354 {
9355   auto res = isl_map_polyhedral_hull(copy());
9356   return manage(res);
9357 }
9358 
preimage_domain(isl::checked::multi_aff ma)9359 isl::checked::map map::preimage_domain(isl::checked::multi_aff ma) const
9360 {
9361   auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
9362   return manage(res);
9363 }
9364 
preimage_domain(isl::checked::multi_pw_aff mpa)9365 isl::checked::map map::preimage_domain(isl::checked::multi_pw_aff mpa) const
9366 {
9367   auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
9368   return manage(res);
9369 }
9370 
preimage_domain(isl::checked::pw_multi_aff pma)9371 isl::checked::map map::preimage_domain(isl::checked::pw_multi_aff pma) const
9372 {
9373   auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
9374   return manage(res);
9375 }
9376 
preimage_domain(const isl::checked::union_pw_multi_aff & upma)9377 isl::checked::union_map map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
9378 {
9379   return isl::checked::union_map(*this).preimage_domain(upma);
9380 }
9381 
preimage_range(isl::checked::multi_aff ma)9382 isl::checked::map map::preimage_range(isl::checked::multi_aff ma) const
9383 {
9384   auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
9385   return manage(res);
9386 }
9387 
preimage_range(isl::checked::pw_multi_aff pma)9388 isl::checked::map map::preimage_range(isl::checked::pw_multi_aff pma) const
9389 {
9390   auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
9391   return manage(res);
9392 }
9393 
preimage_range(const isl::checked::union_pw_multi_aff & upma)9394 isl::checked::union_map map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
9395 {
9396   return isl::checked::union_map(*this).preimage_range(upma);
9397 }
9398 
product(isl::checked::map map2)9399 isl::checked::map map::product(isl::checked::map map2) const
9400 {
9401   auto res = isl_map_product(copy(), map2.release());
9402   return manage(res);
9403 }
9404 
product(const isl::checked::union_map & umap2)9405 isl::checked::union_map map::product(const isl::checked::union_map &umap2) const
9406 {
9407   return isl::checked::union_map(*this).product(umap2);
9408 }
9409 
product(const isl::checked::basic_map & map2)9410 isl::checked::map map::product(const isl::checked::basic_map &map2) const
9411 {
9412   return this->product(isl::checked::map(map2));
9413 }
9414 
project_out_all_params()9415 isl::checked::map map::project_out_all_params() const
9416 {
9417   auto res = isl_map_project_out_all_params(copy());
9418   return manage(res);
9419 }
9420 
range()9421 isl::checked::set map::range() const
9422 {
9423   auto res = isl_map_range(copy());
9424   return manage(res);
9425 }
9426 
range_factor_domain()9427 isl::checked::map map::range_factor_domain() const
9428 {
9429   auto res = isl_map_range_factor_domain(copy());
9430   return manage(res);
9431 }
9432 
range_factor_range()9433 isl::checked::map map::range_factor_range() const
9434 {
9435   auto res = isl_map_range_factor_range(copy());
9436   return manage(res);
9437 }
9438 
range_map()9439 isl::checked::union_map map::range_map() const
9440 {
9441   return isl::checked::union_map(*this).range_map();
9442 }
9443 
range_product(isl::checked::map map2)9444 isl::checked::map map::range_product(isl::checked::map map2) const
9445 {
9446   auto res = isl_map_range_product(copy(), map2.release());
9447   return manage(res);
9448 }
9449 
range_product(const isl::checked::union_map & umap2)9450 isl::checked::union_map map::range_product(const isl::checked::union_map &umap2) const
9451 {
9452   return isl::checked::union_map(*this).range_product(umap2);
9453 }
9454 
range_product(const isl::checked::basic_map & map2)9455 isl::checked::map map::range_product(const isl::checked::basic_map &map2) const
9456 {
9457   return this->range_product(isl::checked::map(map2));
9458 }
9459 
range_reverse()9460 isl::checked::map map::range_reverse() const
9461 {
9462   auto res = isl_map_range_reverse(copy());
9463   return manage(res);
9464 }
9465 
range_simple_fixed_box_hull()9466 isl::checked::fixed_box map::range_simple_fixed_box_hull() const
9467 {
9468   auto res = isl_map_get_range_simple_fixed_box_hull(get());
9469   return manage(res);
9470 }
9471 
get_range_simple_fixed_box_hull()9472 isl::checked::fixed_box map::get_range_simple_fixed_box_hull() const
9473 {
9474   return range_simple_fixed_box_hull();
9475 }
9476 
range_tuple_id()9477 isl::checked::id map::range_tuple_id() const
9478 {
9479   auto res = isl_map_get_range_tuple_id(get());
9480   return manage(res);
9481 }
9482 
get_range_tuple_id()9483 isl::checked::id map::get_range_tuple_id() const
9484 {
9485   return range_tuple_id();
9486 }
9487 
reverse()9488 isl::checked::map map::reverse() const
9489 {
9490   auto res = isl_map_reverse(copy());
9491   return manage(res);
9492 }
9493 
sample()9494 isl::checked::basic_map map::sample() const
9495 {
9496   auto res = isl_map_sample(copy());
9497   return manage(res);
9498 }
9499 
set_domain_tuple(isl::checked::id id)9500 isl::checked::map map::set_domain_tuple(isl::checked::id id) const
9501 {
9502   auto res = isl_map_set_domain_tuple_id(copy(), id.release());
9503   return manage(res);
9504 }
9505 
set_domain_tuple(const std::string & id)9506 isl::checked::map map::set_domain_tuple(const std::string &id) const
9507 {
9508   return this->set_domain_tuple(isl::checked::id(ctx(), id));
9509 }
9510 
set_range_tuple(isl::checked::id id)9511 isl::checked::map map::set_range_tuple(isl::checked::id id) const
9512 {
9513   auto res = isl_map_set_range_tuple_id(copy(), id.release());
9514   return manage(res);
9515 }
9516 
set_range_tuple(const std::string & id)9517 isl::checked::map map::set_range_tuple(const std::string &id) const
9518 {
9519   return this->set_range_tuple(isl::checked::id(ctx(), id));
9520 }
9521 
space()9522 isl::checked::space map::space() const
9523 {
9524   auto res = isl_map_get_space(get());
9525   return manage(res);
9526 }
9527 
get_space()9528 isl::checked::space map::get_space() const
9529 {
9530   return space();
9531 }
9532 
subtract(isl::checked::map map2)9533 isl::checked::map map::subtract(isl::checked::map map2) const
9534 {
9535   auto res = isl_map_subtract(copy(), map2.release());
9536   return manage(res);
9537 }
9538 
subtract(const isl::checked::union_map & umap2)9539 isl::checked::union_map map::subtract(const isl::checked::union_map &umap2) const
9540 {
9541   return isl::checked::union_map(*this).subtract(umap2);
9542 }
9543 
subtract(const isl::checked::basic_map & map2)9544 isl::checked::map map::subtract(const isl::checked::basic_map &map2) const
9545 {
9546   return this->subtract(isl::checked::map(map2));
9547 }
9548 
subtract_domain(const isl::checked::union_set & dom)9549 isl::checked::union_map map::subtract_domain(const isl::checked::union_set &dom) const
9550 {
9551   return isl::checked::union_map(*this).subtract_domain(dom);
9552 }
9553 
subtract_range(const isl::checked::union_set & dom)9554 isl::checked::union_map map::subtract_range(const isl::checked::union_set &dom) const
9555 {
9556   return isl::checked::union_map(*this).subtract_range(dom);
9557 }
9558 
to_union_map()9559 isl::checked::union_map map::to_union_map() const
9560 {
9561   auto res = isl_map_to_union_map(copy());
9562   return manage(res);
9563 }
9564 
uncurry()9565 isl::checked::map map::uncurry() const
9566 {
9567   auto res = isl_map_uncurry(copy());
9568   return manage(res);
9569 }
9570 
unite(isl::checked::map map2)9571 isl::checked::map map::unite(isl::checked::map map2) const
9572 {
9573   auto res = isl_map_union(copy(), map2.release());
9574   return manage(res);
9575 }
9576 
unite(const isl::checked::union_map & umap2)9577 isl::checked::union_map map::unite(const isl::checked::union_map &umap2) const
9578 {
9579   return isl::checked::union_map(*this).unite(umap2);
9580 }
9581 
unite(const isl::checked::basic_map & map2)9582 isl::checked::map map::unite(const isl::checked::basic_map &map2) const
9583 {
9584   return this->unite(isl::checked::map(map2));
9585 }
9586 
universe(isl::checked::space space)9587 isl::checked::map map::universe(isl::checked::space space)
9588 {
9589   auto res = isl_map_universe(space.release());
9590   return manage(res);
9591 }
9592 
unshifted_simple_hull()9593 isl::checked::basic_map map::unshifted_simple_hull() const
9594 {
9595   auto res = isl_map_unshifted_simple_hull(copy());
9596   return manage(res);
9597 }
9598 
upper_bound(isl::checked::multi_pw_aff upper)9599 isl::checked::map map::upper_bound(isl::checked::multi_pw_aff upper) const
9600 {
9601   auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
9602   return manage(res);
9603 }
9604 
wrap()9605 isl::checked::set map::wrap() const
9606 {
9607   auto res = isl_map_wrap(copy());
9608   return manage(res);
9609 }
9610 
zip()9611 isl::checked::map map::zip() const
9612 {
9613   auto res = isl_map_zip(copy());
9614   return manage(res);
9615 }
9616 
9617 inline std::ostream &operator<<(std::ostream &os, const map &obj)
9618 {
9619   char *str = isl_map_to_str(obj.get());
9620   if (!str) {
9621     os.setstate(std::ios_base::badbit);
9622     return os;
9623   }
9624   os << str;
9625   free(str);
9626   return os;
9627 }
9628 
9629 // implementations for isl::multi_aff
manage(__isl_take isl_multi_aff * ptr)9630 multi_aff manage(__isl_take isl_multi_aff *ptr) {
9631   return multi_aff(ptr);
9632 }
manage_copy(__isl_keep isl_multi_aff * ptr)9633 multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
9634   ptr = isl_multi_aff_copy(ptr);
9635   return multi_aff(ptr);
9636 }
9637 
multi_aff()9638 multi_aff::multi_aff()
9639     : ptr(nullptr) {}
9640 
multi_aff(const multi_aff & obj)9641 multi_aff::multi_aff(const multi_aff &obj)
9642     : ptr(nullptr)
9643 {
9644   ptr = obj.copy();
9645 }
9646 
multi_aff(__isl_take isl_multi_aff * ptr)9647 multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
9648     : ptr(ptr) {}
9649 
multi_aff(isl::checked::aff aff)9650 multi_aff::multi_aff(isl::checked::aff aff)
9651 {
9652   auto res = isl_multi_aff_from_aff(aff.release());
9653   ptr = res;
9654 }
9655 
multi_aff(isl::checked::space space,isl::checked::aff_list list)9656 multi_aff::multi_aff(isl::checked::space space, isl::checked::aff_list list)
9657 {
9658   auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
9659   ptr = res;
9660 }
9661 
multi_aff(isl::checked::ctx ctx,const std::string & str)9662 multi_aff::multi_aff(isl::checked::ctx ctx, const std::string &str)
9663 {
9664   auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
9665   ptr = res;
9666 }
9667 
9668 multi_aff &multi_aff::operator=(multi_aff obj) {
9669   std::swap(this->ptr, obj.ptr);
9670   return *this;
9671 }
9672 
~multi_aff()9673 multi_aff::~multi_aff() {
9674   if (ptr)
9675     isl_multi_aff_free(ptr);
9676 }
9677 
copy()9678 __isl_give isl_multi_aff *multi_aff::copy() const & {
9679   return isl_multi_aff_copy(ptr);
9680 }
9681 
get()9682 __isl_keep isl_multi_aff *multi_aff::get() const {
9683   return ptr;
9684 }
9685 
release()9686 __isl_give isl_multi_aff *multi_aff::release() {
9687   isl_multi_aff *tmp = ptr;
9688   ptr = nullptr;
9689   return tmp;
9690 }
9691 
is_null()9692 bool multi_aff::is_null() const {
9693   return ptr == nullptr;
9694 }
9695 
ctx()9696 isl::checked::ctx multi_aff::ctx() const {
9697   return isl::checked::ctx(isl_multi_aff_get_ctx(ptr));
9698 }
9699 
add(isl::checked::multi_aff multi2)9700 isl::checked::multi_aff multi_aff::add(isl::checked::multi_aff multi2) const
9701 {
9702   auto res = isl_multi_aff_add(copy(), multi2.release());
9703   return manage(res);
9704 }
9705 
add(const isl::checked::multi_pw_aff & multi2)9706 isl::checked::multi_pw_aff multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
9707 {
9708   return isl::checked::pw_multi_aff(*this).add(multi2);
9709 }
9710 
add(const isl::checked::multi_union_pw_aff & multi2)9711 isl::checked::multi_union_pw_aff multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
9712 {
9713   return isl::checked::pw_multi_aff(*this).add(multi2);
9714 }
9715 
add(const isl::checked::pw_multi_aff & pma2)9716 isl::checked::pw_multi_aff multi_aff::add(const isl::checked::pw_multi_aff &pma2) const
9717 {
9718   return isl::checked::pw_multi_aff(*this).add(pma2);
9719 }
9720 
add(const isl::checked::union_pw_multi_aff & upma2)9721 isl::checked::union_pw_multi_aff multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
9722 {
9723   return isl::checked::pw_multi_aff(*this).add(upma2);
9724 }
9725 
add(const isl::checked::aff & multi2)9726 isl::checked::multi_aff multi_aff::add(const isl::checked::aff &multi2) const
9727 {
9728   return this->add(isl::checked::multi_aff(multi2));
9729 }
9730 
add_constant(isl::checked::multi_val mv)9731 isl::checked::multi_aff multi_aff::add_constant(isl::checked::multi_val mv) const
9732 {
9733   auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
9734   return manage(res);
9735 }
9736 
add_constant(isl::checked::val v)9737 isl::checked::multi_aff multi_aff::add_constant(isl::checked::val v) const
9738 {
9739   auto res = isl_multi_aff_add_constant_val(copy(), v.release());
9740   return manage(res);
9741 }
9742 
add_constant(long v)9743 isl::checked::multi_aff multi_aff::add_constant(long v) const
9744 {
9745   return this->add_constant(isl::checked::val(ctx(), v));
9746 }
9747 
apply(const isl::checked::union_pw_multi_aff & upma2)9748 isl::checked::union_pw_multi_aff multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
9749 {
9750   return isl::checked::pw_multi_aff(*this).apply(upma2);
9751 }
9752 
as_map()9753 isl::checked::map multi_aff::as_map() const
9754 {
9755   auto res = isl_multi_aff_as_map(copy());
9756   return manage(res);
9757 }
9758 
as_multi_aff()9759 isl::checked::multi_aff multi_aff::as_multi_aff() const
9760 {
9761   return isl::checked::pw_multi_aff(*this).as_multi_aff();
9762 }
9763 
as_multi_union_pw_aff()9764 isl::checked::multi_union_pw_aff multi_aff::as_multi_union_pw_aff() const
9765 {
9766   return isl::checked::pw_multi_aff(*this).as_multi_union_pw_aff();
9767 }
9768 
as_pw_multi_aff()9769 isl::checked::pw_multi_aff multi_aff::as_pw_multi_aff() const
9770 {
9771   return isl::checked::pw_multi_aff(*this).as_pw_multi_aff();
9772 }
9773 
as_set()9774 isl::checked::set multi_aff::as_set() const
9775 {
9776   auto res = isl_multi_aff_as_set(copy());
9777   return manage(res);
9778 }
9779 
as_union_map()9780 isl::checked::union_map multi_aff::as_union_map() const
9781 {
9782   return isl::checked::pw_multi_aff(*this).as_union_map();
9783 }
9784 
at(int pos)9785 isl::checked::aff multi_aff::at(int pos) const
9786 {
9787   auto res = isl_multi_aff_get_at(get(), pos);
9788   return manage(res);
9789 }
9790 
get_at(int pos)9791 isl::checked::aff multi_aff::get_at(int pos) const
9792 {
9793   return at(pos);
9794 }
9795 
bind(isl::checked::multi_id tuple)9796 isl::checked::basic_set multi_aff::bind(isl::checked::multi_id tuple) const
9797 {
9798   auto res = isl_multi_aff_bind(copy(), tuple.release());
9799   return manage(res);
9800 }
9801 
bind_domain(isl::checked::multi_id tuple)9802 isl::checked::multi_aff multi_aff::bind_domain(isl::checked::multi_id tuple) const
9803 {
9804   auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
9805   return manage(res);
9806 }
9807 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)9808 isl::checked::multi_aff multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
9809 {
9810   auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
9811   return manage(res);
9812 }
9813 
coalesce()9814 isl::checked::pw_multi_aff multi_aff::coalesce() const
9815 {
9816   return isl::checked::pw_multi_aff(*this).coalesce();
9817 }
9818 
constant_multi_val()9819 isl::checked::multi_val multi_aff::constant_multi_val() const
9820 {
9821   auto res = isl_multi_aff_get_constant_multi_val(get());
9822   return manage(res);
9823 }
9824 
get_constant_multi_val()9825 isl::checked::multi_val multi_aff::get_constant_multi_val() const
9826 {
9827   return constant_multi_val();
9828 }
9829 
domain()9830 isl::checked::set multi_aff::domain() const
9831 {
9832   return isl::checked::pw_multi_aff(*this).domain();
9833 }
9834 
domain_map(isl::checked::space space)9835 isl::checked::multi_aff multi_aff::domain_map(isl::checked::space space)
9836 {
9837   auto res = isl_multi_aff_domain_map(space.release());
9838   return manage(res);
9839 }
9840 
extract_pw_multi_aff(const isl::checked::space & space)9841 isl::checked::pw_multi_aff multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
9842 {
9843   return isl::checked::pw_multi_aff(*this).extract_pw_multi_aff(space);
9844 }
9845 
flat_range_product(isl::checked::multi_aff multi2)9846 isl::checked::multi_aff multi_aff::flat_range_product(isl::checked::multi_aff multi2) const
9847 {
9848   auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
9849   return manage(res);
9850 }
9851 
flat_range_product(const isl::checked::multi_pw_aff & multi2)9852 isl::checked::multi_pw_aff multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
9853 {
9854   return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
9855 }
9856 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)9857 isl::checked::multi_union_pw_aff multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
9858 {
9859   return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
9860 }
9861 
flat_range_product(const isl::checked::pw_multi_aff & pma2)9862 isl::checked::pw_multi_aff multi_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
9863 {
9864   return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
9865 }
9866 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)9867 isl::checked::union_pw_multi_aff multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
9868 {
9869   return isl::checked::pw_multi_aff(*this).flat_range_product(upma2);
9870 }
9871 
flat_range_product(const isl::checked::aff & multi2)9872 isl::checked::multi_aff multi_aff::flat_range_product(const isl::checked::aff &multi2) const
9873 {
9874   return this->flat_range_product(isl::checked::multi_aff(multi2));
9875 }
9876 
floor()9877 isl::checked::multi_aff multi_aff::floor() const
9878 {
9879   auto res = isl_multi_aff_floor(copy());
9880   return manage(res);
9881 }
9882 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)9883 stat multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
9884 {
9885   return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
9886 }
9887 
gist(isl::checked::set context)9888 isl::checked::multi_aff multi_aff::gist(isl::checked::set context) const
9889 {
9890   auto res = isl_multi_aff_gist(copy(), context.release());
9891   return manage(res);
9892 }
9893 
gist(const isl::checked::union_set & context)9894 isl::checked::union_pw_multi_aff multi_aff::gist(const isl::checked::union_set &context) const
9895 {
9896   return isl::checked::pw_multi_aff(*this).gist(context);
9897 }
9898 
gist(const isl::checked::basic_set & context)9899 isl::checked::multi_aff multi_aff::gist(const isl::checked::basic_set &context) const
9900 {
9901   return this->gist(isl::checked::set(context));
9902 }
9903 
gist(const isl::checked::point & context)9904 isl::checked::multi_aff multi_aff::gist(const isl::checked::point &context) const
9905 {
9906   return this->gist(isl::checked::set(context));
9907 }
9908 
has_range_tuple_id()9909 boolean multi_aff::has_range_tuple_id() const
9910 {
9911   auto res = isl_multi_aff_has_range_tuple_id(get());
9912   return manage(res);
9913 }
9914 
identity()9915 isl::checked::multi_aff multi_aff::identity() const
9916 {
9917   auto res = isl_multi_aff_identity_multi_aff(copy());
9918   return manage(res);
9919 }
9920 
identity_on_domain(isl::checked::space space)9921 isl::checked::multi_aff multi_aff::identity_on_domain(isl::checked::space space)
9922 {
9923   auto res = isl_multi_aff_identity_on_domain_space(space.release());
9924   return manage(res);
9925 }
9926 
insert_domain(isl::checked::space domain)9927 isl::checked::multi_aff multi_aff::insert_domain(isl::checked::space domain) const
9928 {
9929   auto res = isl_multi_aff_insert_domain(copy(), domain.release());
9930   return manage(res);
9931 }
9932 
intersect_domain(const isl::checked::set & set)9933 isl::checked::pw_multi_aff multi_aff::intersect_domain(const isl::checked::set &set) const
9934 {
9935   return isl::checked::pw_multi_aff(*this).intersect_domain(set);
9936 }
9937 
intersect_domain(const isl::checked::space & space)9938 isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::space &space) const
9939 {
9940   return isl::checked::pw_multi_aff(*this).intersect_domain(space);
9941 }
9942 
intersect_domain(const isl::checked::union_set & uset)9943 isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::union_set &uset) const
9944 {
9945   return isl::checked::pw_multi_aff(*this).intersect_domain(uset);
9946 }
9947 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)9948 isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
9949 {
9950   return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
9951 }
9952 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)9953 isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
9954 {
9955   return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
9956 }
9957 
intersect_params(const isl::checked::set & set)9958 isl::checked::pw_multi_aff multi_aff::intersect_params(const isl::checked::set &set) const
9959 {
9960   return isl::checked::pw_multi_aff(*this).intersect_params(set);
9961 }
9962 
involves_locals()9963 boolean multi_aff::involves_locals() const
9964 {
9965   auto res = isl_multi_aff_involves_locals(get());
9966   return manage(res);
9967 }
9968 
involves_nan()9969 boolean multi_aff::involves_nan() const
9970 {
9971   auto res = isl_multi_aff_involves_nan(get());
9972   return manage(res);
9973 }
9974 
involves_param(const isl::checked::id & id)9975 boolean multi_aff::involves_param(const isl::checked::id &id) const
9976 {
9977   return isl::checked::pw_multi_aff(*this).involves_param(id);
9978 }
9979 
involves_param(const std::string & id)9980 boolean multi_aff::involves_param(const std::string &id) const
9981 {
9982   return this->involves_param(isl::checked::id(ctx(), id));
9983 }
9984 
involves_param(const isl::checked::id_list & list)9985 boolean multi_aff::involves_param(const isl::checked::id_list &list) const
9986 {
9987   return isl::checked::pw_multi_aff(*this).involves_param(list);
9988 }
9989 
isa_multi_aff()9990 boolean multi_aff::isa_multi_aff() const
9991 {
9992   return isl::checked::pw_multi_aff(*this).isa_multi_aff();
9993 }
9994 
isa_pw_multi_aff()9995 boolean multi_aff::isa_pw_multi_aff() const
9996 {
9997   return isl::checked::pw_multi_aff(*this).isa_pw_multi_aff();
9998 }
9999 
list()10000 isl::checked::aff_list multi_aff::list() const
10001 {
10002   auto res = isl_multi_aff_get_list(get());
10003   return manage(res);
10004 }
10005 
get_list()10006 isl::checked::aff_list multi_aff::get_list() const
10007 {
10008   return list();
10009 }
10010 
max(const isl::checked::multi_pw_aff & multi2)10011 isl::checked::multi_pw_aff multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
10012 {
10013   return isl::checked::pw_multi_aff(*this).max(multi2);
10014 }
10015 
max_multi_val()10016 isl::checked::multi_val multi_aff::max_multi_val() const
10017 {
10018   return isl::checked::pw_multi_aff(*this).max_multi_val();
10019 }
10020 
min(const isl::checked::multi_pw_aff & multi2)10021 isl::checked::multi_pw_aff multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
10022 {
10023   return isl::checked::pw_multi_aff(*this).min(multi2);
10024 }
10025 
min_multi_val()10026 isl::checked::multi_val multi_aff::min_multi_val() const
10027 {
10028   return isl::checked::pw_multi_aff(*this).min_multi_val();
10029 }
10030 
multi_val_on_domain(isl::checked::space space,isl::checked::multi_val mv)10031 isl::checked::multi_aff multi_aff::multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv)
10032 {
10033   auto res = isl_multi_aff_multi_val_on_domain_space(space.release(), mv.release());
10034   return manage(res);
10035 }
10036 
n_piece()10037 class size multi_aff::n_piece() const
10038 {
10039   return isl::checked::pw_multi_aff(*this).n_piece();
10040 }
10041 
neg()10042 isl::checked::multi_aff multi_aff::neg() const
10043 {
10044   auto res = isl_multi_aff_neg(copy());
10045   return manage(res);
10046 }
10047 
plain_is_empty()10048 boolean multi_aff::plain_is_empty() const
10049 {
10050   return isl::checked::pw_multi_aff(*this).plain_is_empty();
10051 }
10052 
plain_is_equal(const isl::checked::multi_aff & multi2)10053 boolean multi_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
10054 {
10055   auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
10056   return manage(res);
10057 }
10058 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)10059 boolean multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
10060 {
10061   return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
10062 }
10063 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)10064 boolean multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
10065 {
10066   return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
10067 }
10068 
plain_is_equal(const isl::checked::aff & multi2)10069 boolean multi_aff::plain_is_equal(const isl::checked::aff &multi2) const
10070 {
10071   return this->plain_is_equal(isl::checked::multi_aff(multi2));
10072 }
10073 
preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff & pma2)10074 isl::checked::pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
10075 {
10076   return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
10077 }
10078 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)10079 isl::checked::union_pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
10080 {
10081   return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
10082 }
10083 
product(isl::checked::multi_aff multi2)10084 isl::checked::multi_aff multi_aff::product(isl::checked::multi_aff multi2) const
10085 {
10086   auto res = isl_multi_aff_product(copy(), multi2.release());
10087   return manage(res);
10088 }
10089 
product(const isl::checked::multi_pw_aff & multi2)10090 isl::checked::multi_pw_aff multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
10091 {
10092   return isl::checked::pw_multi_aff(*this).product(multi2);
10093 }
10094 
product(const isl::checked::pw_multi_aff & pma2)10095 isl::checked::pw_multi_aff multi_aff::product(const isl::checked::pw_multi_aff &pma2) const
10096 {
10097   return isl::checked::pw_multi_aff(*this).product(pma2);
10098 }
10099 
product(const isl::checked::aff & multi2)10100 isl::checked::multi_aff multi_aff::product(const isl::checked::aff &multi2) const
10101 {
10102   return this->product(isl::checked::multi_aff(multi2));
10103 }
10104 
pullback(isl::checked::multi_aff ma2)10105 isl::checked::multi_aff multi_aff::pullback(isl::checked::multi_aff ma2) const
10106 {
10107   auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
10108   return manage(res);
10109 }
10110 
pullback(const isl::checked::multi_pw_aff & mpa2)10111 isl::checked::multi_pw_aff multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
10112 {
10113   return isl::checked::pw_multi_aff(*this).pullback(mpa2);
10114 }
10115 
pullback(const isl::checked::pw_multi_aff & pma2)10116 isl::checked::pw_multi_aff multi_aff::pullback(const isl::checked::pw_multi_aff &pma2) const
10117 {
10118   return isl::checked::pw_multi_aff(*this).pullback(pma2);
10119 }
10120 
pullback(const isl::checked::union_pw_multi_aff & upma2)10121 isl::checked::union_pw_multi_aff multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
10122 {
10123   return isl::checked::pw_multi_aff(*this).pullback(upma2);
10124 }
10125 
pullback(const isl::checked::aff & ma2)10126 isl::checked::multi_aff multi_aff::pullback(const isl::checked::aff &ma2) const
10127 {
10128   return this->pullback(isl::checked::multi_aff(ma2));
10129 }
10130 
range_factor_domain()10131 isl::checked::pw_multi_aff multi_aff::range_factor_domain() const
10132 {
10133   return isl::checked::pw_multi_aff(*this).range_factor_domain();
10134 }
10135 
range_factor_range()10136 isl::checked::pw_multi_aff multi_aff::range_factor_range() const
10137 {
10138   return isl::checked::pw_multi_aff(*this).range_factor_range();
10139 }
10140 
range_map(isl::checked::space space)10141 isl::checked::multi_aff multi_aff::range_map(isl::checked::space space)
10142 {
10143   auto res = isl_multi_aff_range_map(space.release());
10144   return manage(res);
10145 }
10146 
range_product(isl::checked::multi_aff multi2)10147 isl::checked::multi_aff multi_aff::range_product(isl::checked::multi_aff multi2) const
10148 {
10149   auto res = isl_multi_aff_range_product(copy(), multi2.release());
10150   return manage(res);
10151 }
10152 
range_product(const isl::checked::multi_pw_aff & multi2)10153 isl::checked::multi_pw_aff multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
10154 {
10155   return isl::checked::pw_multi_aff(*this).range_product(multi2);
10156 }
10157 
range_product(const isl::checked::multi_union_pw_aff & multi2)10158 isl::checked::multi_union_pw_aff multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
10159 {
10160   return isl::checked::pw_multi_aff(*this).range_product(multi2);
10161 }
10162 
range_product(const isl::checked::pw_multi_aff & pma2)10163 isl::checked::pw_multi_aff multi_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
10164 {
10165   return isl::checked::pw_multi_aff(*this).range_product(pma2);
10166 }
10167 
range_product(const isl::checked::union_pw_multi_aff & upma2)10168 isl::checked::union_pw_multi_aff multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
10169 {
10170   return isl::checked::pw_multi_aff(*this).range_product(upma2);
10171 }
10172 
range_product(const isl::checked::aff & multi2)10173 isl::checked::multi_aff multi_aff::range_product(const isl::checked::aff &multi2) const
10174 {
10175   return this->range_product(isl::checked::multi_aff(multi2));
10176 }
10177 
range_tuple_id()10178 isl::checked::id multi_aff::range_tuple_id() const
10179 {
10180   auto res = isl_multi_aff_get_range_tuple_id(get());
10181   return manage(res);
10182 }
10183 
get_range_tuple_id()10184 isl::checked::id multi_aff::get_range_tuple_id() const
10185 {
10186   return range_tuple_id();
10187 }
10188 
reset_range_tuple_id()10189 isl::checked::multi_aff multi_aff::reset_range_tuple_id() const
10190 {
10191   auto res = isl_multi_aff_reset_range_tuple_id(copy());
10192   return manage(res);
10193 }
10194 
scale(isl::checked::multi_val mv)10195 isl::checked::multi_aff multi_aff::scale(isl::checked::multi_val mv) const
10196 {
10197   auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
10198   return manage(res);
10199 }
10200 
scale(isl::checked::val v)10201 isl::checked::multi_aff multi_aff::scale(isl::checked::val v) const
10202 {
10203   auto res = isl_multi_aff_scale_val(copy(), v.release());
10204   return manage(res);
10205 }
10206 
scale(long v)10207 isl::checked::multi_aff multi_aff::scale(long v) const
10208 {
10209   return this->scale(isl::checked::val(ctx(), v));
10210 }
10211 
scale_down(isl::checked::multi_val mv)10212 isl::checked::multi_aff multi_aff::scale_down(isl::checked::multi_val mv) const
10213 {
10214   auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
10215   return manage(res);
10216 }
10217 
scale_down(isl::checked::val v)10218 isl::checked::multi_aff multi_aff::scale_down(isl::checked::val v) const
10219 {
10220   auto res = isl_multi_aff_scale_down_val(copy(), v.release());
10221   return manage(res);
10222 }
10223 
scale_down(long v)10224 isl::checked::multi_aff multi_aff::scale_down(long v) const
10225 {
10226   return this->scale_down(isl::checked::val(ctx(), v));
10227 }
10228 
set_at(int pos,isl::checked::aff el)10229 isl::checked::multi_aff multi_aff::set_at(int pos, isl::checked::aff el) const
10230 {
10231   auto res = isl_multi_aff_set_at(copy(), pos, el.release());
10232   return manage(res);
10233 }
10234 
set_at(int pos,const isl::checked::pw_aff & el)10235 isl::checked::multi_pw_aff multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
10236 {
10237   return isl::checked::pw_multi_aff(*this).set_at(pos, el);
10238 }
10239 
set_at(int pos,const isl::checked::union_pw_aff & el)10240 isl::checked::multi_union_pw_aff multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
10241 {
10242   return isl::checked::pw_multi_aff(*this).set_at(pos, el);
10243 }
10244 
set_range_tuple(isl::checked::id id)10245 isl::checked::multi_aff multi_aff::set_range_tuple(isl::checked::id id) const
10246 {
10247   auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
10248   return manage(res);
10249 }
10250 
set_range_tuple(const std::string & id)10251 isl::checked::multi_aff multi_aff::set_range_tuple(const std::string &id) const
10252 {
10253   return this->set_range_tuple(isl::checked::id(ctx(), id));
10254 }
10255 
size()10256 class size multi_aff::size() const
10257 {
10258   auto res = isl_multi_aff_size(get());
10259   return manage(res);
10260 }
10261 
space()10262 isl::checked::space multi_aff::space() const
10263 {
10264   auto res = isl_multi_aff_get_space(get());
10265   return manage(res);
10266 }
10267 
get_space()10268 isl::checked::space multi_aff::get_space() const
10269 {
10270   return space();
10271 }
10272 
sub(isl::checked::multi_aff multi2)10273 isl::checked::multi_aff multi_aff::sub(isl::checked::multi_aff multi2) const
10274 {
10275   auto res = isl_multi_aff_sub(copy(), multi2.release());
10276   return manage(res);
10277 }
10278 
sub(const isl::checked::multi_pw_aff & multi2)10279 isl::checked::multi_pw_aff multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
10280 {
10281   return isl::checked::pw_multi_aff(*this).sub(multi2);
10282 }
10283 
sub(const isl::checked::multi_union_pw_aff & multi2)10284 isl::checked::multi_union_pw_aff multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
10285 {
10286   return isl::checked::pw_multi_aff(*this).sub(multi2);
10287 }
10288 
sub(const isl::checked::pw_multi_aff & pma2)10289 isl::checked::pw_multi_aff multi_aff::sub(const isl::checked::pw_multi_aff &pma2) const
10290 {
10291   return isl::checked::pw_multi_aff(*this).sub(pma2);
10292 }
10293 
sub(const isl::checked::union_pw_multi_aff & upma2)10294 isl::checked::union_pw_multi_aff multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
10295 {
10296   return isl::checked::pw_multi_aff(*this).sub(upma2);
10297 }
10298 
sub(const isl::checked::aff & multi2)10299 isl::checked::multi_aff multi_aff::sub(const isl::checked::aff &multi2) const
10300 {
10301   return this->sub(isl::checked::multi_aff(multi2));
10302 }
10303 
subtract_domain(const isl::checked::set & set)10304 isl::checked::pw_multi_aff multi_aff::subtract_domain(const isl::checked::set &set) const
10305 {
10306   return isl::checked::pw_multi_aff(*this).subtract_domain(set);
10307 }
10308 
subtract_domain(const isl::checked::space & space)10309 isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::space &space) const
10310 {
10311   return isl::checked::pw_multi_aff(*this).subtract_domain(space);
10312 }
10313 
subtract_domain(const isl::checked::union_set & uset)10314 isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::union_set &uset) const
10315 {
10316   return isl::checked::pw_multi_aff(*this).subtract_domain(uset);
10317 }
10318 
to_list()10319 isl::checked::pw_multi_aff_list multi_aff::to_list() const
10320 {
10321   return isl::checked::pw_multi_aff(*this).to_list();
10322 }
10323 
to_multi_pw_aff()10324 isl::checked::multi_pw_aff multi_aff::to_multi_pw_aff() const
10325 {
10326   auto res = isl_multi_aff_to_multi_pw_aff(copy());
10327   return manage(res);
10328 }
10329 
to_multi_union_pw_aff()10330 isl::checked::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
10331 {
10332   auto res = isl_multi_aff_to_multi_union_pw_aff(copy());
10333   return manage(res);
10334 }
10335 
to_pw_multi_aff()10336 isl::checked::pw_multi_aff multi_aff::to_pw_multi_aff() const
10337 {
10338   auto res = isl_multi_aff_to_pw_multi_aff(copy());
10339   return manage(res);
10340 }
10341 
to_union_pw_multi_aff()10342 isl::checked::union_pw_multi_aff multi_aff::to_union_pw_multi_aff() const
10343 {
10344   return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
10345 }
10346 
unbind_params_insert_domain(isl::checked::multi_id domain)10347 isl::checked::multi_aff multi_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
10348 {
10349   auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
10350   return manage(res);
10351 }
10352 
union_add(const isl::checked::multi_pw_aff & mpa2)10353 isl::checked::multi_pw_aff multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
10354 {
10355   return isl::checked::pw_multi_aff(*this).union_add(mpa2);
10356 }
10357 
union_add(const isl::checked::multi_union_pw_aff & mupa2)10358 isl::checked::multi_union_pw_aff multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
10359 {
10360   return isl::checked::pw_multi_aff(*this).union_add(mupa2);
10361 }
10362 
union_add(const isl::checked::pw_multi_aff & pma2)10363 isl::checked::pw_multi_aff multi_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
10364 {
10365   return isl::checked::pw_multi_aff(*this).union_add(pma2);
10366 }
10367 
union_add(const isl::checked::union_pw_multi_aff & upma2)10368 isl::checked::union_pw_multi_aff multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
10369 {
10370   return isl::checked::pw_multi_aff(*this).union_add(upma2);
10371 }
10372 
zero(isl::checked::space space)10373 isl::checked::multi_aff multi_aff::zero(isl::checked::space space)
10374 {
10375   auto res = isl_multi_aff_zero(space.release());
10376   return manage(res);
10377 }
10378 
10379 inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
10380 {
10381   char *str = isl_multi_aff_to_str(obj.get());
10382   if (!str) {
10383     os.setstate(std::ios_base::badbit);
10384     return os;
10385   }
10386   os << str;
10387   free(str);
10388   return os;
10389 }
10390 
10391 // implementations for isl::multi_id
manage(__isl_take isl_multi_id * ptr)10392 multi_id manage(__isl_take isl_multi_id *ptr) {
10393   return multi_id(ptr);
10394 }
manage_copy(__isl_keep isl_multi_id * ptr)10395 multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
10396   ptr = isl_multi_id_copy(ptr);
10397   return multi_id(ptr);
10398 }
10399 
multi_id()10400 multi_id::multi_id()
10401     : ptr(nullptr) {}
10402 
multi_id(const multi_id & obj)10403 multi_id::multi_id(const multi_id &obj)
10404     : ptr(nullptr)
10405 {
10406   ptr = obj.copy();
10407 }
10408 
multi_id(__isl_take isl_multi_id * ptr)10409 multi_id::multi_id(__isl_take isl_multi_id *ptr)
10410     : ptr(ptr) {}
10411 
multi_id(isl::checked::space space,isl::checked::id_list list)10412 multi_id::multi_id(isl::checked::space space, isl::checked::id_list list)
10413 {
10414   auto res = isl_multi_id_from_id_list(space.release(), list.release());
10415   ptr = res;
10416 }
10417 
multi_id(isl::checked::ctx ctx,const std::string & str)10418 multi_id::multi_id(isl::checked::ctx ctx, const std::string &str)
10419 {
10420   auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
10421   ptr = res;
10422 }
10423 
10424 multi_id &multi_id::operator=(multi_id obj) {
10425   std::swap(this->ptr, obj.ptr);
10426   return *this;
10427 }
10428 
~multi_id()10429 multi_id::~multi_id() {
10430   if (ptr)
10431     isl_multi_id_free(ptr);
10432 }
10433 
copy()10434 __isl_give isl_multi_id *multi_id::copy() const & {
10435   return isl_multi_id_copy(ptr);
10436 }
10437 
get()10438 __isl_keep isl_multi_id *multi_id::get() const {
10439   return ptr;
10440 }
10441 
release()10442 __isl_give isl_multi_id *multi_id::release() {
10443   isl_multi_id *tmp = ptr;
10444   ptr = nullptr;
10445   return tmp;
10446 }
10447 
is_null()10448 bool multi_id::is_null() const {
10449   return ptr == nullptr;
10450 }
10451 
ctx()10452 isl::checked::ctx multi_id::ctx() const {
10453   return isl::checked::ctx(isl_multi_id_get_ctx(ptr));
10454 }
10455 
at(int pos)10456 isl::checked::id multi_id::at(int pos) const
10457 {
10458   auto res = isl_multi_id_get_at(get(), pos);
10459   return manage(res);
10460 }
10461 
get_at(int pos)10462 isl::checked::id multi_id::get_at(int pos) const
10463 {
10464   return at(pos);
10465 }
10466 
flat_range_product(isl::checked::multi_id multi2)10467 isl::checked::multi_id multi_id::flat_range_product(isl::checked::multi_id multi2) const
10468 {
10469   auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
10470   return manage(res);
10471 }
10472 
list()10473 isl::checked::id_list multi_id::list() const
10474 {
10475   auto res = isl_multi_id_get_list(get());
10476   return manage(res);
10477 }
10478 
get_list()10479 isl::checked::id_list multi_id::get_list() const
10480 {
10481   return list();
10482 }
10483 
plain_is_equal(const isl::checked::multi_id & multi2)10484 boolean multi_id::plain_is_equal(const isl::checked::multi_id &multi2) const
10485 {
10486   auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
10487   return manage(res);
10488 }
10489 
range_product(isl::checked::multi_id multi2)10490 isl::checked::multi_id multi_id::range_product(isl::checked::multi_id multi2) const
10491 {
10492   auto res = isl_multi_id_range_product(copy(), multi2.release());
10493   return manage(res);
10494 }
10495 
set_at(int pos,isl::checked::id el)10496 isl::checked::multi_id multi_id::set_at(int pos, isl::checked::id el) const
10497 {
10498   auto res = isl_multi_id_set_at(copy(), pos, el.release());
10499   return manage(res);
10500 }
10501 
set_at(int pos,const std::string & el)10502 isl::checked::multi_id multi_id::set_at(int pos, const std::string &el) const
10503 {
10504   return this->set_at(pos, isl::checked::id(ctx(), el));
10505 }
10506 
size()10507 class size multi_id::size() const
10508 {
10509   auto res = isl_multi_id_size(get());
10510   return manage(res);
10511 }
10512 
space()10513 isl::checked::space multi_id::space() const
10514 {
10515   auto res = isl_multi_id_get_space(get());
10516   return manage(res);
10517 }
10518 
get_space()10519 isl::checked::space multi_id::get_space() const
10520 {
10521   return space();
10522 }
10523 
10524 inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
10525 {
10526   char *str = isl_multi_id_to_str(obj.get());
10527   if (!str) {
10528     os.setstate(std::ios_base::badbit);
10529     return os;
10530   }
10531   os << str;
10532   free(str);
10533   return os;
10534 }
10535 
10536 // implementations for isl::multi_pw_aff
manage(__isl_take isl_multi_pw_aff * ptr)10537 multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
10538   return multi_pw_aff(ptr);
10539 }
manage_copy(__isl_keep isl_multi_pw_aff * ptr)10540 multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
10541   ptr = isl_multi_pw_aff_copy(ptr);
10542   return multi_pw_aff(ptr);
10543 }
10544 
multi_pw_aff()10545 multi_pw_aff::multi_pw_aff()
10546     : ptr(nullptr) {}
10547 
multi_pw_aff(const multi_pw_aff & obj)10548 multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
10549     : ptr(nullptr)
10550 {
10551   ptr = obj.copy();
10552 }
10553 
multi_pw_aff(__isl_take isl_multi_pw_aff * ptr)10554 multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
10555     : ptr(ptr) {}
10556 
multi_pw_aff(isl::checked::aff aff)10557 multi_pw_aff::multi_pw_aff(isl::checked::aff aff)
10558 {
10559   auto res = isl_multi_pw_aff_from_aff(aff.release());
10560   ptr = res;
10561 }
10562 
multi_pw_aff(isl::checked::multi_aff ma)10563 multi_pw_aff::multi_pw_aff(isl::checked::multi_aff ma)
10564 {
10565   auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
10566   ptr = res;
10567 }
10568 
multi_pw_aff(isl::checked::pw_aff pa)10569 multi_pw_aff::multi_pw_aff(isl::checked::pw_aff pa)
10570 {
10571   auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
10572   ptr = res;
10573 }
10574 
multi_pw_aff(isl::checked::space space,isl::checked::pw_aff_list list)10575 multi_pw_aff::multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list)
10576 {
10577   auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
10578   ptr = res;
10579 }
10580 
multi_pw_aff(isl::checked::pw_multi_aff pma)10581 multi_pw_aff::multi_pw_aff(isl::checked::pw_multi_aff pma)
10582 {
10583   auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
10584   ptr = res;
10585 }
10586 
multi_pw_aff(isl::checked::ctx ctx,const std::string & str)10587 multi_pw_aff::multi_pw_aff(isl::checked::ctx ctx, const std::string &str)
10588 {
10589   auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
10590   ptr = res;
10591 }
10592 
10593 multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
10594   std::swap(this->ptr, obj.ptr);
10595   return *this;
10596 }
10597 
~multi_pw_aff()10598 multi_pw_aff::~multi_pw_aff() {
10599   if (ptr)
10600     isl_multi_pw_aff_free(ptr);
10601 }
10602 
copy()10603 __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
10604   return isl_multi_pw_aff_copy(ptr);
10605 }
10606 
get()10607 __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
10608   return ptr;
10609 }
10610 
release()10611 __isl_give isl_multi_pw_aff *multi_pw_aff::release() {
10612   isl_multi_pw_aff *tmp = ptr;
10613   ptr = nullptr;
10614   return tmp;
10615 }
10616 
is_null()10617 bool multi_pw_aff::is_null() const {
10618   return ptr == nullptr;
10619 }
10620 
ctx()10621 isl::checked::ctx multi_pw_aff::ctx() const {
10622   return isl::checked::ctx(isl_multi_pw_aff_get_ctx(ptr));
10623 }
10624 
add(isl::checked::multi_pw_aff multi2)10625 isl::checked::multi_pw_aff multi_pw_aff::add(isl::checked::multi_pw_aff multi2) const
10626 {
10627   auto res = isl_multi_pw_aff_add(copy(), multi2.release());
10628   return manage(res);
10629 }
10630 
add(const isl::checked::multi_union_pw_aff & multi2)10631 isl::checked::multi_union_pw_aff multi_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
10632 {
10633   return isl::checked::multi_union_pw_aff(*this).add(multi2);
10634 }
10635 
add(const isl::checked::aff & multi2)10636 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::aff &multi2) const
10637 {
10638   return this->add(isl::checked::multi_pw_aff(multi2));
10639 }
10640 
add(const isl::checked::multi_aff & multi2)10641 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::multi_aff &multi2) const
10642 {
10643   return this->add(isl::checked::multi_pw_aff(multi2));
10644 }
10645 
add(const isl::checked::pw_aff & multi2)10646 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_aff &multi2) const
10647 {
10648   return this->add(isl::checked::multi_pw_aff(multi2));
10649 }
10650 
add(const isl::checked::pw_multi_aff & multi2)10651 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_multi_aff &multi2) const
10652 {
10653   return this->add(isl::checked::multi_pw_aff(multi2));
10654 }
10655 
add_constant(isl::checked::multi_val mv)10656 isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::multi_val mv) const
10657 {
10658   auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
10659   return manage(res);
10660 }
10661 
add_constant(isl::checked::val v)10662 isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::val v) const
10663 {
10664   auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
10665   return manage(res);
10666 }
10667 
add_constant(long v)10668 isl::checked::multi_pw_aff multi_pw_aff::add_constant(long v) const
10669 {
10670   return this->add_constant(isl::checked::val(ctx(), v));
10671 }
10672 
as_map()10673 isl::checked::map multi_pw_aff::as_map() const
10674 {
10675   auto res = isl_multi_pw_aff_as_map(copy());
10676   return manage(res);
10677 }
10678 
as_set()10679 isl::checked::set multi_pw_aff::as_set() const
10680 {
10681   auto res = isl_multi_pw_aff_as_set(copy());
10682   return manage(res);
10683 }
10684 
at(int pos)10685 isl::checked::pw_aff multi_pw_aff::at(int pos) const
10686 {
10687   auto res = isl_multi_pw_aff_get_at(get(), pos);
10688   return manage(res);
10689 }
10690 
get_at(int pos)10691 isl::checked::pw_aff multi_pw_aff::get_at(int pos) const
10692 {
10693   return at(pos);
10694 }
10695 
bind(isl::checked::multi_id tuple)10696 isl::checked::set multi_pw_aff::bind(isl::checked::multi_id tuple) const
10697 {
10698   auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
10699   return manage(res);
10700 }
10701 
bind_domain(isl::checked::multi_id tuple)10702 isl::checked::multi_pw_aff multi_pw_aff::bind_domain(isl::checked::multi_id tuple) const
10703 {
10704   auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
10705   return manage(res);
10706 }
10707 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)10708 isl::checked::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
10709 {
10710   auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
10711   return manage(res);
10712 }
10713 
coalesce()10714 isl::checked::multi_pw_aff multi_pw_aff::coalesce() const
10715 {
10716   auto res = isl_multi_pw_aff_coalesce(copy());
10717   return manage(res);
10718 }
10719 
domain()10720 isl::checked::set multi_pw_aff::domain() const
10721 {
10722   auto res = isl_multi_pw_aff_domain(copy());
10723   return manage(res);
10724 }
10725 
flat_range_product(isl::checked::multi_pw_aff multi2)10726 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(isl::checked::multi_pw_aff multi2) const
10727 {
10728   auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
10729   return manage(res);
10730 }
10731 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)10732 isl::checked::multi_union_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
10733 {
10734   return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
10735 }
10736 
flat_range_product(const isl::checked::aff & multi2)10737 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::aff &multi2) const
10738 {
10739   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
10740 }
10741 
flat_range_product(const isl::checked::multi_aff & multi2)10742 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_aff &multi2) const
10743 {
10744   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
10745 }
10746 
flat_range_product(const isl::checked::pw_aff & multi2)10747 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_aff &multi2) const
10748 {
10749   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
10750 }
10751 
flat_range_product(const isl::checked::pw_multi_aff & multi2)10752 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_multi_aff &multi2) const
10753 {
10754   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
10755 }
10756 
gist(isl::checked::set set)10757 isl::checked::multi_pw_aff multi_pw_aff::gist(isl::checked::set set) const
10758 {
10759   auto res = isl_multi_pw_aff_gist(copy(), set.release());
10760   return manage(res);
10761 }
10762 
gist(const isl::checked::union_set & context)10763 isl::checked::multi_union_pw_aff multi_pw_aff::gist(const isl::checked::union_set &context) const
10764 {
10765   return isl::checked::multi_union_pw_aff(*this).gist(context);
10766 }
10767 
gist(const isl::checked::basic_set & set)10768 isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::basic_set &set) const
10769 {
10770   return this->gist(isl::checked::set(set));
10771 }
10772 
gist(const isl::checked::point & set)10773 isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::point &set) const
10774 {
10775   return this->gist(isl::checked::set(set));
10776 }
10777 
has_range_tuple_id()10778 boolean multi_pw_aff::has_range_tuple_id() const
10779 {
10780   auto res = isl_multi_pw_aff_has_range_tuple_id(get());
10781   return manage(res);
10782 }
10783 
identity()10784 isl::checked::multi_pw_aff multi_pw_aff::identity() const
10785 {
10786   auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
10787   return manage(res);
10788 }
10789 
identity_on_domain(isl::checked::space space)10790 isl::checked::multi_pw_aff multi_pw_aff::identity_on_domain(isl::checked::space space)
10791 {
10792   auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
10793   return manage(res);
10794 }
10795 
insert_domain(isl::checked::space domain)10796 isl::checked::multi_pw_aff multi_pw_aff::insert_domain(isl::checked::space domain) const
10797 {
10798   auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
10799   return manage(res);
10800 }
10801 
intersect_domain(isl::checked::set domain)10802 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(isl::checked::set domain) const
10803 {
10804   auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
10805   return manage(res);
10806 }
10807 
intersect_domain(const isl::checked::union_set & uset)10808 isl::checked::multi_union_pw_aff multi_pw_aff::intersect_domain(const isl::checked::union_set &uset) const
10809 {
10810   return isl::checked::multi_union_pw_aff(*this).intersect_domain(uset);
10811 }
10812 
intersect_domain(const isl::checked::basic_set & domain)10813 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::basic_set &domain) const
10814 {
10815   return this->intersect_domain(isl::checked::set(domain));
10816 }
10817 
intersect_domain(const isl::checked::point & domain)10818 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::point &domain) const
10819 {
10820   return this->intersect_domain(isl::checked::set(domain));
10821 }
10822 
intersect_params(isl::checked::set set)10823 isl::checked::multi_pw_aff multi_pw_aff::intersect_params(isl::checked::set set) const
10824 {
10825   auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
10826   return manage(res);
10827 }
10828 
involves_nan()10829 boolean multi_pw_aff::involves_nan() const
10830 {
10831   auto res = isl_multi_pw_aff_involves_nan(get());
10832   return manage(res);
10833 }
10834 
involves_param(const isl::checked::id & id)10835 boolean multi_pw_aff::involves_param(const isl::checked::id &id) const
10836 {
10837   auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
10838   return manage(res);
10839 }
10840 
involves_param(const std::string & id)10841 boolean multi_pw_aff::involves_param(const std::string &id) const
10842 {
10843   return this->involves_param(isl::checked::id(ctx(), id));
10844 }
10845 
involves_param(const isl::checked::id_list & list)10846 boolean multi_pw_aff::involves_param(const isl::checked::id_list &list) const
10847 {
10848   auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
10849   return manage(res);
10850 }
10851 
list()10852 isl::checked::pw_aff_list multi_pw_aff::list() const
10853 {
10854   auto res = isl_multi_pw_aff_get_list(get());
10855   return manage(res);
10856 }
10857 
get_list()10858 isl::checked::pw_aff_list multi_pw_aff::get_list() const
10859 {
10860   return list();
10861 }
10862 
max(isl::checked::multi_pw_aff multi2)10863 isl::checked::multi_pw_aff multi_pw_aff::max(isl::checked::multi_pw_aff multi2) const
10864 {
10865   auto res = isl_multi_pw_aff_max(copy(), multi2.release());
10866   return manage(res);
10867 }
10868 
max_multi_val()10869 isl::checked::multi_val multi_pw_aff::max_multi_val() const
10870 {
10871   auto res = isl_multi_pw_aff_max_multi_val(copy());
10872   return manage(res);
10873 }
10874 
min(isl::checked::multi_pw_aff multi2)10875 isl::checked::multi_pw_aff multi_pw_aff::min(isl::checked::multi_pw_aff multi2) const
10876 {
10877   auto res = isl_multi_pw_aff_min(copy(), multi2.release());
10878   return manage(res);
10879 }
10880 
min_multi_val()10881 isl::checked::multi_val multi_pw_aff::min_multi_val() const
10882 {
10883   auto res = isl_multi_pw_aff_min_multi_val(copy());
10884   return manage(res);
10885 }
10886 
neg()10887 isl::checked::multi_pw_aff multi_pw_aff::neg() const
10888 {
10889   auto res = isl_multi_pw_aff_neg(copy());
10890   return manage(res);
10891 }
10892 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)10893 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
10894 {
10895   auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
10896   return manage(res);
10897 }
10898 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)10899 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
10900 {
10901   return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
10902 }
10903 
plain_is_equal(const isl::checked::aff & multi2)10904 boolean multi_pw_aff::plain_is_equal(const isl::checked::aff &multi2) const
10905 {
10906   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
10907 }
10908 
plain_is_equal(const isl::checked::multi_aff & multi2)10909 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
10910 {
10911   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
10912 }
10913 
plain_is_equal(const isl::checked::pw_aff & multi2)10914 boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_aff &multi2) const
10915 {
10916   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
10917 }
10918 
plain_is_equal(const isl::checked::pw_multi_aff & multi2)10919 boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_multi_aff &multi2) const
10920 {
10921   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
10922 }
10923 
product(isl::checked::multi_pw_aff multi2)10924 isl::checked::multi_pw_aff multi_pw_aff::product(isl::checked::multi_pw_aff multi2) const
10925 {
10926   auto res = isl_multi_pw_aff_product(copy(), multi2.release());
10927   return manage(res);
10928 }
10929 
pullback(isl::checked::multi_aff ma)10930 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_aff ma) const
10931 {
10932   auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
10933   return manage(res);
10934 }
10935 
pullback(isl::checked::multi_pw_aff mpa2)10936 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_pw_aff mpa2) const
10937 {
10938   auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
10939   return manage(res);
10940 }
10941 
pullback(isl::checked::pw_multi_aff pma)10942 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::pw_multi_aff pma) const
10943 {
10944   auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
10945   return manage(res);
10946 }
10947 
pullback(const isl::checked::union_pw_multi_aff & upma)10948 isl::checked::multi_union_pw_aff multi_pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
10949 {
10950   return isl::checked::multi_union_pw_aff(*this).pullback(upma);
10951 }
10952 
range_product(isl::checked::multi_pw_aff multi2)10953 isl::checked::multi_pw_aff multi_pw_aff::range_product(isl::checked::multi_pw_aff multi2) const
10954 {
10955   auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
10956   return manage(res);
10957 }
10958 
range_product(const isl::checked::multi_union_pw_aff & multi2)10959 isl::checked::multi_union_pw_aff multi_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
10960 {
10961   return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
10962 }
10963 
range_product(const isl::checked::aff & multi2)10964 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::aff &multi2) const
10965 {
10966   return this->range_product(isl::checked::multi_pw_aff(multi2));
10967 }
10968 
range_product(const isl::checked::multi_aff & multi2)10969 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::multi_aff &multi2) const
10970 {
10971   return this->range_product(isl::checked::multi_pw_aff(multi2));
10972 }
10973 
range_product(const isl::checked::pw_aff & multi2)10974 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_aff &multi2) const
10975 {
10976   return this->range_product(isl::checked::multi_pw_aff(multi2));
10977 }
10978 
range_product(const isl::checked::pw_multi_aff & multi2)10979 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_multi_aff &multi2) const
10980 {
10981   return this->range_product(isl::checked::multi_pw_aff(multi2));
10982 }
10983 
range_tuple_id()10984 isl::checked::id multi_pw_aff::range_tuple_id() const
10985 {
10986   auto res = isl_multi_pw_aff_get_range_tuple_id(get());
10987   return manage(res);
10988 }
10989 
get_range_tuple_id()10990 isl::checked::id multi_pw_aff::get_range_tuple_id() const
10991 {
10992   return range_tuple_id();
10993 }
10994 
reset_range_tuple_id()10995 isl::checked::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
10996 {
10997   auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
10998   return manage(res);
10999 }
11000 
scale(isl::checked::multi_val mv)11001 isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::multi_val mv) const
11002 {
11003   auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
11004   return manage(res);
11005 }
11006 
scale(isl::checked::val v)11007 isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::val v) const
11008 {
11009   auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
11010   return manage(res);
11011 }
11012 
scale(long v)11013 isl::checked::multi_pw_aff multi_pw_aff::scale(long v) const
11014 {
11015   return this->scale(isl::checked::val(ctx(), v));
11016 }
11017 
scale_down(isl::checked::multi_val mv)11018 isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::multi_val mv) const
11019 {
11020   auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
11021   return manage(res);
11022 }
11023 
scale_down(isl::checked::val v)11024 isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::val v) const
11025 {
11026   auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
11027   return manage(res);
11028 }
11029 
scale_down(long v)11030 isl::checked::multi_pw_aff multi_pw_aff::scale_down(long v) const
11031 {
11032   return this->scale_down(isl::checked::val(ctx(), v));
11033 }
11034 
set_at(int pos,isl::checked::pw_aff el)11035 isl::checked::multi_pw_aff multi_pw_aff::set_at(int pos, isl::checked::pw_aff el) const
11036 {
11037   auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
11038   return manage(res);
11039 }
11040 
set_at(int pos,const isl::checked::union_pw_aff & el)11041 isl::checked::multi_union_pw_aff multi_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
11042 {
11043   return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
11044 }
11045 
set_range_tuple(isl::checked::id id)11046 isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(isl::checked::id id) const
11047 {
11048   auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
11049   return manage(res);
11050 }
11051 
set_range_tuple(const std::string & id)11052 isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(const std::string &id) const
11053 {
11054   return this->set_range_tuple(isl::checked::id(ctx(), id));
11055 }
11056 
size()11057 class size multi_pw_aff::size() const
11058 {
11059   auto res = isl_multi_pw_aff_size(get());
11060   return manage(res);
11061 }
11062 
space()11063 isl::checked::space multi_pw_aff::space() const
11064 {
11065   auto res = isl_multi_pw_aff_get_space(get());
11066   return manage(res);
11067 }
11068 
get_space()11069 isl::checked::space multi_pw_aff::get_space() const
11070 {
11071   return space();
11072 }
11073 
sub(isl::checked::multi_pw_aff multi2)11074 isl::checked::multi_pw_aff multi_pw_aff::sub(isl::checked::multi_pw_aff multi2) const
11075 {
11076   auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
11077   return manage(res);
11078 }
11079 
sub(const isl::checked::multi_union_pw_aff & multi2)11080 isl::checked::multi_union_pw_aff multi_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
11081 {
11082   return isl::checked::multi_union_pw_aff(*this).sub(multi2);
11083 }
11084 
sub(const isl::checked::aff & multi2)11085 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::aff &multi2) const
11086 {
11087   return this->sub(isl::checked::multi_pw_aff(multi2));
11088 }
11089 
sub(const isl::checked::multi_aff & multi2)11090 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::multi_aff &multi2) const
11091 {
11092   return this->sub(isl::checked::multi_pw_aff(multi2));
11093 }
11094 
sub(const isl::checked::pw_aff & multi2)11095 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_aff &multi2) const
11096 {
11097   return this->sub(isl::checked::multi_pw_aff(multi2));
11098 }
11099 
sub(const isl::checked::pw_multi_aff & multi2)11100 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_multi_aff &multi2) const
11101 {
11102   return this->sub(isl::checked::multi_pw_aff(multi2));
11103 }
11104 
unbind_params_insert_domain(isl::checked::multi_id domain)11105 isl::checked::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
11106 {
11107   auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
11108   return manage(res);
11109 }
11110 
union_add(isl::checked::multi_pw_aff mpa2)11111 isl::checked::multi_pw_aff multi_pw_aff::union_add(isl::checked::multi_pw_aff mpa2) const
11112 {
11113   auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
11114   return manage(res);
11115 }
11116 
union_add(const isl::checked::multi_union_pw_aff & mupa2)11117 isl::checked::multi_union_pw_aff multi_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
11118 {
11119   return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
11120 }
11121 
union_add(const isl::checked::aff & mpa2)11122 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::aff &mpa2) const
11123 {
11124   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11125 }
11126 
union_add(const isl::checked::multi_aff & mpa2)11127 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::multi_aff &mpa2) const
11128 {
11129   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11130 }
11131 
union_add(const isl::checked::pw_aff & mpa2)11132 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_aff &mpa2) const
11133 {
11134   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11135 }
11136 
union_add(const isl::checked::pw_multi_aff & mpa2)11137 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_multi_aff &mpa2) const
11138 {
11139   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11140 }
11141 
zero(isl::checked::space space)11142 isl::checked::multi_pw_aff multi_pw_aff::zero(isl::checked::space space)
11143 {
11144   auto res = isl_multi_pw_aff_zero(space.release());
11145   return manage(res);
11146 }
11147 
11148 inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
11149 {
11150   char *str = isl_multi_pw_aff_to_str(obj.get());
11151   if (!str) {
11152     os.setstate(std::ios_base::badbit);
11153     return os;
11154   }
11155   os << str;
11156   free(str);
11157   return os;
11158 }
11159 
11160 // implementations for isl::multi_union_pw_aff
manage(__isl_take isl_multi_union_pw_aff * ptr)11161 multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
11162   return multi_union_pw_aff(ptr);
11163 }
manage_copy(__isl_keep isl_multi_union_pw_aff * ptr)11164 multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
11165   ptr = isl_multi_union_pw_aff_copy(ptr);
11166   return multi_union_pw_aff(ptr);
11167 }
11168 
multi_union_pw_aff()11169 multi_union_pw_aff::multi_union_pw_aff()
11170     : ptr(nullptr) {}
11171 
multi_union_pw_aff(const multi_union_pw_aff & obj)11172 multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
11173     : ptr(nullptr)
11174 {
11175   ptr = obj.copy();
11176 }
11177 
multi_union_pw_aff(__isl_take isl_multi_union_pw_aff * ptr)11178 multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
11179     : ptr(ptr) {}
11180 
multi_union_pw_aff(isl::checked::multi_pw_aff mpa)11181 multi_union_pw_aff::multi_union_pw_aff(isl::checked::multi_pw_aff mpa)
11182 {
11183   auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
11184   ptr = res;
11185 }
11186 
multi_union_pw_aff(isl::checked::union_pw_aff upa)11187 multi_union_pw_aff::multi_union_pw_aff(isl::checked::union_pw_aff upa)
11188 {
11189   auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
11190   ptr = res;
11191 }
11192 
multi_union_pw_aff(isl::checked::space space,isl::checked::union_pw_aff_list list)11193 multi_union_pw_aff::multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list)
11194 {
11195   auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
11196   ptr = res;
11197 }
11198 
multi_union_pw_aff(isl::checked::ctx ctx,const std::string & str)11199 multi_union_pw_aff::multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str)
11200 {
11201   auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
11202   ptr = res;
11203 }
11204 
11205 multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
11206   std::swap(this->ptr, obj.ptr);
11207   return *this;
11208 }
11209 
~multi_union_pw_aff()11210 multi_union_pw_aff::~multi_union_pw_aff() {
11211   if (ptr)
11212     isl_multi_union_pw_aff_free(ptr);
11213 }
11214 
copy()11215 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
11216   return isl_multi_union_pw_aff_copy(ptr);
11217 }
11218 
get()11219 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
11220   return ptr;
11221 }
11222 
release()11223 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
11224   isl_multi_union_pw_aff *tmp = ptr;
11225   ptr = nullptr;
11226   return tmp;
11227 }
11228 
is_null()11229 bool multi_union_pw_aff::is_null() const {
11230   return ptr == nullptr;
11231 }
11232 
ctx()11233 isl::checked::ctx multi_union_pw_aff::ctx() const {
11234   return isl::checked::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
11235 }
11236 
add(isl::checked::multi_union_pw_aff multi2)11237 isl::checked::multi_union_pw_aff multi_union_pw_aff::add(isl::checked::multi_union_pw_aff multi2) const
11238 {
11239   auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
11240   return manage(res);
11241 }
11242 
at(int pos)11243 isl::checked::union_pw_aff multi_union_pw_aff::at(int pos) const
11244 {
11245   auto res = isl_multi_union_pw_aff_get_at(get(), pos);
11246   return manage(res);
11247 }
11248 
get_at(int pos)11249 isl::checked::union_pw_aff multi_union_pw_aff::get_at(int pos) const
11250 {
11251   return at(pos);
11252 }
11253 
bind(isl::checked::multi_id tuple)11254 isl::checked::union_set multi_union_pw_aff::bind(isl::checked::multi_id tuple) const
11255 {
11256   auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
11257   return manage(res);
11258 }
11259 
coalesce()11260 isl::checked::multi_union_pw_aff multi_union_pw_aff::coalesce() const
11261 {
11262   auto res = isl_multi_union_pw_aff_coalesce(copy());
11263   return manage(res);
11264 }
11265 
domain()11266 isl::checked::union_set multi_union_pw_aff::domain() const
11267 {
11268   auto res = isl_multi_union_pw_aff_domain(copy());
11269   return manage(res);
11270 }
11271 
flat_range_product(isl::checked::multi_union_pw_aff multi2)11272 isl::checked::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::checked::multi_union_pw_aff multi2) const
11273 {
11274   auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
11275   return manage(res);
11276 }
11277 
gist(isl::checked::union_set context)11278 isl::checked::multi_union_pw_aff multi_union_pw_aff::gist(isl::checked::union_set context) const
11279 {
11280   auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
11281   return manage(res);
11282 }
11283 
has_range_tuple_id()11284 boolean multi_union_pw_aff::has_range_tuple_id() const
11285 {
11286   auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
11287   return manage(res);
11288 }
11289 
intersect_domain(isl::checked::union_set uset)11290 isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::checked::union_set uset) const
11291 {
11292   auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
11293   return manage(res);
11294 }
11295 
intersect_params(isl::checked::set params)11296 isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::checked::set params) const
11297 {
11298   auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
11299   return manage(res);
11300 }
11301 
involves_nan()11302 boolean multi_union_pw_aff::involves_nan() const
11303 {
11304   auto res = isl_multi_union_pw_aff_involves_nan(get());
11305   return manage(res);
11306 }
11307 
list()11308 isl::checked::union_pw_aff_list multi_union_pw_aff::list() const
11309 {
11310   auto res = isl_multi_union_pw_aff_get_list(get());
11311   return manage(res);
11312 }
11313 
get_list()11314 isl::checked::union_pw_aff_list multi_union_pw_aff::get_list() const
11315 {
11316   return list();
11317 }
11318 
neg()11319 isl::checked::multi_union_pw_aff multi_union_pw_aff::neg() const
11320 {
11321   auto res = isl_multi_union_pw_aff_neg(copy());
11322   return manage(res);
11323 }
11324 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)11325 boolean multi_union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
11326 {
11327   auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
11328   return manage(res);
11329 }
11330 
pullback(isl::checked::union_pw_multi_aff upma)11331 isl::checked::multi_union_pw_aff multi_union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
11332 {
11333   auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
11334   return manage(res);
11335 }
11336 
range_product(isl::checked::multi_union_pw_aff multi2)11337 isl::checked::multi_union_pw_aff multi_union_pw_aff::range_product(isl::checked::multi_union_pw_aff multi2) const
11338 {
11339   auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
11340   return manage(res);
11341 }
11342 
range_tuple_id()11343 isl::checked::id multi_union_pw_aff::range_tuple_id() const
11344 {
11345   auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
11346   return manage(res);
11347 }
11348 
get_range_tuple_id()11349 isl::checked::id multi_union_pw_aff::get_range_tuple_id() const
11350 {
11351   return range_tuple_id();
11352 }
11353 
reset_range_tuple_id()11354 isl::checked::multi_union_pw_aff multi_union_pw_aff::reset_range_tuple_id() const
11355 {
11356   auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
11357   return manage(res);
11358 }
11359 
scale(isl::checked::multi_val mv)11360 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::multi_val mv) const
11361 {
11362   auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
11363   return manage(res);
11364 }
11365 
scale(isl::checked::val v)11366 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::val v) const
11367 {
11368   auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
11369   return manage(res);
11370 }
11371 
scale(long v)11372 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
11373 {
11374   return this->scale(isl::checked::val(ctx(), v));
11375 }
11376 
scale_down(isl::checked::multi_val mv)11377 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::multi_val mv) const
11378 {
11379   auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
11380   return manage(res);
11381 }
11382 
scale_down(isl::checked::val v)11383 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::val v) const
11384 {
11385   auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
11386   return manage(res);
11387 }
11388 
scale_down(long v)11389 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
11390 {
11391   return this->scale_down(isl::checked::val(ctx(), v));
11392 }
11393 
set_at(int pos,isl::checked::union_pw_aff el)11394 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::checked::union_pw_aff el) const
11395 {
11396   auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
11397   return manage(res);
11398 }
11399 
set_range_tuple(isl::checked::id id)11400 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(isl::checked::id id) const
11401 {
11402   auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
11403   return manage(res);
11404 }
11405 
set_range_tuple(const std::string & id)11406 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(const std::string &id) const
11407 {
11408   return this->set_range_tuple(isl::checked::id(ctx(), id));
11409 }
11410 
size()11411 class size multi_union_pw_aff::size() const
11412 {
11413   auto res = isl_multi_union_pw_aff_size(get());
11414   return manage(res);
11415 }
11416 
space()11417 isl::checked::space multi_union_pw_aff::space() const
11418 {
11419   auto res = isl_multi_union_pw_aff_get_space(get());
11420   return manage(res);
11421 }
11422 
get_space()11423 isl::checked::space multi_union_pw_aff::get_space() const
11424 {
11425   return space();
11426 }
11427 
sub(isl::checked::multi_union_pw_aff multi2)11428 isl::checked::multi_union_pw_aff multi_union_pw_aff::sub(isl::checked::multi_union_pw_aff multi2) const
11429 {
11430   auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
11431   return manage(res);
11432 }
11433 
union_add(isl::checked::multi_union_pw_aff mupa2)11434 isl::checked::multi_union_pw_aff multi_union_pw_aff::union_add(isl::checked::multi_union_pw_aff mupa2) const
11435 {
11436   auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
11437   return manage(res);
11438 }
11439 
zero(isl::checked::space space)11440 isl::checked::multi_union_pw_aff multi_union_pw_aff::zero(isl::checked::space space)
11441 {
11442   auto res = isl_multi_union_pw_aff_zero(space.release());
11443   return manage(res);
11444 }
11445 
11446 inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
11447 {
11448   char *str = isl_multi_union_pw_aff_to_str(obj.get());
11449   if (!str) {
11450     os.setstate(std::ios_base::badbit);
11451     return os;
11452   }
11453   os << str;
11454   free(str);
11455   return os;
11456 }
11457 
11458 // implementations for isl::multi_val
manage(__isl_take isl_multi_val * ptr)11459 multi_val manage(__isl_take isl_multi_val *ptr) {
11460   return multi_val(ptr);
11461 }
manage_copy(__isl_keep isl_multi_val * ptr)11462 multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
11463   ptr = isl_multi_val_copy(ptr);
11464   return multi_val(ptr);
11465 }
11466 
multi_val()11467 multi_val::multi_val()
11468     : ptr(nullptr) {}
11469 
multi_val(const multi_val & obj)11470 multi_val::multi_val(const multi_val &obj)
11471     : ptr(nullptr)
11472 {
11473   ptr = obj.copy();
11474 }
11475 
multi_val(__isl_take isl_multi_val * ptr)11476 multi_val::multi_val(__isl_take isl_multi_val *ptr)
11477     : ptr(ptr) {}
11478 
multi_val(isl::checked::space space,isl::checked::val_list list)11479 multi_val::multi_val(isl::checked::space space, isl::checked::val_list list)
11480 {
11481   auto res = isl_multi_val_from_val_list(space.release(), list.release());
11482   ptr = res;
11483 }
11484 
multi_val(isl::checked::ctx ctx,const std::string & str)11485 multi_val::multi_val(isl::checked::ctx ctx, const std::string &str)
11486 {
11487   auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
11488   ptr = res;
11489 }
11490 
11491 multi_val &multi_val::operator=(multi_val obj) {
11492   std::swap(this->ptr, obj.ptr);
11493   return *this;
11494 }
11495 
~multi_val()11496 multi_val::~multi_val() {
11497   if (ptr)
11498     isl_multi_val_free(ptr);
11499 }
11500 
copy()11501 __isl_give isl_multi_val *multi_val::copy() const & {
11502   return isl_multi_val_copy(ptr);
11503 }
11504 
get()11505 __isl_keep isl_multi_val *multi_val::get() const {
11506   return ptr;
11507 }
11508 
release()11509 __isl_give isl_multi_val *multi_val::release() {
11510   isl_multi_val *tmp = ptr;
11511   ptr = nullptr;
11512   return tmp;
11513 }
11514 
is_null()11515 bool multi_val::is_null() const {
11516   return ptr == nullptr;
11517 }
11518 
ctx()11519 isl::checked::ctx multi_val::ctx() const {
11520   return isl::checked::ctx(isl_multi_val_get_ctx(ptr));
11521 }
11522 
add(isl::checked::multi_val multi2)11523 isl::checked::multi_val multi_val::add(isl::checked::multi_val multi2) const
11524 {
11525   auto res = isl_multi_val_add(copy(), multi2.release());
11526   return manage(res);
11527 }
11528 
add(isl::checked::val v)11529 isl::checked::multi_val multi_val::add(isl::checked::val v) const
11530 {
11531   auto res = isl_multi_val_add_val(copy(), v.release());
11532   return manage(res);
11533 }
11534 
add(long v)11535 isl::checked::multi_val multi_val::add(long v) const
11536 {
11537   return this->add(isl::checked::val(ctx(), v));
11538 }
11539 
at(int pos)11540 isl::checked::val multi_val::at(int pos) const
11541 {
11542   auto res = isl_multi_val_get_at(get(), pos);
11543   return manage(res);
11544 }
11545 
get_at(int pos)11546 isl::checked::val multi_val::get_at(int pos) const
11547 {
11548   return at(pos);
11549 }
11550 
flat_range_product(isl::checked::multi_val multi2)11551 isl::checked::multi_val multi_val::flat_range_product(isl::checked::multi_val multi2) const
11552 {
11553   auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
11554   return manage(res);
11555 }
11556 
has_range_tuple_id()11557 boolean multi_val::has_range_tuple_id() const
11558 {
11559   auto res = isl_multi_val_has_range_tuple_id(get());
11560   return manage(res);
11561 }
11562 
involves_nan()11563 boolean multi_val::involves_nan() const
11564 {
11565   auto res = isl_multi_val_involves_nan(get());
11566   return manage(res);
11567 }
11568 
list()11569 isl::checked::val_list multi_val::list() const
11570 {
11571   auto res = isl_multi_val_get_list(get());
11572   return manage(res);
11573 }
11574 
get_list()11575 isl::checked::val_list multi_val::get_list() const
11576 {
11577   return list();
11578 }
11579 
max(isl::checked::multi_val multi2)11580 isl::checked::multi_val multi_val::max(isl::checked::multi_val multi2) const
11581 {
11582   auto res = isl_multi_val_max(copy(), multi2.release());
11583   return manage(res);
11584 }
11585 
min(isl::checked::multi_val multi2)11586 isl::checked::multi_val multi_val::min(isl::checked::multi_val multi2) const
11587 {
11588   auto res = isl_multi_val_min(copy(), multi2.release());
11589   return manage(res);
11590 }
11591 
neg()11592 isl::checked::multi_val multi_val::neg() const
11593 {
11594   auto res = isl_multi_val_neg(copy());
11595   return manage(res);
11596 }
11597 
plain_is_equal(const isl::checked::multi_val & multi2)11598 boolean multi_val::plain_is_equal(const isl::checked::multi_val &multi2) const
11599 {
11600   auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
11601   return manage(res);
11602 }
11603 
product(isl::checked::multi_val multi2)11604 isl::checked::multi_val multi_val::product(isl::checked::multi_val multi2) const
11605 {
11606   auto res = isl_multi_val_product(copy(), multi2.release());
11607   return manage(res);
11608 }
11609 
range_product(isl::checked::multi_val multi2)11610 isl::checked::multi_val multi_val::range_product(isl::checked::multi_val multi2) const
11611 {
11612   auto res = isl_multi_val_range_product(copy(), multi2.release());
11613   return manage(res);
11614 }
11615 
range_tuple_id()11616 isl::checked::id multi_val::range_tuple_id() const
11617 {
11618   auto res = isl_multi_val_get_range_tuple_id(get());
11619   return manage(res);
11620 }
11621 
get_range_tuple_id()11622 isl::checked::id multi_val::get_range_tuple_id() const
11623 {
11624   return range_tuple_id();
11625 }
11626 
reset_range_tuple_id()11627 isl::checked::multi_val multi_val::reset_range_tuple_id() const
11628 {
11629   auto res = isl_multi_val_reset_range_tuple_id(copy());
11630   return manage(res);
11631 }
11632 
scale(isl::checked::multi_val mv)11633 isl::checked::multi_val multi_val::scale(isl::checked::multi_val mv) const
11634 {
11635   auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
11636   return manage(res);
11637 }
11638 
scale(isl::checked::val v)11639 isl::checked::multi_val multi_val::scale(isl::checked::val v) const
11640 {
11641   auto res = isl_multi_val_scale_val(copy(), v.release());
11642   return manage(res);
11643 }
11644 
scale(long v)11645 isl::checked::multi_val multi_val::scale(long v) const
11646 {
11647   return this->scale(isl::checked::val(ctx(), v));
11648 }
11649 
scale_down(isl::checked::multi_val mv)11650 isl::checked::multi_val multi_val::scale_down(isl::checked::multi_val mv) const
11651 {
11652   auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
11653   return manage(res);
11654 }
11655 
scale_down(isl::checked::val v)11656 isl::checked::multi_val multi_val::scale_down(isl::checked::val v) const
11657 {
11658   auto res = isl_multi_val_scale_down_val(copy(), v.release());
11659   return manage(res);
11660 }
11661 
scale_down(long v)11662 isl::checked::multi_val multi_val::scale_down(long v) const
11663 {
11664   return this->scale_down(isl::checked::val(ctx(), v));
11665 }
11666 
set_at(int pos,isl::checked::val el)11667 isl::checked::multi_val multi_val::set_at(int pos, isl::checked::val el) const
11668 {
11669   auto res = isl_multi_val_set_at(copy(), pos, el.release());
11670   return manage(res);
11671 }
11672 
set_at(int pos,long el)11673 isl::checked::multi_val multi_val::set_at(int pos, long el) const
11674 {
11675   return this->set_at(pos, isl::checked::val(ctx(), el));
11676 }
11677 
set_range_tuple(isl::checked::id id)11678 isl::checked::multi_val multi_val::set_range_tuple(isl::checked::id id) const
11679 {
11680   auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
11681   return manage(res);
11682 }
11683 
set_range_tuple(const std::string & id)11684 isl::checked::multi_val multi_val::set_range_tuple(const std::string &id) const
11685 {
11686   return this->set_range_tuple(isl::checked::id(ctx(), id));
11687 }
11688 
size()11689 class size multi_val::size() const
11690 {
11691   auto res = isl_multi_val_size(get());
11692   return manage(res);
11693 }
11694 
space()11695 isl::checked::space multi_val::space() const
11696 {
11697   auto res = isl_multi_val_get_space(get());
11698   return manage(res);
11699 }
11700 
get_space()11701 isl::checked::space multi_val::get_space() const
11702 {
11703   return space();
11704 }
11705 
sub(isl::checked::multi_val multi2)11706 isl::checked::multi_val multi_val::sub(isl::checked::multi_val multi2) const
11707 {
11708   auto res = isl_multi_val_sub(copy(), multi2.release());
11709   return manage(res);
11710 }
11711 
zero(isl::checked::space space)11712 isl::checked::multi_val multi_val::zero(isl::checked::space space)
11713 {
11714   auto res = isl_multi_val_zero(space.release());
11715   return manage(res);
11716 }
11717 
11718 inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
11719 {
11720   char *str = isl_multi_val_to_str(obj.get());
11721   if (!str) {
11722     os.setstate(std::ios_base::badbit);
11723     return os;
11724   }
11725   os << str;
11726   free(str);
11727   return os;
11728 }
11729 
11730 // implementations for isl::point
manage(__isl_take isl_point * ptr)11731 point manage(__isl_take isl_point *ptr) {
11732   return point(ptr);
11733 }
manage_copy(__isl_keep isl_point * ptr)11734 point manage_copy(__isl_keep isl_point *ptr) {
11735   ptr = isl_point_copy(ptr);
11736   return point(ptr);
11737 }
11738 
point()11739 point::point()
11740     : ptr(nullptr) {}
11741 
point(const point & obj)11742 point::point(const point &obj)
11743     : ptr(nullptr)
11744 {
11745   ptr = obj.copy();
11746 }
11747 
point(__isl_take isl_point * ptr)11748 point::point(__isl_take isl_point *ptr)
11749     : ptr(ptr) {}
11750 
11751 point &point::operator=(point obj) {
11752   std::swap(this->ptr, obj.ptr);
11753   return *this;
11754 }
11755 
~point()11756 point::~point() {
11757   if (ptr)
11758     isl_point_free(ptr);
11759 }
11760 
copy()11761 __isl_give isl_point *point::copy() const & {
11762   return isl_point_copy(ptr);
11763 }
11764 
get()11765 __isl_keep isl_point *point::get() const {
11766   return ptr;
11767 }
11768 
release()11769 __isl_give isl_point *point::release() {
11770   isl_point *tmp = ptr;
11771   ptr = nullptr;
11772   return tmp;
11773 }
11774 
is_null()11775 bool point::is_null() const {
11776   return ptr == nullptr;
11777 }
11778 
ctx()11779 isl::checked::ctx point::ctx() const {
11780   return isl::checked::ctx(isl_point_get_ctx(ptr));
11781 }
11782 
affine_hull()11783 isl::checked::basic_set point::affine_hull() const
11784 {
11785   return isl::checked::basic_set(*this).affine_hull();
11786 }
11787 
apply(const isl::checked::basic_map & bmap)11788 isl::checked::basic_set point::apply(const isl::checked::basic_map &bmap) const
11789 {
11790   return isl::checked::basic_set(*this).apply(bmap);
11791 }
11792 
apply(const isl::checked::map & map)11793 isl::checked::set point::apply(const isl::checked::map &map) const
11794 {
11795   return isl::checked::basic_set(*this).apply(map);
11796 }
11797 
apply(const isl::checked::union_map & umap)11798 isl::checked::union_set point::apply(const isl::checked::union_map &umap) const
11799 {
11800   return isl::checked::basic_set(*this).apply(umap);
11801 }
11802 
as_pw_multi_aff()11803 isl::checked::pw_multi_aff point::as_pw_multi_aff() const
11804 {
11805   return isl::checked::basic_set(*this).as_pw_multi_aff();
11806 }
11807 
as_set()11808 isl::checked::set point::as_set() const
11809 {
11810   return isl::checked::basic_set(*this).as_set();
11811 }
11812 
bind(const isl::checked::multi_id & tuple)11813 isl::checked::set point::bind(const isl::checked::multi_id &tuple) const
11814 {
11815   return isl::checked::basic_set(*this).bind(tuple);
11816 }
11817 
coalesce()11818 isl::checked::set point::coalesce() const
11819 {
11820   return isl::checked::basic_set(*this).coalesce();
11821 }
11822 
complement()11823 isl::checked::set point::complement() const
11824 {
11825   return isl::checked::basic_set(*this).complement();
11826 }
11827 
compute_divs()11828 isl::checked::union_set point::compute_divs() const
11829 {
11830   return isl::checked::basic_set(*this).compute_divs();
11831 }
11832 
detect_equalities()11833 isl::checked::basic_set point::detect_equalities() const
11834 {
11835   return isl::checked::basic_set(*this).detect_equalities();
11836 }
11837 
dim_max_val(int pos)11838 isl::checked::val point::dim_max_val(int pos) const
11839 {
11840   return isl::checked::basic_set(*this).dim_max_val(pos);
11841 }
11842 
dim_min_val(int pos)11843 isl::checked::val point::dim_min_val(int pos) const
11844 {
11845   return isl::checked::basic_set(*this).dim_min_val(pos);
11846 }
11847 
every_set(const std::function<boolean (isl::checked::set)> & test)11848 boolean point::every_set(const std::function<boolean(isl::checked::set)> &test) const
11849 {
11850   return isl::checked::basic_set(*this).every_set(test);
11851 }
11852 
extract_set(const isl::checked::space & space)11853 isl::checked::set point::extract_set(const isl::checked::space &space) const
11854 {
11855   return isl::checked::basic_set(*this).extract_set(space);
11856 }
11857 
flatten()11858 isl::checked::basic_set point::flatten() const
11859 {
11860   return isl::checked::basic_set(*this).flatten();
11861 }
11862 
foreach_basic_set(const std::function<stat (isl::checked::basic_set)> & fn)11863 stat point::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
11864 {
11865   return isl::checked::basic_set(*this).foreach_basic_set(fn);
11866 }
11867 
foreach_point(const std::function<stat (isl::checked::point)> & fn)11868 stat point::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
11869 {
11870   return isl::checked::basic_set(*this).foreach_point(fn);
11871 }
11872 
foreach_set(const std::function<stat (isl::checked::set)> & fn)11873 stat point::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
11874 {
11875   return isl::checked::basic_set(*this).foreach_set(fn);
11876 }
11877 
gist(const isl::checked::basic_set & context)11878 isl::checked::basic_set point::gist(const isl::checked::basic_set &context) const
11879 {
11880   return isl::checked::basic_set(*this).gist(context);
11881 }
11882 
gist(const isl::checked::set & context)11883 isl::checked::set point::gist(const isl::checked::set &context) const
11884 {
11885   return isl::checked::basic_set(*this).gist(context);
11886 }
11887 
gist(const isl::checked::union_set & context)11888 isl::checked::union_set point::gist(const isl::checked::union_set &context) const
11889 {
11890   return isl::checked::basic_set(*this).gist(context);
11891 }
11892 
gist_params(const isl::checked::set & set)11893 isl::checked::union_set point::gist_params(const isl::checked::set &set) const
11894 {
11895   return isl::checked::basic_set(*this).gist_params(set);
11896 }
11897 
identity()11898 isl::checked::map point::identity() const
11899 {
11900   return isl::checked::basic_set(*this).identity();
11901 }
11902 
indicator_function()11903 isl::checked::pw_aff point::indicator_function() const
11904 {
11905   return isl::checked::basic_set(*this).indicator_function();
11906 }
11907 
insert_domain(const isl::checked::space & domain)11908 isl::checked::map point::insert_domain(const isl::checked::space &domain) const
11909 {
11910   return isl::checked::basic_set(*this).insert_domain(domain);
11911 }
11912 
intersect(const isl::checked::basic_set & bset2)11913 isl::checked::basic_set point::intersect(const isl::checked::basic_set &bset2) const
11914 {
11915   return isl::checked::basic_set(*this).intersect(bset2);
11916 }
11917 
intersect(const isl::checked::set & set2)11918 isl::checked::set point::intersect(const isl::checked::set &set2) const
11919 {
11920   return isl::checked::basic_set(*this).intersect(set2);
11921 }
11922 
intersect(const isl::checked::union_set & uset2)11923 isl::checked::union_set point::intersect(const isl::checked::union_set &uset2) const
11924 {
11925   return isl::checked::basic_set(*this).intersect(uset2);
11926 }
11927 
intersect_params(const isl::checked::basic_set & bset2)11928 isl::checked::basic_set point::intersect_params(const isl::checked::basic_set &bset2) const
11929 {
11930   return isl::checked::basic_set(*this).intersect_params(bset2);
11931 }
11932 
intersect_params(const isl::checked::set & params)11933 isl::checked::set point::intersect_params(const isl::checked::set &params) const
11934 {
11935   return isl::checked::basic_set(*this).intersect_params(params);
11936 }
11937 
involves_locals()11938 boolean point::involves_locals() const
11939 {
11940   return isl::checked::basic_set(*this).involves_locals();
11941 }
11942 
is_disjoint(const isl::checked::set & set2)11943 boolean point::is_disjoint(const isl::checked::set &set2) const
11944 {
11945   return isl::checked::basic_set(*this).is_disjoint(set2);
11946 }
11947 
is_disjoint(const isl::checked::union_set & uset2)11948 boolean point::is_disjoint(const isl::checked::union_set &uset2) const
11949 {
11950   return isl::checked::basic_set(*this).is_disjoint(uset2);
11951 }
11952 
is_empty()11953 boolean point::is_empty() const
11954 {
11955   return isl::checked::basic_set(*this).is_empty();
11956 }
11957 
is_equal(const isl::checked::basic_set & bset2)11958 boolean point::is_equal(const isl::checked::basic_set &bset2) const
11959 {
11960   return isl::checked::basic_set(*this).is_equal(bset2);
11961 }
11962 
is_equal(const isl::checked::set & set2)11963 boolean point::is_equal(const isl::checked::set &set2) const
11964 {
11965   return isl::checked::basic_set(*this).is_equal(set2);
11966 }
11967 
is_equal(const isl::checked::union_set & uset2)11968 boolean point::is_equal(const isl::checked::union_set &uset2) const
11969 {
11970   return isl::checked::basic_set(*this).is_equal(uset2);
11971 }
11972 
is_singleton()11973 boolean point::is_singleton() const
11974 {
11975   return isl::checked::basic_set(*this).is_singleton();
11976 }
11977 
is_strict_subset(const isl::checked::set & set2)11978 boolean point::is_strict_subset(const isl::checked::set &set2) const
11979 {
11980   return isl::checked::basic_set(*this).is_strict_subset(set2);
11981 }
11982 
is_strict_subset(const isl::checked::union_set & uset2)11983 boolean point::is_strict_subset(const isl::checked::union_set &uset2) const
11984 {
11985   return isl::checked::basic_set(*this).is_strict_subset(uset2);
11986 }
11987 
is_subset(const isl::checked::basic_set & bset2)11988 boolean point::is_subset(const isl::checked::basic_set &bset2) const
11989 {
11990   return isl::checked::basic_set(*this).is_subset(bset2);
11991 }
11992 
is_subset(const isl::checked::set & set2)11993 boolean point::is_subset(const isl::checked::set &set2) const
11994 {
11995   return isl::checked::basic_set(*this).is_subset(set2);
11996 }
11997 
is_subset(const isl::checked::union_set & uset2)11998 boolean point::is_subset(const isl::checked::union_set &uset2) const
11999 {
12000   return isl::checked::basic_set(*this).is_subset(uset2);
12001 }
12002 
is_wrapping()12003 boolean point::is_wrapping() const
12004 {
12005   return isl::checked::basic_set(*this).is_wrapping();
12006 }
12007 
isa_set()12008 boolean point::isa_set() const
12009 {
12010   return isl::checked::basic_set(*this).isa_set();
12011 }
12012 
lexmax()12013 isl::checked::set point::lexmax() const
12014 {
12015   return isl::checked::basic_set(*this).lexmax();
12016 }
12017 
lexmax_pw_multi_aff()12018 isl::checked::pw_multi_aff point::lexmax_pw_multi_aff() const
12019 {
12020   return isl::checked::basic_set(*this).lexmax_pw_multi_aff();
12021 }
12022 
lexmin()12023 isl::checked::set point::lexmin() const
12024 {
12025   return isl::checked::basic_set(*this).lexmin();
12026 }
12027 
lexmin_pw_multi_aff()12028 isl::checked::pw_multi_aff point::lexmin_pw_multi_aff() const
12029 {
12030   return isl::checked::basic_set(*this).lexmin_pw_multi_aff();
12031 }
12032 
lower_bound(const isl::checked::multi_pw_aff & lower)12033 isl::checked::set point::lower_bound(const isl::checked::multi_pw_aff &lower) const
12034 {
12035   return isl::checked::basic_set(*this).lower_bound(lower);
12036 }
12037 
lower_bound(const isl::checked::multi_val & lower)12038 isl::checked::set point::lower_bound(const isl::checked::multi_val &lower) const
12039 {
12040   return isl::checked::basic_set(*this).lower_bound(lower);
12041 }
12042 
max_multi_pw_aff()12043 isl::checked::multi_pw_aff point::max_multi_pw_aff() const
12044 {
12045   return isl::checked::basic_set(*this).max_multi_pw_aff();
12046 }
12047 
max_val(const isl::checked::aff & obj)12048 isl::checked::val point::max_val(const isl::checked::aff &obj) const
12049 {
12050   return isl::checked::basic_set(*this).max_val(obj);
12051 }
12052 
min_multi_pw_aff()12053 isl::checked::multi_pw_aff point::min_multi_pw_aff() const
12054 {
12055   return isl::checked::basic_set(*this).min_multi_pw_aff();
12056 }
12057 
min_val(const isl::checked::aff & obj)12058 isl::checked::val point::min_val(const isl::checked::aff &obj) const
12059 {
12060   return isl::checked::basic_set(*this).min_val(obj);
12061 }
12062 
multi_val()12063 isl::checked::multi_val point::multi_val() const
12064 {
12065   auto res = isl_point_get_multi_val(get());
12066   return manage(res);
12067 }
12068 
get_multi_val()12069 isl::checked::multi_val point::get_multi_val() const
12070 {
12071   return multi_val();
12072 }
12073 
params()12074 isl::checked::basic_set point::params() const
12075 {
12076   return isl::checked::basic_set(*this).params();
12077 }
12078 
plain_multi_val_if_fixed()12079 isl::checked::multi_val point::plain_multi_val_if_fixed() const
12080 {
12081   return isl::checked::basic_set(*this).plain_multi_val_if_fixed();
12082 }
12083 
polyhedral_hull()12084 isl::checked::basic_set point::polyhedral_hull() const
12085 {
12086   return isl::checked::basic_set(*this).polyhedral_hull();
12087 }
12088 
preimage(const isl::checked::multi_aff & ma)12089 isl::checked::set point::preimage(const isl::checked::multi_aff &ma) const
12090 {
12091   return isl::checked::basic_set(*this).preimage(ma);
12092 }
12093 
preimage(const isl::checked::multi_pw_aff & mpa)12094 isl::checked::set point::preimage(const isl::checked::multi_pw_aff &mpa) const
12095 {
12096   return isl::checked::basic_set(*this).preimage(mpa);
12097 }
12098 
preimage(const isl::checked::pw_multi_aff & pma)12099 isl::checked::set point::preimage(const isl::checked::pw_multi_aff &pma) const
12100 {
12101   return isl::checked::basic_set(*this).preimage(pma);
12102 }
12103 
preimage(const isl::checked::union_pw_multi_aff & upma)12104 isl::checked::union_set point::preimage(const isl::checked::union_pw_multi_aff &upma) const
12105 {
12106   return isl::checked::basic_set(*this).preimage(upma);
12107 }
12108 
product(const isl::checked::set & set2)12109 isl::checked::set point::product(const isl::checked::set &set2) const
12110 {
12111   return isl::checked::basic_set(*this).product(set2);
12112 }
12113 
project_out_all_params()12114 isl::checked::set point::project_out_all_params() const
12115 {
12116   return isl::checked::basic_set(*this).project_out_all_params();
12117 }
12118 
project_out_param(const isl::checked::id & id)12119 isl::checked::set point::project_out_param(const isl::checked::id &id) const
12120 {
12121   return isl::checked::basic_set(*this).project_out_param(id);
12122 }
12123 
project_out_param(const std::string & id)12124 isl::checked::set point::project_out_param(const std::string &id) const
12125 {
12126   return this->project_out_param(isl::checked::id(ctx(), id));
12127 }
12128 
project_out_param(const isl::checked::id_list & list)12129 isl::checked::set point::project_out_param(const isl::checked::id_list &list) const
12130 {
12131   return isl::checked::basic_set(*this).project_out_param(list);
12132 }
12133 
pw_multi_aff_on_domain(const isl::checked::multi_val & mv)12134 isl::checked::pw_multi_aff point::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
12135 {
12136   return isl::checked::basic_set(*this).pw_multi_aff_on_domain(mv);
12137 }
12138 
sample()12139 isl::checked::basic_set point::sample() const
12140 {
12141   return isl::checked::basic_set(*this).sample();
12142 }
12143 
sample_point()12144 isl::checked::point point::sample_point() const
12145 {
12146   return isl::checked::basic_set(*this).sample_point();
12147 }
12148 
simple_fixed_box_hull()12149 isl::checked::fixed_box point::simple_fixed_box_hull() const
12150 {
12151   return isl::checked::basic_set(*this).simple_fixed_box_hull();
12152 }
12153 
space()12154 isl::checked::space point::space() const
12155 {
12156   return isl::checked::basic_set(*this).space();
12157 }
12158 
stride(int pos)12159 isl::checked::val point::stride(int pos) const
12160 {
12161   return isl::checked::basic_set(*this).stride(pos);
12162 }
12163 
subtract(const isl::checked::set & set2)12164 isl::checked::set point::subtract(const isl::checked::set &set2) const
12165 {
12166   return isl::checked::basic_set(*this).subtract(set2);
12167 }
12168 
subtract(const isl::checked::union_set & uset2)12169 isl::checked::union_set point::subtract(const isl::checked::union_set &uset2) const
12170 {
12171   return isl::checked::basic_set(*this).subtract(uset2);
12172 }
12173 
to_list()12174 isl::checked::union_set_list point::to_list() const
12175 {
12176   return isl::checked::basic_set(*this).to_list();
12177 }
12178 
to_set()12179 isl::checked::set point::to_set() const
12180 {
12181   auto res = isl_point_to_set(copy());
12182   return manage(res);
12183 }
12184 
to_union_set()12185 isl::checked::union_set point::to_union_set() const
12186 {
12187   return isl::checked::basic_set(*this).to_union_set();
12188 }
12189 
translation()12190 isl::checked::map point::translation() const
12191 {
12192   return isl::checked::basic_set(*this).translation();
12193 }
12194 
unbind_params(const isl::checked::multi_id & tuple)12195 isl::checked::set point::unbind_params(const isl::checked::multi_id &tuple) const
12196 {
12197   return isl::checked::basic_set(*this).unbind_params(tuple);
12198 }
12199 
unbind_params_insert_domain(const isl::checked::multi_id & domain)12200 isl::checked::map point::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
12201 {
12202   return isl::checked::basic_set(*this).unbind_params_insert_domain(domain);
12203 }
12204 
unite(const isl::checked::basic_set & bset2)12205 isl::checked::set point::unite(const isl::checked::basic_set &bset2) const
12206 {
12207   return isl::checked::basic_set(*this).unite(bset2);
12208 }
12209 
unite(const isl::checked::set & set2)12210 isl::checked::set point::unite(const isl::checked::set &set2) const
12211 {
12212   return isl::checked::basic_set(*this).unite(set2);
12213 }
12214 
unite(const isl::checked::union_set & uset2)12215 isl::checked::union_set point::unite(const isl::checked::union_set &uset2) const
12216 {
12217   return isl::checked::basic_set(*this).unite(uset2);
12218 }
12219 
unshifted_simple_hull()12220 isl::checked::basic_set point::unshifted_simple_hull() const
12221 {
12222   return isl::checked::basic_set(*this).unshifted_simple_hull();
12223 }
12224 
unwrap()12225 isl::checked::map point::unwrap() const
12226 {
12227   return isl::checked::basic_set(*this).unwrap();
12228 }
12229 
upper_bound(const isl::checked::multi_pw_aff & upper)12230 isl::checked::set point::upper_bound(const isl::checked::multi_pw_aff &upper) const
12231 {
12232   return isl::checked::basic_set(*this).upper_bound(upper);
12233 }
12234 
upper_bound(const isl::checked::multi_val & upper)12235 isl::checked::set point::upper_bound(const isl::checked::multi_val &upper) const
12236 {
12237   return isl::checked::basic_set(*this).upper_bound(upper);
12238 }
12239 
12240 inline std::ostream &operator<<(std::ostream &os, const point &obj)
12241 {
12242   char *str = isl_point_to_str(obj.get());
12243   if (!str) {
12244     os.setstate(std::ios_base::badbit);
12245     return os;
12246   }
12247   os << str;
12248   free(str);
12249   return os;
12250 }
12251 
12252 // implementations for isl::pw_aff
manage(__isl_take isl_pw_aff * ptr)12253 pw_aff manage(__isl_take isl_pw_aff *ptr) {
12254   return pw_aff(ptr);
12255 }
manage_copy(__isl_keep isl_pw_aff * ptr)12256 pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
12257   ptr = isl_pw_aff_copy(ptr);
12258   return pw_aff(ptr);
12259 }
12260 
pw_aff()12261 pw_aff::pw_aff()
12262     : ptr(nullptr) {}
12263 
pw_aff(const pw_aff & obj)12264 pw_aff::pw_aff(const pw_aff &obj)
12265     : ptr(nullptr)
12266 {
12267   ptr = obj.copy();
12268 }
12269 
pw_aff(__isl_take isl_pw_aff * ptr)12270 pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
12271     : ptr(ptr) {}
12272 
pw_aff(isl::checked::aff aff)12273 pw_aff::pw_aff(isl::checked::aff aff)
12274 {
12275   auto res = isl_pw_aff_from_aff(aff.release());
12276   ptr = res;
12277 }
12278 
pw_aff(isl::checked::ctx ctx,const std::string & str)12279 pw_aff::pw_aff(isl::checked::ctx ctx, const std::string &str)
12280 {
12281   auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
12282   ptr = res;
12283 }
12284 
12285 pw_aff &pw_aff::operator=(pw_aff obj) {
12286   std::swap(this->ptr, obj.ptr);
12287   return *this;
12288 }
12289 
~pw_aff()12290 pw_aff::~pw_aff() {
12291   if (ptr)
12292     isl_pw_aff_free(ptr);
12293 }
12294 
copy()12295 __isl_give isl_pw_aff *pw_aff::copy() const & {
12296   return isl_pw_aff_copy(ptr);
12297 }
12298 
get()12299 __isl_keep isl_pw_aff *pw_aff::get() const {
12300   return ptr;
12301 }
12302 
release()12303 __isl_give isl_pw_aff *pw_aff::release() {
12304   isl_pw_aff *tmp = ptr;
12305   ptr = nullptr;
12306   return tmp;
12307 }
12308 
is_null()12309 bool pw_aff::is_null() const {
12310   return ptr == nullptr;
12311 }
12312 
ctx()12313 isl::checked::ctx pw_aff::ctx() const {
12314   return isl::checked::ctx(isl_pw_aff_get_ctx(ptr));
12315 }
12316 
add(const isl::checked::multi_pw_aff & multi2)12317 isl::checked::multi_pw_aff pw_aff::add(const isl::checked::multi_pw_aff &multi2) const
12318 {
12319   return isl::checked::pw_multi_aff(*this).add(multi2);
12320 }
12321 
add(const isl::checked::multi_union_pw_aff & multi2)12322 isl::checked::multi_union_pw_aff pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
12323 {
12324   return isl::checked::union_pw_aff(*this).add(multi2);
12325 }
12326 
add(isl::checked::pw_aff pwaff2)12327 isl::checked::pw_aff pw_aff::add(isl::checked::pw_aff pwaff2) const
12328 {
12329   auto res = isl_pw_aff_add(copy(), pwaff2.release());
12330   return manage(res);
12331 }
12332 
add(const isl::checked::pw_multi_aff & pma2)12333 isl::checked::pw_multi_aff pw_aff::add(const isl::checked::pw_multi_aff &pma2) const
12334 {
12335   return isl::checked::pw_multi_aff(*this).add(pma2);
12336 }
12337 
add(const isl::checked::union_pw_aff & upa2)12338 isl::checked::union_pw_aff pw_aff::add(const isl::checked::union_pw_aff &upa2) const
12339 {
12340   return isl::checked::union_pw_aff(*this).add(upa2);
12341 }
12342 
add(const isl::checked::union_pw_multi_aff & upma2)12343 isl::checked::union_pw_multi_aff pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
12344 {
12345   return isl::checked::union_pw_aff(*this).add(upma2);
12346 }
12347 
add(const isl::checked::aff & pwaff2)12348 isl::checked::pw_aff pw_aff::add(const isl::checked::aff &pwaff2) const
12349 {
12350   return this->add(isl::checked::pw_aff(pwaff2));
12351 }
12352 
add_constant(isl::checked::val v)12353 isl::checked::pw_aff pw_aff::add_constant(isl::checked::val v) const
12354 {
12355   auto res = isl_pw_aff_add_constant_val(copy(), v.release());
12356   return manage(res);
12357 }
12358 
add_constant(long v)12359 isl::checked::pw_aff pw_aff::add_constant(long v) const
12360 {
12361   return this->add_constant(isl::checked::val(ctx(), v));
12362 }
12363 
add_constant(const isl::checked::multi_val & mv)12364 isl::checked::pw_multi_aff pw_aff::add_constant(const isl::checked::multi_val &mv) const
12365 {
12366   return isl::checked::pw_multi_aff(*this).add_constant(mv);
12367 }
12368 
apply(const isl::checked::union_pw_multi_aff & upma2)12369 isl::checked::union_pw_multi_aff pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
12370 {
12371   return isl::checked::union_pw_aff(*this).apply(upma2);
12372 }
12373 
as_aff()12374 isl::checked::aff pw_aff::as_aff() const
12375 {
12376   auto res = isl_pw_aff_as_aff(copy());
12377   return manage(res);
12378 }
12379 
as_map()12380 isl::checked::map pw_aff::as_map() const
12381 {
12382   auto res = isl_pw_aff_as_map(copy());
12383   return manage(res);
12384 }
12385 
as_multi_aff()12386 isl::checked::multi_aff pw_aff::as_multi_aff() const
12387 {
12388   return isl::checked::pw_multi_aff(*this).as_multi_aff();
12389 }
12390 
as_multi_union_pw_aff()12391 isl::checked::multi_union_pw_aff pw_aff::as_multi_union_pw_aff() const
12392 {
12393   return isl::checked::union_pw_aff(*this).as_multi_union_pw_aff();
12394 }
12395 
as_pw_multi_aff()12396 isl::checked::pw_multi_aff pw_aff::as_pw_multi_aff() const
12397 {
12398   return isl::checked::union_pw_aff(*this).as_pw_multi_aff();
12399 }
12400 
as_set()12401 isl::checked::set pw_aff::as_set() const
12402 {
12403   return isl::checked::pw_multi_aff(*this).as_set();
12404 }
12405 
as_union_map()12406 isl::checked::union_map pw_aff::as_union_map() const
12407 {
12408   return isl::checked::union_pw_aff(*this).as_union_map();
12409 }
12410 
at(int pos)12411 isl::checked::pw_aff pw_aff::at(int pos) const
12412 {
12413   return isl::checked::pw_multi_aff(*this).at(pos);
12414 }
12415 
bind(const isl::checked::multi_id & tuple)12416 isl::checked::set pw_aff::bind(const isl::checked::multi_id &tuple) const
12417 {
12418   return isl::checked::multi_pw_aff(*this).bind(tuple);
12419 }
12420 
bind(isl::checked::id id)12421 isl::checked::set pw_aff::bind(isl::checked::id id) const
12422 {
12423   auto res = isl_pw_aff_bind_id(copy(), id.release());
12424   return manage(res);
12425 }
12426 
bind(const std::string & id)12427 isl::checked::set pw_aff::bind(const std::string &id) const
12428 {
12429   return this->bind(isl::checked::id(ctx(), id));
12430 }
12431 
bind_domain(isl::checked::multi_id tuple)12432 isl::checked::pw_aff pw_aff::bind_domain(isl::checked::multi_id tuple) const
12433 {
12434   auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
12435   return manage(res);
12436 }
12437 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)12438 isl::checked::pw_aff pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
12439 {
12440   auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
12441   return manage(res);
12442 }
12443 
ceil()12444 isl::checked::pw_aff pw_aff::ceil() const
12445 {
12446   auto res = isl_pw_aff_ceil(copy());
12447   return manage(res);
12448 }
12449 
coalesce()12450 isl::checked::pw_aff pw_aff::coalesce() const
12451 {
12452   auto res = isl_pw_aff_coalesce(copy());
12453   return manage(res);
12454 }
12455 
cond(isl::checked::pw_aff pwaff_true,isl::checked::pw_aff pwaff_false)12456 isl::checked::pw_aff pw_aff::cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const
12457 {
12458   auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
12459   return manage(res);
12460 }
12461 
div(isl::checked::pw_aff pa2)12462 isl::checked::pw_aff pw_aff::div(isl::checked::pw_aff pa2) const
12463 {
12464   auto res = isl_pw_aff_div(copy(), pa2.release());
12465   return manage(res);
12466 }
12467 
domain()12468 isl::checked::set pw_aff::domain() const
12469 {
12470   auto res = isl_pw_aff_domain(copy());
12471   return manage(res);
12472 }
12473 
eq_set(isl::checked::pw_aff pwaff2)12474 isl::checked::set pw_aff::eq_set(isl::checked::pw_aff pwaff2) const
12475 {
12476   auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
12477   return manage(res);
12478 }
12479 
eval(isl::checked::point pnt)12480 isl::checked::val pw_aff::eval(isl::checked::point pnt) const
12481 {
12482   auto res = isl_pw_aff_eval(copy(), pnt.release());
12483   return manage(res);
12484 }
12485 
extract_pw_multi_aff(const isl::checked::space & space)12486 isl::checked::pw_multi_aff pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
12487 {
12488   return isl::checked::union_pw_aff(*this).extract_pw_multi_aff(space);
12489 }
12490 
flat_range_product(const isl::checked::multi_pw_aff & multi2)12491 isl::checked::multi_pw_aff pw_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
12492 {
12493   return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
12494 }
12495 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)12496 isl::checked::multi_union_pw_aff pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
12497 {
12498   return isl::checked::union_pw_aff(*this).flat_range_product(multi2);
12499 }
12500 
flat_range_product(const isl::checked::pw_multi_aff & pma2)12501 isl::checked::pw_multi_aff pw_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
12502 {
12503   return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
12504 }
12505 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)12506 isl::checked::union_pw_multi_aff pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
12507 {
12508   return isl::checked::union_pw_aff(*this).flat_range_product(upma2);
12509 }
12510 
floor()12511 isl::checked::pw_aff pw_aff::floor() const
12512 {
12513   auto res = isl_pw_aff_floor(copy());
12514   return manage(res);
12515 }
12516 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)12517 stat pw_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
12518 {
12519   return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
12520 }
12521 
ge_set(isl::checked::pw_aff pwaff2)12522 isl::checked::set pw_aff::ge_set(isl::checked::pw_aff pwaff2) const
12523 {
12524   auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
12525   return manage(res);
12526 }
12527 
gist(isl::checked::set context)12528 isl::checked::pw_aff pw_aff::gist(isl::checked::set context) const
12529 {
12530   auto res = isl_pw_aff_gist(copy(), context.release());
12531   return manage(res);
12532 }
12533 
gist(const isl::checked::union_set & context)12534 isl::checked::union_pw_aff pw_aff::gist(const isl::checked::union_set &context) const
12535 {
12536   return isl::checked::union_pw_aff(*this).gist(context);
12537 }
12538 
gist(const isl::checked::basic_set & context)12539 isl::checked::pw_aff pw_aff::gist(const isl::checked::basic_set &context) const
12540 {
12541   return this->gist(isl::checked::set(context));
12542 }
12543 
gist(const isl::checked::point & context)12544 isl::checked::pw_aff pw_aff::gist(const isl::checked::point &context) const
12545 {
12546   return this->gist(isl::checked::set(context));
12547 }
12548 
gt_set(isl::checked::pw_aff pwaff2)12549 isl::checked::set pw_aff::gt_set(isl::checked::pw_aff pwaff2) const
12550 {
12551   auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
12552   return manage(res);
12553 }
12554 
has_range_tuple_id()12555 boolean pw_aff::has_range_tuple_id() const
12556 {
12557   return isl::checked::pw_multi_aff(*this).has_range_tuple_id();
12558 }
12559 
identity()12560 isl::checked::multi_pw_aff pw_aff::identity() const
12561 {
12562   return isl::checked::pw_multi_aff(*this).identity();
12563 }
12564 
insert_domain(isl::checked::space domain)12565 isl::checked::pw_aff pw_aff::insert_domain(isl::checked::space domain) const
12566 {
12567   auto res = isl_pw_aff_insert_domain(copy(), domain.release());
12568   return manage(res);
12569 }
12570 
intersect_domain(isl::checked::set set)12571 isl::checked::pw_aff pw_aff::intersect_domain(isl::checked::set set) const
12572 {
12573   auto res = isl_pw_aff_intersect_domain(copy(), set.release());
12574   return manage(res);
12575 }
12576 
intersect_domain(const isl::checked::space & space)12577 isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::space &space) const
12578 {
12579   return isl::checked::union_pw_aff(*this).intersect_domain(space);
12580 }
12581 
intersect_domain(const isl::checked::union_set & uset)12582 isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::union_set &uset) const
12583 {
12584   return isl::checked::union_pw_aff(*this).intersect_domain(uset);
12585 }
12586 
intersect_domain(const isl::checked::basic_set & set)12587 isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::basic_set &set) const
12588 {
12589   return this->intersect_domain(isl::checked::set(set));
12590 }
12591 
intersect_domain(const isl::checked::point & set)12592 isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::point &set) const
12593 {
12594   return this->intersect_domain(isl::checked::set(set));
12595 }
12596 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)12597 isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
12598 {
12599   return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_domain(uset);
12600 }
12601 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)12602 isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
12603 {
12604   return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_range(uset);
12605 }
12606 
intersect_params(isl::checked::set set)12607 isl::checked::pw_aff pw_aff::intersect_params(isl::checked::set set) const
12608 {
12609   auto res = isl_pw_aff_intersect_params(copy(), set.release());
12610   return manage(res);
12611 }
12612 
involves_locals()12613 boolean pw_aff::involves_locals() const
12614 {
12615   return isl::checked::pw_multi_aff(*this).involves_locals();
12616 }
12617 
involves_nan()12618 boolean pw_aff::involves_nan() const
12619 {
12620   return isl::checked::multi_pw_aff(*this).involves_nan();
12621 }
12622 
involves_param(const isl::checked::id & id)12623 boolean pw_aff::involves_param(const isl::checked::id &id) const
12624 {
12625   return isl::checked::pw_multi_aff(*this).involves_param(id);
12626 }
12627 
involves_param(const std::string & id)12628 boolean pw_aff::involves_param(const std::string &id) const
12629 {
12630   return this->involves_param(isl::checked::id(ctx(), id));
12631 }
12632 
involves_param(const isl::checked::id_list & list)12633 boolean pw_aff::involves_param(const isl::checked::id_list &list) const
12634 {
12635   return isl::checked::pw_multi_aff(*this).involves_param(list);
12636 }
12637 
isa_aff()12638 boolean pw_aff::isa_aff() const
12639 {
12640   auto res = isl_pw_aff_isa_aff(get());
12641   return manage(res);
12642 }
12643 
isa_multi_aff()12644 boolean pw_aff::isa_multi_aff() const
12645 {
12646   return isl::checked::pw_multi_aff(*this).isa_multi_aff();
12647 }
12648 
isa_pw_multi_aff()12649 boolean pw_aff::isa_pw_multi_aff() const
12650 {
12651   return isl::checked::union_pw_aff(*this).isa_pw_multi_aff();
12652 }
12653 
le_set(isl::checked::pw_aff pwaff2)12654 isl::checked::set pw_aff::le_set(isl::checked::pw_aff pwaff2) const
12655 {
12656   auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
12657   return manage(res);
12658 }
12659 
list()12660 isl::checked::pw_aff_list pw_aff::list() const
12661 {
12662   return isl::checked::multi_pw_aff(*this).list();
12663 }
12664 
lt_set(isl::checked::pw_aff pwaff2)12665 isl::checked::set pw_aff::lt_set(isl::checked::pw_aff pwaff2) const
12666 {
12667   auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
12668   return manage(res);
12669 }
12670 
max(const isl::checked::multi_pw_aff & multi2)12671 isl::checked::multi_pw_aff pw_aff::max(const isl::checked::multi_pw_aff &multi2) const
12672 {
12673   return isl::checked::pw_multi_aff(*this).max(multi2);
12674 }
12675 
max(isl::checked::pw_aff pwaff2)12676 isl::checked::pw_aff pw_aff::max(isl::checked::pw_aff pwaff2) const
12677 {
12678   auto res = isl_pw_aff_max(copy(), pwaff2.release());
12679   return manage(res);
12680 }
12681 
max(const isl::checked::aff & pwaff2)12682 isl::checked::pw_aff pw_aff::max(const isl::checked::aff &pwaff2) const
12683 {
12684   return this->max(isl::checked::pw_aff(pwaff2));
12685 }
12686 
max_multi_val()12687 isl::checked::multi_val pw_aff::max_multi_val() const
12688 {
12689   return isl::checked::pw_multi_aff(*this).max_multi_val();
12690 }
12691 
min(const isl::checked::multi_pw_aff & multi2)12692 isl::checked::multi_pw_aff pw_aff::min(const isl::checked::multi_pw_aff &multi2) const
12693 {
12694   return isl::checked::pw_multi_aff(*this).min(multi2);
12695 }
12696 
min(isl::checked::pw_aff pwaff2)12697 isl::checked::pw_aff pw_aff::min(isl::checked::pw_aff pwaff2) const
12698 {
12699   auto res = isl_pw_aff_min(copy(), pwaff2.release());
12700   return manage(res);
12701 }
12702 
min(const isl::checked::aff & pwaff2)12703 isl::checked::pw_aff pw_aff::min(const isl::checked::aff &pwaff2) const
12704 {
12705   return this->min(isl::checked::pw_aff(pwaff2));
12706 }
12707 
min_multi_val()12708 isl::checked::multi_val pw_aff::min_multi_val() const
12709 {
12710   return isl::checked::pw_multi_aff(*this).min_multi_val();
12711 }
12712 
mod(isl::checked::val mod)12713 isl::checked::pw_aff pw_aff::mod(isl::checked::val mod) const
12714 {
12715   auto res = isl_pw_aff_mod_val(copy(), mod.release());
12716   return manage(res);
12717 }
12718 
mod(long mod)12719 isl::checked::pw_aff pw_aff::mod(long mod) const
12720 {
12721   return this->mod(isl::checked::val(ctx(), mod));
12722 }
12723 
mul(isl::checked::pw_aff pwaff2)12724 isl::checked::pw_aff pw_aff::mul(isl::checked::pw_aff pwaff2) const
12725 {
12726   auto res = isl_pw_aff_mul(copy(), pwaff2.release());
12727   return manage(res);
12728 }
12729 
n_piece()12730 class size pw_aff::n_piece() const
12731 {
12732   return isl::checked::pw_multi_aff(*this).n_piece();
12733 }
12734 
ne_set(isl::checked::pw_aff pwaff2)12735 isl::checked::set pw_aff::ne_set(isl::checked::pw_aff pwaff2) const
12736 {
12737   auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
12738   return manage(res);
12739 }
12740 
neg()12741 isl::checked::pw_aff pw_aff::neg() const
12742 {
12743   auto res = isl_pw_aff_neg(copy());
12744   return manage(res);
12745 }
12746 
param_on_domain(isl::checked::set domain,isl::checked::id id)12747 isl::checked::pw_aff pw_aff::param_on_domain(isl::checked::set domain, isl::checked::id id)
12748 {
12749   auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
12750   return manage(res);
12751 }
12752 
plain_is_empty()12753 boolean pw_aff::plain_is_empty() const
12754 {
12755   return isl::checked::union_pw_aff(*this).plain_is_empty();
12756 }
12757 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)12758 boolean pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
12759 {
12760   return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
12761 }
12762 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)12763 boolean pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
12764 {
12765   return isl::checked::union_pw_aff(*this).plain_is_equal(multi2);
12766 }
12767 
preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff & pma2)12768 isl::checked::pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
12769 {
12770   return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
12771 }
12772 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)12773 isl::checked::union_pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
12774 {
12775   return isl::checked::union_pw_aff(*this).preimage_domain_wrapped_domain(upma2);
12776 }
12777 
product(const isl::checked::multi_pw_aff & multi2)12778 isl::checked::multi_pw_aff pw_aff::product(const isl::checked::multi_pw_aff &multi2) const
12779 {
12780   return isl::checked::pw_multi_aff(*this).product(multi2);
12781 }
12782 
product(const isl::checked::pw_multi_aff & pma2)12783 isl::checked::pw_multi_aff pw_aff::product(const isl::checked::pw_multi_aff &pma2) const
12784 {
12785   return isl::checked::pw_multi_aff(*this).product(pma2);
12786 }
12787 
pullback(isl::checked::multi_aff ma)12788 isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_aff ma) const
12789 {
12790   auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
12791   return manage(res);
12792 }
12793 
pullback(isl::checked::multi_pw_aff mpa)12794 isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_pw_aff mpa) const
12795 {
12796   auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
12797   return manage(res);
12798 }
12799 
pullback(isl::checked::pw_multi_aff pma)12800 isl::checked::pw_aff pw_aff::pullback(isl::checked::pw_multi_aff pma) const
12801 {
12802   auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
12803   return manage(res);
12804 }
12805 
pullback(const isl::checked::union_pw_multi_aff & upma)12806 isl::checked::union_pw_aff pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
12807 {
12808   return isl::checked::union_pw_aff(*this).pullback(upma);
12809 }
12810 
range_factor_domain()12811 isl::checked::pw_multi_aff pw_aff::range_factor_domain() const
12812 {
12813   return isl::checked::pw_multi_aff(*this).range_factor_domain();
12814 }
12815 
range_factor_range()12816 isl::checked::pw_multi_aff pw_aff::range_factor_range() const
12817 {
12818   return isl::checked::pw_multi_aff(*this).range_factor_range();
12819 }
12820 
range_product(const isl::checked::multi_pw_aff & multi2)12821 isl::checked::multi_pw_aff pw_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
12822 {
12823   return isl::checked::pw_multi_aff(*this).range_product(multi2);
12824 }
12825 
range_product(const isl::checked::multi_union_pw_aff & multi2)12826 isl::checked::multi_union_pw_aff pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
12827 {
12828   return isl::checked::union_pw_aff(*this).range_product(multi2);
12829 }
12830 
range_product(const isl::checked::pw_multi_aff & pma2)12831 isl::checked::pw_multi_aff pw_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
12832 {
12833   return isl::checked::pw_multi_aff(*this).range_product(pma2);
12834 }
12835 
range_product(const isl::checked::union_pw_multi_aff & upma2)12836 isl::checked::union_pw_multi_aff pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
12837 {
12838   return isl::checked::union_pw_aff(*this).range_product(upma2);
12839 }
12840 
range_tuple_id()12841 isl::checked::id pw_aff::range_tuple_id() const
12842 {
12843   return isl::checked::pw_multi_aff(*this).range_tuple_id();
12844 }
12845 
reset_range_tuple_id()12846 isl::checked::multi_pw_aff pw_aff::reset_range_tuple_id() const
12847 {
12848   return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
12849 }
12850 
scale(const isl::checked::multi_val & mv)12851 isl::checked::multi_pw_aff pw_aff::scale(const isl::checked::multi_val &mv) const
12852 {
12853   return isl::checked::multi_pw_aff(*this).scale(mv);
12854 }
12855 
scale(isl::checked::val v)12856 isl::checked::pw_aff pw_aff::scale(isl::checked::val v) const
12857 {
12858   auto res = isl_pw_aff_scale_val(copy(), v.release());
12859   return manage(res);
12860 }
12861 
scale(long v)12862 isl::checked::pw_aff pw_aff::scale(long v) const
12863 {
12864   return this->scale(isl::checked::val(ctx(), v));
12865 }
12866 
scale_down(const isl::checked::multi_val & mv)12867 isl::checked::multi_pw_aff pw_aff::scale_down(const isl::checked::multi_val &mv) const
12868 {
12869   return isl::checked::multi_pw_aff(*this).scale_down(mv);
12870 }
12871 
scale_down(isl::checked::val f)12872 isl::checked::pw_aff pw_aff::scale_down(isl::checked::val f) const
12873 {
12874   auto res = isl_pw_aff_scale_down_val(copy(), f.release());
12875   return manage(res);
12876 }
12877 
scale_down(long f)12878 isl::checked::pw_aff pw_aff::scale_down(long f) const
12879 {
12880   return this->scale_down(isl::checked::val(ctx(), f));
12881 }
12882 
set_at(int pos,const isl::checked::pw_aff & el)12883 isl::checked::multi_pw_aff pw_aff::set_at(int pos, const isl::checked::pw_aff &el) const
12884 {
12885   return isl::checked::pw_multi_aff(*this).set_at(pos, el);
12886 }
12887 
set_at(int pos,const isl::checked::union_pw_aff & el)12888 isl::checked::multi_union_pw_aff pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
12889 {
12890   return isl::checked::union_pw_aff(*this).set_at(pos, el);
12891 }
12892 
set_range_tuple(const isl::checked::id & id)12893 isl::checked::pw_multi_aff pw_aff::set_range_tuple(const isl::checked::id &id) const
12894 {
12895   return isl::checked::pw_multi_aff(*this).set_range_tuple(id);
12896 }
12897 
set_range_tuple(const std::string & id)12898 isl::checked::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
12899 {
12900   return this->set_range_tuple(isl::checked::id(ctx(), id));
12901 }
12902 
size()12903 class size pw_aff::size() const
12904 {
12905   return isl::checked::multi_pw_aff(*this).size();
12906 }
12907 
space()12908 isl::checked::space pw_aff::space() const
12909 {
12910   return isl::checked::union_pw_aff(*this).space();
12911 }
12912 
sub(const isl::checked::multi_pw_aff & multi2)12913 isl::checked::multi_pw_aff pw_aff::sub(const isl::checked::multi_pw_aff &multi2) const
12914 {
12915   return isl::checked::pw_multi_aff(*this).sub(multi2);
12916 }
12917 
sub(const isl::checked::multi_union_pw_aff & multi2)12918 isl::checked::multi_union_pw_aff pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
12919 {
12920   return isl::checked::union_pw_aff(*this).sub(multi2);
12921 }
12922 
sub(isl::checked::pw_aff pwaff2)12923 isl::checked::pw_aff pw_aff::sub(isl::checked::pw_aff pwaff2) const
12924 {
12925   auto res = isl_pw_aff_sub(copy(), pwaff2.release());
12926   return manage(res);
12927 }
12928 
sub(const isl::checked::pw_multi_aff & pma2)12929 isl::checked::pw_multi_aff pw_aff::sub(const isl::checked::pw_multi_aff &pma2) const
12930 {
12931   return isl::checked::pw_multi_aff(*this).sub(pma2);
12932 }
12933 
sub(const isl::checked::union_pw_aff & upa2)12934 isl::checked::union_pw_aff pw_aff::sub(const isl::checked::union_pw_aff &upa2) const
12935 {
12936   return isl::checked::union_pw_aff(*this).sub(upa2);
12937 }
12938 
sub(const isl::checked::union_pw_multi_aff & upma2)12939 isl::checked::union_pw_multi_aff pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
12940 {
12941   return isl::checked::union_pw_aff(*this).sub(upma2);
12942 }
12943 
sub(const isl::checked::aff & pwaff2)12944 isl::checked::pw_aff pw_aff::sub(const isl::checked::aff &pwaff2) const
12945 {
12946   return this->sub(isl::checked::pw_aff(pwaff2));
12947 }
12948 
subtract_domain(isl::checked::set set)12949 isl::checked::pw_aff pw_aff::subtract_domain(isl::checked::set set) const
12950 {
12951   auto res = isl_pw_aff_subtract_domain(copy(), set.release());
12952   return manage(res);
12953 }
12954 
subtract_domain(const isl::checked::space & space)12955 isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::space &space) const
12956 {
12957   return isl::checked::union_pw_aff(*this).subtract_domain(space);
12958 }
12959 
subtract_domain(const isl::checked::union_set & uset)12960 isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::union_set &uset) const
12961 {
12962   return isl::checked::union_pw_aff(*this).subtract_domain(uset);
12963 }
12964 
subtract_domain(const isl::checked::basic_set & set)12965 isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::basic_set &set) const
12966 {
12967   return this->subtract_domain(isl::checked::set(set));
12968 }
12969 
subtract_domain(const isl::checked::point & set)12970 isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::point &set) const
12971 {
12972   return this->subtract_domain(isl::checked::set(set));
12973 }
12974 
tdiv_q(isl::checked::pw_aff pa2)12975 isl::checked::pw_aff pw_aff::tdiv_q(isl::checked::pw_aff pa2) const
12976 {
12977   auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
12978   return manage(res);
12979 }
12980 
tdiv_r(isl::checked::pw_aff pa2)12981 isl::checked::pw_aff pw_aff::tdiv_r(isl::checked::pw_aff pa2) const
12982 {
12983   auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
12984   return manage(res);
12985 }
12986 
to_list()12987 isl::checked::pw_aff_list pw_aff::to_list() const
12988 {
12989   auto res = isl_pw_aff_to_list(copy());
12990   return manage(res);
12991 }
12992 
to_multi_pw_aff()12993 isl::checked::multi_pw_aff pw_aff::to_multi_pw_aff() const
12994 {
12995   return isl::checked::pw_multi_aff(*this).to_multi_pw_aff();
12996 }
12997 
to_union_pw_aff()12998 isl::checked::union_pw_aff pw_aff::to_union_pw_aff() const
12999 {
13000   auto res = isl_pw_aff_to_union_pw_aff(copy());
13001   return manage(res);
13002 }
13003 
to_union_pw_multi_aff()13004 isl::checked::union_pw_multi_aff pw_aff::to_union_pw_multi_aff() const
13005 {
13006   return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
13007 }
13008 
unbind_params_insert_domain(const isl::checked::multi_id & domain)13009 isl::checked::multi_pw_aff pw_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
13010 {
13011   return isl::checked::pw_multi_aff(*this).unbind_params_insert_domain(domain);
13012 }
13013 
union_add(const isl::checked::multi_pw_aff & mpa2)13014 isl::checked::multi_pw_aff pw_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
13015 {
13016   return isl::checked::pw_multi_aff(*this).union_add(mpa2);
13017 }
13018 
union_add(const isl::checked::multi_union_pw_aff & mupa2)13019 isl::checked::multi_union_pw_aff pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
13020 {
13021   return isl::checked::union_pw_aff(*this).union_add(mupa2);
13022 }
13023 
union_add(isl::checked::pw_aff pwaff2)13024 isl::checked::pw_aff pw_aff::union_add(isl::checked::pw_aff pwaff2) const
13025 {
13026   auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
13027   return manage(res);
13028 }
13029 
union_add(const isl::checked::pw_multi_aff & pma2)13030 isl::checked::pw_multi_aff pw_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
13031 {
13032   return isl::checked::pw_multi_aff(*this).union_add(pma2);
13033 }
13034 
union_add(const isl::checked::union_pw_aff & upa2)13035 isl::checked::union_pw_aff pw_aff::union_add(const isl::checked::union_pw_aff &upa2) const
13036 {
13037   return isl::checked::union_pw_aff(*this).union_add(upa2);
13038 }
13039 
union_add(const isl::checked::union_pw_multi_aff & upma2)13040 isl::checked::union_pw_multi_aff pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
13041 {
13042   return isl::checked::union_pw_aff(*this).union_add(upma2);
13043 }
13044 
union_add(const isl::checked::aff & pwaff2)13045 isl::checked::pw_aff pw_aff::union_add(const isl::checked::aff &pwaff2) const
13046 {
13047   return this->union_add(isl::checked::pw_aff(pwaff2));
13048 }
13049 
13050 inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
13051 {
13052   char *str = isl_pw_aff_to_str(obj.get());
13053   if (!str) {
13054     os.setstate(std::ios_base::badbit);
13055     return os;
13056   }
13057   os << str;
13058   free(str);
13059   return os;
13060 }
13061 
13062 // implementations for isl::pw_aff_list
manage(__isl_take isl_pw_aff_list * ptr)13063 pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
13064   return pw_aff_list(ptr);
13065 }
manage_copy(__isl_keep isl_pw_aff_list * ptr)13066 pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
13067   ptr = isl_pw_aff_list_copy(ptr);
13068   return pw_aff_list(ptr);
13069 }
13070 
pw_aff_list()13071 pw_aff_list::pw_aff_list()
13072     : ptr(nullptr) {}
13073 
pw_aff_list(const pw_aff_list & obj)13074 pw_aff_list::pw_aff_list(const pw_aff_list &obj)
13075     : ptr(nullptr)
13076 {
13077   ptr = obj.copy();
13078 }
13079 
pw_aff_list(__isl_take isl_pw_aff_list * ptr)13080 pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
13081     : ptr(ptr) {}
13082 
pw_aff_list(isl::checked::ctx ctx,int n)13083 pw_aff_list::pw_aff_list(isl::checked::ctx ctx, int n)
13084 {
13085   auto res = isl_pw_aff_list_alloc(ctx.release(), n);
13086   ptr = res;
13087 }
13088 
pw_aff_list(isl::checked::pw_aff el)13089 pw_aff_list::pw_aff_list(isl::checked::pw_aff el)
13090 {
13091   auto res = isl_pw_aff_list_from_pw_aff(el.release());
13092   ptr = res;
13093 }
13094 
13095 pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
13096   std::swap(this->ptr, obj.ptr);
13097   return *this;
13098 }
13099 
~pw_aff_list()13100 pw_aff_list::~pw_aff_list() {
13101   if (ptr)
13102     isl_pw_aff_list_free(ptr);
13103 }
13104 
copy()13105 __isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
13106   return isl_pw_aff_list_copy(ptr);
13107 }
13108 
get()13109 __isl_keep isl_pw_aff_list *pw_aff_list::get() const {
13110   return ptr;
13111 }
13112 
release()13113 __isl_give isl_pw_aff_list *pw_aff_list::release() {
13114   isl_pw_aff_list *tmp = ptr;
13115   ptr = nullptr;
13116   return tmp;
13117 }
13118 
is_null()13119 bool pw_aff_list::is_null() const {
13120   return ptr == nullptr;
13121 }
13122 
ctx()13123 isl::checked::ctx pw_aff_list::ctx() const {
13124   return isl::checked::ctx(isl_pw_aff_list_get_ctx(ptr));
13125 }
13126 
add(isl::checked::pw_aff el)13127 isl::checked::pw_aff_list pw_aff_list::add(isl::checked::pw_aff el) const
13128 {
13129   auto res = isl_pw_aff_list_add(copy(), el.release());
13130   return manage(res);
13131 }
13132 
at(int index)13133 isl::checked::pw_aff pw_aff_list::at(int index) const
13134 {
13135   auto res = isl_pw_aff_list_get_at(get(), index);
13136   return manage(res);
13137 }
13138 
get_at(int index)13139 isl::checked::pw_aff pw_aff_list::get_at(int index) const
13140 {
13141   return at(index);
13142 }
13143 
clear()13144 isl::checked::pw_aff_list pw_aff_list::clear() const
13145 {
13146   auto res = isl_pw_aff_list_clear(copy());
13147   return manage(res);
13148 }
13149 
concat(isl::checked::pw_aff_list list2)13150 isl::checked::pw_aff_list pw_aff_list::concat(isl::checked::pw_aff_list list2) const
13151 {
13152   auto res = isl_pw_aff_list_concat(copy(), list2.release());
13153   return manage(res);
13154 }
13155 
drop(unsigned int first,unsigned int n)13156 isl::checked::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
13157 {
13158   auto res = isl_pw_aff_list_drop(copy(), first, n);
13159   return manage(res);
13160 }
13161 
foreach(const std::function<stat (isl::checked::pw_aff)> & fn)13162 stat pw_aff_list::foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const
13163 {
13164   struct fn_data {
13165     std::function<stat(isl::checked::pw_aff)> func;
13166   } fn_data = { fn };
13167   auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
13168     auto *data = static_cast<struct fn_data *>(arg_1);
13169     auto ret = (data->func)(manage(arg_0));
13170     return ret.release();
13171   };
13172   auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
13173   return manage(res);
13174 }
13175 
insert(unsigned int pos,isl::checked::pw_aff el)13176 isl::checked::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::checked::pw_aff el) const
13177 {
13178   auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
13179   return manage(res);
13180 }
13181 
size()13182 class size pw_aff_list::size() const
13183 {
13184   auto res = isl_pw_aff_list_size(get());
13185   return manage(res);
13186 }
13187 
13188 inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
13189 {
13190   char *str = isl_pw_aff_list_to_str(obj.get());
13191   if (!str) {
13192     os.setstate(std::ios_base::badbit);
13193     return os;
13194   }
13195   os << str;
13196   free(str);
13197   return os;
13198 }
13199 
13200 // implementations for isl::pw_multi_aff
manage(__isl_take isl_pw_multi_aff * ptr)13201 pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
13202   return pw_multi_aff(ptr);
13203 }
manage_copy(__isl_keep isl_pw_multi_aff * ptr)13204 pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
13205   ptr = isl_pw_multi_aff_copy(ptr);
13206   return pw_multi_aff(ptr);
13207 }
13208 
pw_multi_aff()13209 pw_multi_aff::pw_multi_aff()
13210     : ptr(nullptr) {}
13211 
pw_multi_aff(const pw_multi_aff & obj)13212 pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
13213     : ptr(nullptr)
13214 {
13215   ptr = obj.copy();
13216 }
13217 
pw_multi_aff(__isl_take isl_pw_multi_aff * ptr)13218 pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
13219     : ptr(ptr) {}
13220 
pw_multi_aff(isl::checked::multi_aff ma)13221 pw_multi_aff::pw_multi_aff(isl::checked::multi_aff ma)
13222 {
13223   auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
13224   ptr = res;
13225 }
13226 
pw_multi_aff(isl::checked::pw_aff pa)13227 pw_multi_aff::pw_multi_aff(isl::checked::pw_aff pa)
13228 {
13229   auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
13230   ptr = res;
13231 }
13232 
pw_multi_aff(isl::checked::ctx ctx,const std::string & str)13233 pw_multi_aff::pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
13234 {
13235   auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
13236   ptr = res;
13237 }
13238 
13239 pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
13240   std::swap(this->ptr, obj.ptr);
13241   return *this;
13242 }
13243 
~pw_multi_aff()13244 pw_multi_aff::~pw_multi_aff() {
13245   if (ptr)
13246     isl_pw_multi_aff_free(ptr);
13247 }
13248 
copy()13249 __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
13250   return isl_pw_multi_aff_copy(ptr);
13251 }
13252 
get()13253 __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
13254   return ptr;
13255 }
13256 
release()13257 __isl_give isl_pw_multi_aff *pw_multi_aff::release() {
13258   isl_pw_multi_aff *tmp = ptr;
13259   ptr = nullptr;
13260   return tmp;
13261 }
13262 
is_null()13263 bool pw_multi_aff::is_null() const {
13264   return ptr == nullptr;
13265 }
13266 
ctx()13267 isl::checked::ctx pw_multi_aff::ctx() const {
13268   return isl::checked::ctx(isl_pw_multi_aff_get_ctx(ptr));
13269 }
13270 
add(const isl::checked::multi_pw_aff & multi2)13271 isl::checked::multi_pw_aff pw_multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
13272 {
13273   return isl::checked::multi_pw_aff(*this).add(multi2);
13274 }
13275 
add(const isl::checked::multi_union_pw_aff & multi2)13276 isl::checked::multi_union_pw_aff pw_multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
13277 {
13278   return isl::checked::multi_pw_aff(*this).add(multi2);
13279 }
13280 
add(isl::checked::pw_multi_aff pma2)13281 isl::checked::pw_multi_aff pw_multi_aff::add(isl::checked::pw_multi_aff pma2) const
13282 {
13283   auto res = isl_pw_multi_aff_add(copy(), pma2.release());
13284   return manage(res);
13285 }
13286 
add(const isl::checked::union_pw_multi_aff & upma2)13287 isl::checked::union_pw_multi_aff pw_multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
13288 {
13289   return isl::checked::union_pw_multi_aff(*this).add(upma2);
13290 }
13291 
add(const isl::checked::multi_aff & pma2)13292 isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::multi_aff &pma2) const
13293 {
13294   return this->add(isl::checked::pw_multi_aff(pma2));
13295 }
13296 
add(const isl::checked::pw_aff & pma2)13297 isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::pw_aff &pma2) const
13298 {
13299   return this->add(isl::checked::pw_multi_aff(pma2));
13300 }
13301 
add_constant(isl::checked::multi_val mv)13302 isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::multi_val mv) const
13303 {
13304   auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
13305   return manage(res);
13306 }
13307 
add_constant(isl::checked::val v)13308 isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::val v) const
13309 {
13310   auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
13311   return manage(res);
13312 }
13313 
add_constant(long v)13314 isl::checked::pw_multi_aff pw_multi_aff::add_constant(long v) const
13315 {
13316   return this->add_constant(isl::checked::val(ctx(), v));
13317 }
13318 
apply(const isl::checked::union_pw_multi_aff & upma2)13319 isl::checked::union_pw_multi_aff pw_multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
13320 {
13321   return isl::checked::union_pw_multi_aff(*this).apply(upma2);
13322 }
13323 
as_map()13324 isl::checked::map pw_multi_aff::as_map() const
13325 {
13326   auto res = isl_pw_multi_aff_as_map(copy());
13327   return manage(res);
13328 }
13329 
as_multi_aff()13330 isl::checked::multi_aff pw_multi_aff::as_multi_aff() const
13331 {
13332   auto res = isl_pw_multi_aff_as_multi_aff(copy());
13333   return manage(res);
13334 }
13335 
as_multi_union_pw_aff()13336 isl::checked::multi_union_pw_aff pw_multi_aff::as_multi_union_pw_aff() const
13337 {
13338   return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
13339 }
13340 
as_pw_multi_aff()13341 isl::checked::pw_multi_aff pw_multi_aff::as_pw_multi_aff() const
13342 {
13343   return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
13344 }
13345 
as_set()13346 isl::checked::set pw_multi_aff::as_set() const
13347 {
13348   auto res = isl_pw_multi_aff_as_set(copy());
13349   return manage(res);
13350 }
13351 
as_union_map()13352 isl::checked::union_map pw_multi_aff::as_union_map() const
13353 {
13354   return isl::checked::union_pw_multi_aff(*this).as_union_map();
13355 }
13356 
at(int pos)13357 isl::checked::pw_aff pw_multi_aff::at(int pos) const
13358 {
13359   auto res = isl_pw_multi_aff_get_at(get(), pos);
13360   return manage(res);
13361 }
13362 
get_at(int pos)13363 isl::checked::pw_aff pw_multi_aff::get_at(int pos) const
13364 {
13365   return at(pos);
13366 }
13367 
bind(const isl::checked::multi_id & tuple)13368 isl::checked::set pw_multi_aff::bind(const isl::checked::multi_id &tuple) const
13369 {
13370   return isl::checked::multi_pw_aff(*this).bind(tuple);
13371 }
13372 
bind_domain(isl::checked::multi_id tuple)13373 isl::checked::pw_multi_aff pw_multi_aff::bind_domain(isl::checked::multi_id tuple) const
13374 {
13375   auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
13376   return manage(res);
13377 }
13378 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)13379 isl::checked::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
13380 {
13381   auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
13382   return manage(res);
13383 }
13384 
coalesce()13385 isl::checked::pw_multi_aff pw_multi_aff::coalesce() const
13386 {
13387   auto res = isl_pw_multi_aff_coalesce(copy());
13388   return manage(res);
13389 }
13390 
domain()13391 isl::checked::set pw_multi_aff::domain() const
13392 {
13393   auto res = isl_pw_multi_aff_domain(copy());
13394   return manage(res);
13395 }
13396 
domain_map(isl::checked::space space)13397 isl::checked::pw_multi_aff pw_multi_aff::domain_map(isl::checked::space space)
13398 {
13399   auto res = isl_pw_multi_aff_domain_map(space.release());
13400   return manage(res);
13401 }
13402 
extract_pw_multi_aff(const isl::checked::space & space)13403 isl::checked::pw_multi_aff pw_multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
13404 {
13405   return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
13406 }
13407 
flat_range_product(const isl::checked::multi_pw_aff & multi2)13408 isl::checked::multi_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
13409 {
13410   return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
13411 }
13412 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)13413 isl::checked::multi_union_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
13414 {
13415   return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
13416 }
13417 
flat_range_product(isl::checked::pw_multi_aff pma2)13418 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(isl::checked::pw_multi_aff pma2) const
13419 {
13420   auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
13421   return manage(res);
13422 }
13423 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)13424 isl::checked::union_pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
13425 {
13426   return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
13427 }
13428 
flat_range_product(const isl::checked::multi_aff & pma2)13429 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::multi_aff &pma2) const
13430 {
13431   return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
13432 }
13433 
flat_range_product(const isl::checked::pw_aff & pma2)13434 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::pw_aff &pma2) const
13435 {
13436   return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
13437 }
13438 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)13439 stat pw_multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
13440 {
13441   struct fn_data {
13442     std::function<stat(isl::checked::set, isl::checked::multi_aff)> func;
13443   } fn_data = { fn };
13444   auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
13445     auto *data = static_cast<struct fn_data *>(arg_2);
13446     auto ret = (data->func)(manage(arg_0), manage(arg_1));
13447     return ret.release();
13448   };
13449   auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
13450   return manage(res);
13451 }
13452 
gist(isl::checked::set set)13453 isl::checked::pw_multi_aff pw_multi_aff::gist(isl::checked::set set) const
13454 {
13455   auto res = isl_pw_multi_aff_gist(copy(), set.release());
13456   return manage(res);
13457 }
13458 
gist(const isl::checked::union_set & context)13459 isl::checked::union_pw_multi_aff pw_multi_aff::gist(const isl::checked::union_set &context) const
13460 {
13461   return isl::checked::union_pw_multi_aff(*this).gist(context);
13462 }
13463 
gist(const isl::checked::basic_set & set)13464 isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::basic_set &set) const
13465 {
13466   return this->gist(isl::checked::set(set));
13467 }
13468 
gist(const isl::checked::point & set)13469 isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::point &set) const
13470 {
13471   return this->gist(isl::checked::set(set));
13472 }
13473 
has_range_tuple_id()13474 boolean pw_multi_aff::has_range_tuple_id() const
13475 {
13476   auto res = isl_pw_multi_aff_has_range_tuple_id(get());
13477   return manage(res);
13478 }
13479 
identity()13480 isl::checked::multi_pw_aff pw_multi_aff::identity() const
13481 {
13482   return isl::checked::multi_pw_aff(*this).identity();
13483 }
13484 
identity_on_domain(isl::checked::space space)13485 isl::checked::pw_multi_aff pw_multi_aff::identity_on_domain(isl::checked::space space)
13486 {
13487   auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
13488   return manage(res);
13489 }
13490 
insert_domain(isl::checked::space domain)13491 isl::checked::pw_multi_aff pw_multi_aff::insert_domain(isl::checked::space domain) const
13492 {
13493   auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
13494   return manage(res);
13495 }
13496 
intersect_domain(isl::checked::set set)13497 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(isl::checked::set set) const
13498 {
13499   auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
13500   return manage(res);
13501 }
13502 
intersect_domain(const isl::checked::space & space)13503 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::space &space) const
13504 {
13505   return isl::checked::union_pw_multi_aff(*this).intersect_domain(space);
13506 }
13507 
intersect_domain(const isl::checked::union_set & uset)13508 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::union_set &uset) const
13509 {
13510   return isl::checked::union_pw_multi_aff(*this).intersect_domain(uset);
13511 }
13512 
intersect_domain(const isl::checked::basic_set & set)13513 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::basic_set &set) const
13514 {
13515   return this->intersect_domain(isl::checked::set(set));
13516 }
13517 
intersect_domain(const isl::checked::point & set)13518 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::point &set) const
13519 {
13520   return this->intersect_domain(isl::checked::set(set));
13521 }
13522 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)13523 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
13524 {
13525   return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
13526 }
13527 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)13528 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
13529 {
13530   return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
13531 }
13532 
intersect_params(isl::checked::set set)13533 isl::checked::pw_multi_aff pw_multi_aff::intersect_params(isl::checked::set set) const
13534 {
13535   auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
13536   return manage(res);
13537 }
13538 
involves_locals()13539 boolean pw_multi_aff::involves_locals() const
13540 {
13541   auto res = isl_pw_multi_aff_involves_locals(get());
13542   return manage(res);
13543 }
13544 
involves_nan()13545 boolean pw_multi_aff::involves_nan() const
13546 {
13547   return isl::checked::multi_pw_aff(*this).involves_nan();
13548 }
13549 
involves_param(const isl::checked::id & id)13550 boolean pw_multi_aff::involves_param(const isl::checked::id &id) const
13551 {
13552   return isl::checked::multi_pw_aff(*this).involves_param(id);
13553 }
13554 
involves_param(const std::string & id)13555 boolean pw_multi_aff::involves_param(const std::string &id) const
13556 {
13557   return this->involves_param(isl::checked::id(ctx(), id));
13558 }
13559 
involves_param(const isl::checked::id_list & list)13560 boolean pw_multi_aff::involves_param(const isl::checked::id_list &list) const
13561 {
13562   return isl::checked::multi_pw_aff(*this).involves_param(list);
13563 }
13564 
isa_multi_aff()13565 boolean pw_multi_aff::isa_multi_aff() const
13566 {
13567   auto res = isl_pw_multi_aff_isa_multi_aff(get());
13568   return manage(res);
13569 }
13570 
isa_pw_multi_aff()13571 boolean pw_multi_aff::isa_pw_multi_aff() const
13572 {
13573   return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
13574 }
13575 
list()13576 isl::checked::pw_aff_list pw_multi_aff::list() const
13577 {
13578   return isl::checked::multi_pw_aff(*this).list();
13579 }
13580 
max(const isl::checked::multi_pw_aff & multi2)13581 isl::checked::multi_pw_aff pw_multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
13582 {
13583   return isl::checked::multi_pw_aff(*this).max(multi2);
13584 }
13585 
max_multi_val()13586 isl::checked::multi_val pw_multi_aff::max_multi_val() const
13587 {
13588   auto res = isl_pw_multi_aff_max_multi_val(copy());
13589   return manage(res);
13590 }
13591 
min(const isl::checked::multi_pw_aff & multi2)13592 isl::checked::multi_pw_aff pw_multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
13593 {
13594   return isl::checked::multi_pw_aff(*this).min(multi2);
13595 }
13596 
min_multi_val()13597 isl::checked::multi_val pw_multi_aff::min_multi_val() const
13598 {
13599   auto res = isl_pw_multi_aff_min_multi_val(copy());
13600   return manage(res);
13601 }
13602 
multi_val_on_domain(isl::checked::set domain,isl::checked::multi_val mv)13603 isl::checked::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv)
13604 {
13605   auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
13606   return manage(res);
13607 }
13608 
n_piece()13609 class size pw_multi_aff::n_piece() const
13610 {
13611   auto res = isl_pw_multi_aff_n_piece(get());
13612   return manage(res);
13613 }
13614 
neg()13615 isl::checked::multi_pw_aff pw_multi_aff::neg() const
13616 {
13617   return isl::checked::multi_pw_aff(*this).neg();
13618 }
13619 
plain_is_empty()13620 boolean pw_multi_aff::plain_is_empty() const
13621 {
13622   return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
13623 }
13624 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)13625 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
13626 {
13627   return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
13628 }
13629 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)13630 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
13631 {
13632   return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
13633 }
13634 
preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2)13635 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const
13636 {
13637   auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
13638   return manage(res);
13639 }
13640 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)13641 isl::checked::union_pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
13642 {
13643   return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
13644 }
13645 
preimage_domain_wrapped_domain(const isl::checked::multi_aff & pma2)13646 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const
13647 {
13648   return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
13649 }
13650 
preimage_domain_wrapped_domain(const isl::checked::pw_aff & pma2)13651 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const
13652 {
13653   return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
13654 }
13655 
product(const isl::checked::multi_pw_aff & multi2)13656 isl::checked::multi_pw_aff pw_multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
13657 {
13658   return isl::checked::multi_pw_aff(*this).product(multi2);
13659 }
13660 
product(isl::checked::pw_multi_aff pma2)13661 isl::checked::pw_multi_aff pw_multi_aff::product(isl::checked::pw_multi_aff pma2) const
13662 {
13663   auto res = isl_pw_multi_aff_product(copy(), pma2.release());
13664   return manage(res);
13665 }
13666 
product(const isl::checked::multi_aff & pma2)13667 isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::multi_aff &pma2) const
13668 {
13669   return this->product(isl::checked::pw_multi_aff(pma2));
13670 }
13671 
product(const isl::checked::pw_aff & pma2)13672 isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::pw_aff &pma2) const
13673 {
13674   return this->product(isl::checked::pw_multi_aff(pma2));
13675 }
13676 
pullback(const isl::checked::multi_pw_aff & mpa2)13677 isl::checked::multi_pw_aff pw_multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
13678 {
13679   return isl::checked::multi_pw_aff(*this).pullback(mpa2);
13680 }
13681 
pullback(isl::checked::multi_aff ma)13682 isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::multi_aff ma) const
13683 {
13684   auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
13685   return manage(res);
13686 }
13687 
pullback(isl::checked::pw_multi_aff pma2)13688 isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::pw_multi_aff pma2) const
13689 {
13690   auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
13691   return manage(res);
13692 }
13693 
pullback(const isl::checked::union_pw_multi_aff & upma2)13694 isl::checked::union_pw_multi_aff pw_multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
13695 {
13696   return isl::checked::union_pw_multi_aff(*this).pullback(upma2);
13697 }
13698 
range_factor_domain()13699 isl::checked::pw_multi_aff pw_multi_aff::range_factor_domain() const
13700 {
13701   auto res = isl_pw_multi_aff_range_factor_domain(copy());
13702   return manage(res);
13703 }
13704 
range_factor_range()13705 isl::checked::pw_multi_aff pw_multi_aff::range_factor_range() const
13706 {
13707   auto res = isl_pw_multi_aff_range_factor_range(copy());
13708   return manage(res);
13709 }
13710 
range_map(isl::checked::space space)13711 isl::checked::pw_multi_aff pw_multi_aff::range_map(isl::checked::space space)
13712 {
13713   auto res = isl_pw_multi_aff_range_map(space.release());
13714   return manage(res);
13715 }
13716 
range_product(const isl::checked::multi_pw_aff & multi2)13717 isl::checked::multi_pw_aff pw_multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
13718 {
13719   return isl::checked::multi_pw_aff(*this).range_product(multi2);
13720 }
13721 
range_product(const isl::checked::multi_union_pw_aff & multi2)13722 isl::checked::multi_union_pw_aff pw_multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
13723 {
13724   return isl::checked::multi_pw_aff(*this).range_product(multi2);
13725 }
13726 
range_product(isl::checked::pw_multi_aff pma2)13727 isl::checked::pw_multi_aff pw_multi_aff::range_product(isl::checked::pw_multi_aff pma2) const
13728 {
13729   auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
13730   return manage(res);
13731 }
13732 
range_product(const isl::checked::union_pw_multi_aff & upma2)13733 isl::checked::union_pw_multi_aff pw_multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
13734 {
13735   return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
13736 }
13737 
range_product(const isl::checked::multi_aff & pma2)13738 isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::multi_aff &pma2) const
13739 {
13740   return this->range_product(isl::checked::pw_multi_aff(pma2));
13741 }
13742 
range_product(const isl::checked::pw_aff & pma2)13743 isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::pw_aff &pma2) const
13744 {
13745   return this->range_product(isl::checked::pw_multi_aff(pma2));
13746 }
13747 
range_tuple_id()13748 isl::checked::id pw_multi_aff::range_tuple_id() const
13749 {
13750   auto res = isl_pw_multi_aff_get_range_tuple_id(get());
13751   return manage(res);
13752 }
13753 
get_range_tuple_id()13754 isl::checked::id pw_multi_aff::get_range_tuple_id() const
13755 {
13756   return range_tuple_id();
13757 }
13758 
reset_range_tuple_id()13759 isl::checked::multi_pw_aff pw_multi_aff::reset_range_tuple_id() const
13760 {
13761   return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
13762 }
13763 
scale(const isl::checked::multi_val & mv)13764 isl::checked::multi_pw_aff pw_multi_aff::scale(const isl::checked::multi_val &mv) const
13765 {
13766   return isl::checked::multi_pw_aff(*this).scale(mv);
13767 }
13768 
scale(isl::checked::val v)13769 isl::checked::pw_multi_aff pw_multi_aff::scale(isl::checked::val v) const
13770 {
13771   auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
13772   return manage(res);
13773 }
13774 
scale(long v)13775 isl::checked::pw_multi_aff pw_multi_aff::scale(long v) const
13776 {
13777   return this->scale(isl::checked::val(ctx(), v));
13778 }
13779 
scale_down(const isl::checked::multi_val & mv)13780 isl::checked::multi_pw_aff pw_multi_aff::scale_down(const isl::checked::multi_val &mv) const
13781 {
13782   return isl::checked::multi_pw_aff(*this).scale_down(mv);
13783 }
13784 
scale_down(isl::checked::val v)13785 isl::checked::pw_multi_aff pw_multi_aff::scale_down(isl::checked::val v) const
13786 {
13787   auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
13788   return manage(res);
13789 }
13790 
scale_down(long v)13791 isl::checked::pw_multi_aff pw_multi_aff::scale_down(long v) const
13792 {
13793   return this->scale_down(isl::checked::val(ctx(), v));
13794 }
13795 
set_at(int pos,const isl::checked::pw_aff & el)13796 isl::checked::multi_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
13797 {
13798   return isl::checked::multi_pw_aff(*this).set_at(pos, el);
13799 }
13800 
set_at(int pos,const isl::checked::union_pw_aff & el)13801 isl::checked::multi_union_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
13802 {
13803   return isl::checked::multi_pw_aff(*this).set_at(pos, el);
13804 }
13805 
set_range_tuple(isl::checked::id id)13806 isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(isl::checked::id id) const
13807 {
13808   auto res = isl_pw_multi_aff_set_range_tuple_id(copy(), id.release());
13809   return manage(res);
13810 }
13811 
set_range_tuple(const std::string & id)13812 isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(const std::string &id) const
13813 {
13814   return this->set_range_tuple(isl::checked::id(ctx(), id));
13815 }
13816 
size()13817 class size pw_multi_aff::size() const
13818 {
13819   return isl::checked::multi_pw_aff(*this).size();
13820 }
13821 
space()13822 isl::checked::space pw_multi_aff::space() const
13823 {
13824   auto res = isl_pw_multi_aff_get_space(get());
13825   return manage(res);
13826 }
13827 
get_space()13828 isl::checked::space pw_multi_aff::get_space() const
13829 {
13830   return space();
13831 }
13832 
sub(const isl::checked::multi_pw_aff & multi2)13833 isl::checked::multi_pw_aff pw_multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
13834 {
13835   return isl::checked::multi_pw_aff(*this).sub(multi2);
13836 }
13837 
sub(const isl::checked::multi_union_pw_aff & multi2)13838 isl::checked::multi_union_pw_aff pw_multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
13839 {
13840   return isl::checked::multi_pw_aff(*this).sub(multi2);
13841 }
13842 
sub(isl::checked::pw_multi_aff pma2)13843 isl::checked::pw_multi_aff pw_multi_aff::sub(isl::checked::pw_multi_aff pma2) const
13844 {
13845   auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
13846   return manage(res);
13847 }
13848 
sub(const isl::checked::union_pw_multi_aff & upma2)13849 isl::checked::union_pw_multi_aff pw_multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
13850 {
13851   return isl::checked::union_pw_multi_aff(*this).sub(upma2);
13852 }
13853 
sub(const isl::checked::multi_aff & pma2)13854 isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::multi_aff &pma2) const
13855 {
13856   return this->sub(isl::checked::pw_multi_aff(pma2));
13857 }
13858 
sub(const isl::checked::pw_aff & pma2)13859 isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::pw_aff &pma2) const
13860 {
13861   return this->sub(isl::checked::pw_multi_aff(pma2));
13862 }
13863 
subtract_domain(isl::checked::set set)13864 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(isl::checked::set set) const
13865 {
13866   auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
13867   return manage(res);
13868 }
13869 
subtract_domain(const isl::checked::space & space)13870 isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::space &space) const
13871 {
13872   return isl::checked::union_pw_multi_aff(*this).subtract_domain(space);
13873 }
13874 
subtract_domain(const isl::checked::union_set & uset)13875 isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::union_set &uset) const
13876 {
13877   return isl::checked::union_pw_multi_aff(*this).subtract_domain(uset);
13878 }
13879 
subtract_domain(const isl::checked::basic_set & set)13880 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::basic_set &set) const
13881 {
13882   return this->subtract_domain(isl::checked::set(set));
13883 }
13884 
subtract_domain(const isl::checked::point & set)13885 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::point &set) const
13886 {
13887   return this->subtract_domain(isl::checked::set(set));
13888 }
13889 
to_list()13890 isl::checked::pw_multi_aff_list pw_multi_aff::to_list() const
13891 {
13892   auto res = isl_pw_multi_aff_to_list(copy());
13893   return manage(res);
13894 }
13895 
to_multi_pw_aff()13896 isl::checked::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
13897 {
13898   auto res = isl_pw_multi_aff_to_multi_pw_aff(copy());
13899   return manage(res);
13900 }
13901 
to_union_pw_multi_aff()13902 isl::checked::union_pw_multi_aff pw_multi_aff::to_union_pw_multi_aff() const
13903 {
13904   auto res = isl_pw_multi_aff_to_union_pw_multi_aff(copy());
13905   return manage(res);
13906 }
13907 
unbind_params_insert_domain(const isl::checked::multi_id & domain)13908 isl::checked::multi_pw_aff pw_multi_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
13909 {
13910   return isl::checked::multi_pw_aff(*this).unbind_params_insert_domain(domain);
13911 }
13912 
union_add(const isl::checked::multi_pw_aff & mpa2)13913 isl::checked::multi_pw_aff pw_multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
13914 {
13915   return isl::checked::multi_pw_aff(*this).union_add(mpa2);
13916 }
13917 
union_add(const isl::checked::multi_union_pw_aff & mupa2)13918 isl::checked::multi_union_pw_aff pw_multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
13919 {
13920   return isl::checked::multi_pw_aff(*this).union_add(mupa2);
13921 }
13922 
union_add(isl::checked::pw_multi_aff pma2)13923 isl::checked::pw_multi_aff pw_multi_aff::union_add(isl::checked::pw_multi_aff pma2) const
13924 {
13925   auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
13926   return manage(res);
13927 }
13928 
union_add(const isl::checked::union_pw_multi_aff & upma2)13929 isl::checked::union_pw_multi_aff pw_multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
13930 {
13931   return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
13932 }
13933 
union_add(const isl::checked::multi_aff & pma2)13934 isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::multi_aff &pma2) const
13935 {
13936   return this->union_add(isl::checked::pw_multi_aff(pma2));
13937 }
13938 
union_add(const isl::checked::pw_aff & pma2)13939 isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::pw_aff &pma2) const
13940 {
13941   return this->union_add(isl::checked::pw_multi_aff(pma2));
13942 }
13943 
zero(isl::checked::space space)13944 isl::checked::pw_multi_aff pw_multi_aff::zero(isl::checked::space space)
13945 {
13946   auto res = isl_pw_multi_aff_zero(space.release());
13947   return manage(res);
13948 }
13949 
13950 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
13951 {
13952   char *str = isl_pw_multi_aff_to_str(obj.get());
13953   if (!str) {
13954     os.setstate(std::ios_base::badbit);
13955     return os;
13956   }
13957   os << str;
13958   free(str);
13959   return os;
13960 }
13961 
13962 // implementations for isl::pw_multi_aff_list
manage(__isl_take isl_pw_multi_aff_list * ptr)13963 pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
13964   return pw_multi_aff_list(ptr);
13965 }
manage_copy(__isl_keep isl_pw_multi_aff_list * ptr)13966 pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
13967   ptr = isl_pw_multi_aff_list_copy(ptr);
13968   return pw_multi_aff_list(ptr);
13969 }
13970 
pw_multi_aff_list()13971 pw_multi_aff_list::pw_multi_aff_list()
13972     : ptr(nullptr) {}
13973 
pw_multi_aff_list(const pw_multi_aff_list & obj)13974 pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
13975     : ptr(nullptr)
13976 {
13977   ptr = obj.copy();
13978 }
13979 
pw_multi_aff_list(__isl_take isl_pw_multi_aff_list * ptr)13980 pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
13981     : ptr(ptr) {}
13982 
pw_multi_aff_list(isl::checked::ctx ctx,int n)13983 pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, int n)
13984 {
13985   auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
13986   ptr = res;
13987 }
13988 
pw_multi_aff_list(isl::checked::pw_multi_aff el)13989 pw_multi_aff_list::pw_multi_aff_list(isl::checked::pw_multi_aff el)
13990 {
13991   auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
13992   ptr = res;
13993 }
13994 
13995 pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
13996   std::swap(this->ptr, obj.ptr);
13997   return *this;
13998 }
13999 
~pw_multi_aff_list()14000 pw_multi_aff_list::~pw_multi_aff_list() {
14001   if (ptr)
14002     isl_pw_multi_aff_list_free(ptr);
14003 }
14004 
copy()14005 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
14006   return isl_pw_multi_aff_list_copy(ptr);
14007 }
14008 
get()14009 __isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
14010   return ptr;
14011 }
14012 
release()14013 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
14014   isl_pw_multi_aff_list *tmp = ptr;
14015   ptr = nullptr;
14016   return tmp;
14017 }
14018 
is_null()14019 bool pw_multi_aff_list::is_null() const {
14020   return ptr == nullptr;
14021 }
14022 
ctx()14023 isl::checked::ctx pw_multi_aff_list::ctx() const {
14024   return isl::checked::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
14025 }
14026 
add(isl::checked::pw_multi_aff el)14027 isl::checked::pw_multi_aff_list pw_multi_aff_list::add(isl::checked::pw_multi_aff el) const
14028 {
14029   auto res = isl_pw_multi_aff_list_add(copy(), el.release());
14030   return manage(res);
14031 }
14032 
at(int index)14033 isl::checked::pw_multi_aff pw_multi_aff_list::at(int index) const
14034 {
14035   auto res = isl_pw_multi_aff_list_get_at(get(), index);
14036   return manage(res);
14037 }
14038 
get_at(int index)14039 isl::checked::pw_multi_aff pw_multi_aff_list::get_at(int index) const
14040 {
14041   return at(index);
14042 }
14043 
clear()14044 isl::checked::pw_multi_aff_list pw_multi_aff_list::clear() const
14045 {
14046   auto res = isl_pw_multi_aff_list_clear(copy());
14047   return manage(res);
14048 }
14049 
concat(isl::checked::pw_multi_aff_list list2)14050 isl::checked::pw_multi_aff_list pw_multi_aff_list::concat(isl::checked::pw_multi_aff_list list2) const
14051 {
14052   auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
14053   return manage(res);
14054 }
14055 
drop(unsigned int first,unsigned int n)14056 isl::checked::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
14057 {
14058   auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
14059   return manage(res);
14060 }
14061 
foreach(const std::function<stat (isl::checked::pw_multi_aff)> & fn)14062 stat pw_multi_aff_list::foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const
14063 {
14064   struct fn_data {
14065     std::function<stat(isl::checked::pw_multi_aff)> func;
14066   } fn_data = { fn };
14067   auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
14068     auto *data = static_cast<struct fn_data *>(arg_1);
14069     auto ret = (data->func)(manage(arg_0));
14070     return ret.release();
14071   };
14072   auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
14073   return manage(res);
14074 }
14075 
insert(unsigned int pos,isl::checked::pw_multi_aff el)14076 isl::checked::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::checked::pw_multi_aff el) const
14077 {
14078   auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
14079   return manage(res);
14080 }
14081 
size()14082 class size pw_multi_aff_list::size() const
14083 {
14084   auto res = isl_pw_multi_aff_list_size(get());
14085   return manage(res);
14086 }
14087 
14088 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
14089 {
14090   char *str = isl_pw_multi_aff_list_to_str(obj.get());
14091   if (!str) {
14092     os.setstate(std::ios_base::badbit);
14093     return os;
14094   }
14095   os << str;
14096   free(str);
14097   return os;
14098 }
14099 
14100 // implementations for isl::schedule
manage(__isl_take isl_schedule * ptr)14101 schedule manage(__isl_take isl_schedule *ptr) {
14102   return schedule(ptr);
14103 }
manage_copy(__isl_keep isl_schedule * ptr)14104 schedule manage_copy(__isl_keep isl_schedule *ptr) {
14105   ptr = isl_schedule_copy(ptr);
14106   return schedule(ptr);
14107 }
14108 
schedule()14109 schedule::schedule()
14110     : ptr(nullptr) {}
14111 
schedule(const schedule & obj)14112 schedule::schedule(const schedule &obj)
14113     : ptr(nullptr)
14114 {
14115   ptr = obj.copy();
14116 }
14117 
schedule(__isl_take isl_schedule * ptr)14118 schedule::schedule(__isl_take isl_schedule *ptr)
14119     : ptr(ptr) {}
14120 
schedule(isl::checked::ctx ctx,const std::string & str)14121 schedule::schedule(isl::checked::ctx ctx, const std::string &str)
14122 {
14123   auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
14124   ptr = res;
14125 }
14126 
14127 schedule &schedule::operator=(schedule obj) {
14128   std::swap(this->ptr, obj.ptr);
14129   return *this;
14130 }
14131 
~schedule()14132 schedule::~schedule() {
14133   if (ptr)
14134     isl_schedule_free(ptr);
14135 }
14136 
copy()14137 __isl_give isl_schedule *schedule::copy() const & {
14138   return isl_schedule_copy(ptr);
14139 }
14140 
get()14141 __isl_keep isl_schedule *schedule::get() const {
14142   return ptr;
14143 }
14144 
release()14145 __isl_give isl_schedule *schedule::release() {
14146   isl_schedule *tmp = ptr;
14147   ptr = nullptr;
14148   return tmp;
14149 }
14150 
is_null()14151 bool schedule::is_null() const {
14152   return ptr == nullptr;
14153 }
14154 
ctx()14155 isl::checked::ctx schedule::ctx() const {
14156   return isl::checked::ctx(isl_schedule_get_ctx(ptr));
14157 }
14158 
domain()14159 isl::checked::union_set schedule::domain() const
14160 {
14161   auto res = isl_schedule_get_domain(get());
14162   return manage(res);
14163 }
14164 
get_domain()14165 isl::checked::union_set schedule::get_domain() const
14166 {
14167   return domain();
14168 }
14169 
from_domain(isl::checked::union_set domain)14170 isl::checked::schedule schedule::from_domain(isl::checked::union_set domain)
14171 {
14172   auto res = isl_schedule_from_domain(domain.release());
14173   return manage(res);
14174 }
14175 
map()14176 isl::checked::union_map schedule::map() const
14177 {
14178   auto res = isl_schedule_get_map(get());
14179   return manage(res);
14180 }
14181 
get_map()14182 isl::checked::union_map schedule::get_map() const
14183 {
14184   return map();
14185 }
14186 
pullback(isl::checked::union_pw_multi_aff upma)14187 isl::checked::schedule schedule::pullback(isl::checked::union_pw_multi_aff upma) const
14188 {
14189   auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
14190   return manage(res);
14191 }
14192 
root()14193 isl::checked::schedule_node schedule::root() const
14194 {
14195   auto res = isl_schedule_get_root(get());
14196   return manage(res);
14197 }
14198 
get_root()14199 isl::checked::schedule_node schedule::get_root() const
14200 {
14201   return root();
14202 }
14203 
14204 inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
14205 {
14206   char *str = isl_schedule_to_str(obj.get());
14207   if (!str) {
14208     os.setstate(std::ios_base::badbit);
14209     return os;
14210   }
14211   os << str;
14212   free(str);
14213   return os;
14214 }
14215 
14216 // implementations for isl::schedule_constraints
manage(__isl_take isl_schedule_constraints * ptr)14217 schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
14218   return schedule_constraints(ptr);
14219 }
manage_copy(__isl_keep isl_schedule_constraints * ptr)14220 schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
14221   ptr = isl_schedule_constraints_copy(ptr);
14222   return schedule_constraints(ptr);
14223 }
14224 
schedule_constraints()14225 schedule_constraints::schedule_constraints()
14226     : ptr(nullptr) {}
14227 
schedule_constraints(const schedule_constraints & obj)14228 schedule_constraints::schedule_constraints(const schedule_constraints &obj)
14229     : ptr(nullptr)
14230 {
14231   ptr = obj.copy();
14232 }
14233 
schedule_constraints(__isl_take isl_schedule_constraints * ptr)14234 schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
14235     : ptr(ptr) {}
14236 
schedule_constraints(isl::checked::ctx ctx,const std::string & str)14237 schedule_constraints::schedule_constraints(isl::checked::ctx ctx, const std::string &str)
14238 {
14239   auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
14240   ptr = res;
14241 }
14242 
14243 schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
14244   std::swap(this->ptr, obj.ptr);
14245   return *this;
14246 }
14247 
~schedule_constraints()14248 schedule_constraints::~schedule_constraints() {
14249   if (ptr)
14250     isl_schedule_constraints_free(ptr);
14251 }
14252 
copy()14253 __isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
14254   return isl_schedule_constraints_copy(ptr);
14255 }
14256 
get()14257 __isl_keep isl_schedule_constraints *schedule_constraints::get() const {
14258   return ptr;
14259 }
14260 
release()14261 __isl_give isl_schedule_constraints *schedule_constraints::release() {
14262   isl_schedule_constraints *tmp = ptr;
14263   ptr = nullptr;
14264   return tmp;
14265 }
14266 
is_null()14267 bool schedule_constraints::is_null() const {
14268   return ptr == nullptr;
14269 }
14270 
ctx()14271 isl::checked::ctx schedule_constraints::ctx() const {
14272   return isl::checked::ctx(isl_schedule_constraints_get_ctx(ptr));
14273 }
14274 
coincidence()14275 isl::checked::union_map schedule_constraints::coincidence() const
14276 {
14277   auto res = isl_schedule_constraints_get_coincidence(get());
14278   return manage(res);
14279 }
14280 
get_coincidence()14281 isl::checked::union_map schedule_constraints::get_coincidence() const
14282 {
14283   return coincidence();
14284 }
14285 
compute_schedule()14286 isl::checked::schedule schedule_constraints::compute_schedule() const
14287 {
14288   auto res = isl_schedule_constraints_compute_schedule(copy());
14289   return manage(res);
14290 }
14291 
conditional_validity()14292 isl::checked::union_map schedule_constraints::conditional_validity() const
14293 {
14294   auto res = isl_schedule_constraints_get_conditional_validity(get());
14295   return manage(res);
14296 }
14297 
get_conditional_validity()14298 isl::checked::union_map schedule_constraints::get_conditional_validity() const
14299 {
14300   return conditional_validity();
14301 }
14302 
conditional_validity_condition()14303 isl::checked::union_map schedule_constraints::conditional_validity_condition() const
14304 {
14305   auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
14306   return manage(res);
14307 }
14308 
get_conditional_validity_condition()14309 isl::checked::union_map schedule_constraints::get_conditional_validity_condition() const
14310 {
14311   return conditional_validity_condition();
14312 }
14313 
context()14314 isl::checked::set schedule_constraints::context() const
14315 {
14316   auto res = isl_schedule_constraints_get_context(get());
14317   return manage(res);
14318 }
14319 
get_context()14320 isl::checked::set schedule_constraints::get_context() const
14321 {
14322   return context();
14323 }
14324 
domain()14325 isl::checked::union_set schedule_constraints::domain() const
14326 {
14327   auto res = isl_schedule_constraints_get_domain(get());
14328   return manage(res);
14329 }
14330 
get_domain()14331 isl::checked::union_set schedule_constraints::get_domain() const
14332 {
14333   return domain();
14334 }
14335 
on_domain(isl::checked::union_set domain)14336 isl::checked::schedule_constraints schedule_constraints::on_domain(isl::checked::union_set domain)
14337 {
14338   auto res = isl_schedule_constraints_on_domain(domain.release());
14339   return manage(res);
14340 }
14341 
proximity()14342 isl::checked::union_map schedule_constraints::proximity() const
14343 {
14344   auto res = isl_schedule_constraints_get_proximity(get());
14345   return manage(res);
14346 }
14347 
get_proximity()14348 isl::checked::union_map schedule_constraints::get_proximity() const
14349 {
14350   return proximity();
14351 }
14352 
set_coincidence(isl::checked::union_map coincidence)14353 isl::checked::schedule_constraints schedule_constraints::set_coincidence(isl::checked::union_map coincidence) const
14354 {
14355   auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
14356   return manage(res);
14357 }
14358 
set_conditional_validity(isl::checked::union_map condition,isl::checked::union_map validity)14359 isl::checked::schedule_constraints schedule_constraints::set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const
14360 {
14361   auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
14362   return manage(res);
14363 }
14364 
set_context(isl::checked::set context)14365 isl::checked::schedule_constraints schedule_constraints::set_context(isl::checked::set context) const
14366 {
14367   auto res = isl_schedule_constraints_set_context(copy(), context.release());
14368   return manage(res);
14369 }
14370 
set_proximity(isl::checked::union_map proximity)14371 isl::checked::schedule_constraints schedule_constraints::set_proximity(isl::checked::union_map proximity) const
14372 {
14373   auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
14374   return manage(res);
14375 }
14376 
set_validity(isl::checked::union_map validity)14377 isl::checked::schedule_constraints schedule_constraints::set_validity(isl::checked::union_map validity) const
14378 {
14379   auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
14380   return manage(res);
14381 }
14382 
validity()14383 isl::checked::union_map schedule_constraints::validity() const
14384 {
14385   auto res = isl_schedule_constraints_get_validity(get());
14386   return manage(res);
14387 }
14388 
get_validity()14389 isl::checked::union_map schedule_constraints::get_validity() const
14390 {
14391   return validity();
14392 }
14393 
14394 inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
14395 {
14396   char *str = isl_schedule_constraints_to_str(obj.get());
14397   if (!str) {
14398     os.setstate(std::ios_base::badbit);
14399     return os;
14400   }
14401   os << str;
14402   free(str);
14403   return os;
14404 }
14405 
14406 // implementations for isl::schedule_node
manage(__isl_take isl_schedule_node * ptr)14407 schedule_node manage(__isl_take isl_schedule_node *ptr) {
14408   return schedule_node(ptr);
14409 }
manage_copy(__isl_keep isl_schedule_node * ptr)14410 schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
14411   ptr = isl_schedule_node_copy(ptr);
14412   return schedule_node(ptr);
14413 }
14414 
schedule_node()14415 schedule_node::schedule_node()
14416     : ptr(nullptr) {}
14417 
schedule_node(const schedule_node & obj)14418 schedule_node::schedule_node(const schedule_node &obj)
14419     : ptr(nullptr)
14420 {
14421   ptr = obj.copy();
14422 }
14423 
schedule_node(__isl_take isl_schedule_node * ptr)14424 schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
14425     : ptr(ptr) {}
14426 
14427 schedule_node &schedule_node::operator=(schedule_node obj) {
14428   std::swap(this->ptr, obj.ptr);
14429   return *this;
14430 }
14431 
~schedule_node()14432 schedule_node::~schedule_node() {
14433   if (ptr)
14434     isl_schedule_node_free(ptr);
14435 }
14436 
copy()14437 __isl_give isl_schedule_node *schedule_node::copy() const & {
14438   return isl_schedule_node_copy(ptr);
14439 }
14440 
get()14441 __isl_keep isl_schedule_node *schedule_node::get() const {
14442   return ptr;
14443 }
14444 
release()14445 __isl_give isl_schedule_node *schedule_node::release() {
14446   isl_schedule_node *tmp = ptr;
14447   ptr = nullptr;
14448   return tmp;
14449 }
14450 
is_null()14451 bool schedule_node::is_null() const {
14452   return ptr == nullptr;
14453 }
14454 
14455 template <typename T, typename>
isa_type(T subtype)14456 boolean schedule_node::isa_type(T subtype) const
14457 {
14458   if (is_null())
14459     return boolean();
14460   return isl_schedule_node_get_type(get()) == subtype;
14461 }
14462 template <class T>
isa()14463 boolean schedule_node::isa() const
14464 {
14465   return isa_type<decltype(T::type)>(T::type);
14466 }
14467 template <class T>
as()14468 T schedule_node::as() const
14469 {
14470  if (isa<T>().is_false())
14471     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
14472   return T(copy());
14473 }
14474 
ctx()14475 isl::checked::ctx schedule_node::ctx() const {
14476   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
14477 }
14478 
ancestor(int generation)14479 isl::checked::schedule_node schedule_node::ancestor(int generation) const
14480 {
14481   auto res = isl_schedule_node_ancestor(copy(), generation);
14482   return manage(res);
14483 }
14484 
ancestor_child_position(const isl::checked::schedule_node & ancestor)14485 class size schedule_node::ancestor_child_position(const isl::checked::schedule_node &ancestor) const
14486 {
14487   auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
14488   return manage(res);
14489 }
14490 
get_ancestor_child_position(const isl::checked::schedule_node & ancestor)14491 class size schedule_node::get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const
14492 {
14493   return ancestor_child_position(ancestor);
14494 }
14495 
child(int pos)14496 isl::checked::schedule_node schedule_node::child(int pos) const
14497 {
14498   auto res = isl_schedule_node_child(copy(), pos);
14499   return manage(res);
14500 }
14501 
child_position()14502 class size schedule_node::child_position() const
14503 {
14504   auto res = isl_schedule_node_get_child_position(get());
14505   return manage(res);
14506 }
14507 
get_child_position()14508 class size schedule_node::get_child_position() const
14509 {
14510   return child_position();
14511 }
14512 
every_descendant(const std::function<boolean (isl::checked::schedule_node)> & test)14513 boolean schedule_node::every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const
14514 {
14515   struct test_data {
14516     std::function<boolean(isl::checked::schedule_node)> func;
14517   } test_data = { test };
14518   auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
14519     auto *data = static_cast<struct test_data *>(arg_1);
14520     auto ret = (data->func)(manage_copy(arg_0));
14521     return ret.release();
14522   };
14523   auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
14524   return manage(res);
14525 }
14526 
first_child()14527 isl::checked::schedule_node schedule_node::first_child() const
14528 {
14529   auto res = isl_schedule_node_first_child(copy());
14530   return manage(res);
14531 }
14532 
foreach_ancestor_top_down(const std::function<stat (isl::checked::schedule_node)> & fn)14533 stat schedule_node::foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const
14534 {
14535   struct fn_data {
14536     std::function<stat(isl::checked::schedule_node)> func;
14537   } fn_data = { fn };
14538   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
14539     auto *data = static_cast<struct fn_data *>(arg_1);
14540     auto ret = (data->func)(manage_copy(arg_0));
14541     return ret.release();
14542   };
14543   auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
14544   return manage(res);
14545 }
14546 
foreach_descendant_top_down(const std::function<boolean (isl::checked::schedule_node)> & fn)14547 stat schedule_node::foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const
14548 {
14549   struct fn_data {
14550     std::function<boolean(isl::checked::schedule_node)> func;
14551   } fn_data = { fn };
14552   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
14553     auto *data = static_cast<struct fn_data *>(arg_1);
14554     auto ret = (data->func)(manage_copy(arg_0));
14555     return ret.release();
14556   };
14557   auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
14558   return manage(res);
14559 }
14560 
from_domain(isl::checked::union_set domain)14561 isl::checked::schedule_node schedule_node::from_domain(isl::checked::union_set domain)
14562 {
14563   auto res = isl_schedule_node_from_domain(domain.release());
14564   return manage(res);
14565 }
14566 
from_extension(isl::checked::union_map extension)14567 isl::checked::schedule_node schedule_node::from_extension(isl::checked::union_map extension)
14568 {
14569   auto res = isl_schedule_node_from_extension(extension.release());
14570   return manage(res);
14571 }
14572 
graft_after(isl::checked::schedule_node graft)14573 isl::checked::schedule_node schedule_node::graft_after(isl::checked::schedule_node graft) const
14574 {
14575   auto res = isl_schedule_node_graft_after(copy(), graft.release());
14576   return manage(res);
14577 }
14578 
graft_before(isl::checked::schedule_node graft)14579 isl::checked::schedule_node schedule_node::graft_before(isl::checked::schedule_node graft) const
14580 {
14581   auto res = isl_schedule_node_graft_before(copy(), graft.release());
14582   return manage(res);
14583 }
14584 
has_children()14585 boolean schedule_node::has_children() const
14586 {
14587   auto res = isl_schedule_node_has_children(get());
14588   return manage(res);
14589 }
14590 
has_next_sibling()14591 boolean schedule_node::has_next_sibling() const
14592 {
14593   auto res = isl_schedule_node_has_next_sibling(get());
14594   return manage(res);
14595 }
14596 
has_parent()14597 boolean schedule_node::has_parent() const
14598 {
14599   auto res = isl_schedule_node_has_parent(get());
14600   return manage(res);
14601 }
14602 
has_previous_sibling()14603 boolean schedule_node::has_previous_sibling() const
14604 {
14605   auto res = isl_schedule_node_has_previous_sibling(get());
14606   return manage(res);
14607 }
14608 
insert_context(isl::checked::set context)14609 isl::checked::schedule_node schedule_node::insert_context(isl::checked::set context) const
14610 {
14611   auto res = isl_schedule_node_insert_context(copy(), context.release());
14612   return manage(res);
14613 }
14614 
insert_filter(isl::checked::union_set filter)14615 isl::checked::schedule_node schedule_node::insert_filter(isl::checked::union_set filter) const
14616 {
14617   auto res = isl_schedule_node_insert_filter(copy(), filter.release());
14618   return manage(res);
14619 }
14620 
insert_guard(isl::checked::set context)14621 isl::checked::schedule_node schedule_node::insert_guard(isl::checked::set context) const
14622 {
14623   auto res = isl_schedule_node_insert_guard(copy(), context.release());
14624   return manage(res);
14625 }
14626 
insert_mark(isl::checked::id mark)14627 isl::checked::schedule_node schedule_node::insert_mark(isl::checked::id mark) const
14628 {
14629   auto res = isl_schedule_node_insert_mark(copy(), mark.release());
14630   return manage(res);
14631 }
14632 
insert_mark(const std::string & mark)14633 isl::checked::schedule_node schedule_node::insert_mark(const std::string &mark) const
14634 {
14635   return this->insert_mark(isl::checked::id(ctx(), mark));
14636 }
14637 
insert_partial_schedule(isl::checked::multi_union_pw_aff schedule)14638 isl::checked::schedule_node schedule_node::insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const
14639 {
14640   auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
14641   return manage(res);
14642 }
14643 
insert_sequence(isl::checked::union_set_list filters)14644 isl::checked::schedule_node schedule_node::insert_sequence(isl::checked::union_set_list filters) const
14645 {
14646   auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
14647   return manage(res);
14648 }
14649 
insert_set(isl::checked::union_set_list filters)14650 isl::checked::schedule_node schedule_node::insert_set(isl::checked::union_set_list filters) const
14651 {
14652   auto res = isl_schedule_node_insert_set(copy(), filters.release());
14653   return manage(res);
14654 }
14655 
is_equal(const isl::checked::schedule_node & node2)14656 boolean schedule_node::is_equal(const isl::checked::schedule_node &node2) const
14657 {
14658   auto res = isl_schedule_node_is_equal(get(), node2.get());
14659   return manage(res);
14660 }
14661 
is_subtree_anchored()14662 boolean schedule_node::is_subtree_anchored() const
14663 {
14664   auto res = isl_schedule_node_is_subtree_anchored(get());
14665   return manage(res);
14666 }
14667 
map_descendant_bottom_up(const std::function<isl::checked::schedule_node (isl::checked::schedule_node)> & fn)14668 isl::checked::schedule_node schedule_node::map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const
14669 {
14670   struct fn_data {
14671     std::function<isl::checked::schedule_node(isl::checked::schedule_node)> func;
14672   } fn_data = { fn };
14673   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
14674     auto *data = static_cast<struct fn_data *>(arg_1);
14675     auto ret = (data->func)(manage(arg_0));
14676     return ret.release();
14677   };
14678   auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
14679   return manage(res);
14680 }
14681 
n_children()14682 class size schedule_node::n_children() const
14683 {
14684   auto res = isl_schedule_node_n_children(get());
14685   return manage(res);
14686 }
14687 
next_sibling()14688 isl::checked::schedule_node schedule_node::next_sibling() const
14689 {
14690   auto res = isl_schedule_node_next_sibling(copy());
14691   return manage(res);
14692 }
14693 
order_after(isl::checked::union_set filter)14694 isl::checked::schedule_node schedule_node::order_after(isl::checked::union_set filter) const
14695 {
14696   auto res = isl_schedule_node_order_after(copy(), filter.release());
14697   return manage(res);
14698 }
14699 
order_before(isl::checked::union_set filter)14700 isl::checked::schedule_node schedule_node::order_before(isl::checked::union_set filter) const
14701 {
14702   auto res = isl_schedule_node_order_before(copy(), filter.release());
14703   return manage(res);
14704 }
14705 
parent()14706 isl::checked::schedule_node schedule_node::parent() const
14707 {
14708   auto res = isl_schedule_node_parent(copy());
14709   return manage(res);
14710 }
14711 
prefix_schedule_multi_union_pw_aff()14712 isl::checked::multi_union_pw_aff schedule_node::prefix_schedule_multi_union_pw_aff() const
14713 {
14714   auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
14715   return manage(res);
14716 }
14717 
get_prefix_schedule_multi_union_pw_aff()14718 isl::checked::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
14719 {
14720   return prefix_schedule_multi_union_pw_aff();
14721 }
14722 
prefix_schedule_union_map()14723 isl::checked::union_map schedule_node::prefix_schedule_union_map() const
14724 {
14725   auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
14726   return manage(res);
14727 }
14728 
get_prefix_schedule_union_map()14729 isl::checked::union_map schedule_node::get_prefix_schedule_union_map() const
14730 {
14731   return prefix_schedule_union_map();
14732 }
14733 
prefix_schedule_union_pw_multi_aff()14734 isl::checked::union_pw_multi_aff schedule_node::prefix_schedule_union_pw_multi_aff() const
14735 {
14736   auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
14737   return manage(res);
14738 }
14739 
get_prefix_schedule_union_pw_multi_aff()14740 isl::checked::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
14741 {
14742   return prefix_schedule_union_pw_multi_aff();
14743 }
14744 
previous_sibling()14745 isl::checked::schedule_node schedule_node::previous_sibling() const
14746 {
14747   auto res = isl_schedule_node_previous_sibling(copy());
14748   return manage(res);
14749 }
14750 
root()14751 isl::checked::schedule_node schedule_node::root() const
14752 {
14753   auto res = isl_schedule_node_root(copy());
14754   return manage(res);
14755 }
14756 
schedule()14757 isl::checked::schedule schedule_node::schedule() const
14758 {
14759   auto res = isl_schedule_node_get_schedule(get());
14760   return manage(res);
14761 }
14762 
get_schedule()14763 isl::checked::schedule schedule_node::get_schedule() const
14764 {
14765   return schedule();
14766 }
14767 
shared_ancestor(const isl::checked::schedule_node & node2)14768 isl::checked::schedule_node schedule_node::shared_ancestor(const isl::checked::schedule_node &node2) const
14769 {
14770   auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
14771   return manage(res);
14772 }
14773 
get_shared_ancestor(const isl::checked::schedule_node & node2)14774 isl::checked::schedule_node schedule_node::get_shared_ancestor(const isl::checked::schedule_node &node2) const
14775 {
14776   return shared_ancestor(node2);
14777 }
14778 
tree_depth()14779 class size schedule_node::tree_depth() const
14780 {
14781   auto res = isl_schedule_node_get_tree_depth(get());
14782   return manage(res);
14783 }
14784 
get_tree_depth()14785 class size schedule_node::get_tree_depth() const
14786 {
14787   return tree_depth();
14788 }
14789 
14790 inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
14791 {
14792   char *str = isl_schedule_node_to_str(obj.get());
14793   if (!str) {
14794     os.setstate(std::ios_base::badbit);
14795     return os;
14796   }
14797   os << str;
14798   free(str);
14799   return os;
14800 }
14801 
14802 // implementations for isl::schedule_node_band
schedule_node_band()14803 schedule_node_band::schedule_node_band()
14804     : schedule_node() {}
14805 
schedule_node_band(const schedule_node_band & obj)14806 schedule_node_band::schedule_node_band(const schedule_node_band &obj)
14807     : schedule_node(obj)
14808 {
14809 }
14810 
schedule_node_band(__isl_take isl_schedule_node * ptr)14811 schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
14812     : schedule_node(ptr) {}
14813 
14814 schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
14815   std::swap(this->ptr, obj.ptr);
14816   return *this;
14817 }
14818 
ctx()14819 isl::checked::ctx schedule_node_band::ctx() const {
14820   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
14821 }
14822 
ast_build_options()14823 isl::checked::union_set schedule_node_band::ast_build_options() const
14824 {
14825   auto res = isl_schedule_node_band_get_ast_build_options(get());
14826   return manage(res);
14827 }
14828 
get_ast_build_options()14829 isl::checked::union_set schedule_node_band::get_ast_build_options() const
14830 {
14831   return ast_build_options();
14832 }
14833 
ast_isolate_option()14834 isl::checked::set schedule_node_band::ast_isolate_option() const
14835 {
14836   auto res = isl_schedule_node_band_get_ast_isolate_option(get());
14837   return manage(res);
14838 }
14839 
get_ast_isolate_option()14840 isl::checked::set schedule_node_band::get_ast_isolate_option() const
14841 {
14842   return ast_isolate_option();
14843 }
14844 
member_get_coincident(int pos)14845 boolean schedule_node_band::member_get_coincident(int pos) const
14846 {
14847   auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
14848   return manage(res);
14849 }
14850 
member_set_coincident(int pos,int coincident)14851 schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
14852 {
14853   auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
14854   return manage(res).as<schedule_node_band>();
14855 }
14856 
mod(isl::checked::multi_val mv)14857 schedule_node_band schedule_node_band::mod(isl::checked::multi_val mv) const
14858 {
14859   auto res = isl_schedule_node_band_mod(copy(), mv.release());
14860   return manage(res).as<schedule_node_band>();
14861 }
14862 
n_member()14863 class size schedule_node_band::n_member() const
14864 {
14865   auto res = isl_schedule_node_band_n_member(get());
14866   return manage(res);
14867 }
14868 
partial_schedule()14869 isl::checked::multi_union_pw_aff schedule_node_band::partial_schedule() const
14870 {
14871   auto res = isl_schedule_node_band_get_partial_schedule(get());
14872   return manage(res);
14873 }
14874 
get_partial_schedule()14875 isl::checked::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
14876 {
14877   return partial_schedule();
14878 }
14879 
permutable()14880 boolean schedule_node_band::permutable() const
14881 {
14882   auto res = isl_schedule_node_band_get_permutable(get());
14883   return manage(res);
14884 }
14885 
get_permutable()14886 boolean schedule_node_band::get_permutable() const
14887 {
14888   return permutable();
14889 }
14890 
scale(isl::checked::multi_val mv)14891 schedule_node_band schedule_node_band::scale(isl::checked::multi_val mv) const
14892 {
14893   auto res = isl_schedule_node_band_scale(copy(), mv.release());
14894   return manage(res).as<schedule_node_band>();
14895 }
14896 
scale_down(isl::checked::multi_val mv)14897 schedule_node_band schedule_node_band::scale_down(isl::checked::multi_val mv) const
14898 {
14899   auto res = isl_schedule_node_band_scale_down(copy(), mv.release());
14900   return manage(res).as<schedule_node_band>();
14901 }
14902 
set_ast_build_options(isl::checked::union_set options)14903 schedule_node_band schedule_node_band::set_ast_build_options(isl::checked::union_set options) const
14904 {
14905   auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
14906   return manage(res).as<schedule_node_band>();
14907 }
14908 
set_permutable(int permutable)14909 schedule_node_band schedule_node_band::set_permutable(int permutable) const
14910 {
14911   auto res = isl_schedule_node_band_set_permutable(copy(), permutable);
14912   return manage(res).as<schedule_node_band>();
14913 }
14914 
shift(isl::checked::multi_union_pw_aff shift)14915 schedule_node_band schedule_node_band::shift(isl::checked::multi_union_pw_aff shift) const
14916 {
14917   auto res = isl_schedule_node_band_shift(copy(), shift.release());
14918   return manage(res).as<schedule_node_band>();
14919 }
14920 
split(int pos)14921 schedule_node_band schedule_node_band::split(int pos) const
14922 {
14923   auto res = isl_schedule_node_band_split(copy(), pos);
14924   return manage(res).as<schedule_node_band>();
14925 }
14926 
tile(isl::checked::multi_val sizes)14927 schedule_node_band schedule_node_band::tile(isl::checked::multi_val sizes) const
14928 {
14929   auto res = isl_schedule_node_band_tile(copy(), sizes.release());
14930   return manage(res).as<schedule_node_band>();
14931 }
14932 
member_set_ast_loop_default(int pos)14933 schedule_node_band schedule_node_band::member_set_ast_loop_default(int pos) const
14934 {
14935   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_default);
14936   return manage(res).as<schedule_node_band>();
14937 }
14938 
member_set_ast_loop_atomic(int pos)14939 schedule_node_band schedule_node_band::member_set_ast_loop_atomic(int pos) const
14940 {
14941   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_atomic);
14942   return manage(res).as<schedule_node_band>();
14943 }
14944 
member_set_ast_loop_unroll(int pos)14945 schedule_node_band schedule_node_band::member_set_ast_loop_unroll(int pos) const
14946 {
14947   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_unroll);
14948   return manage(res).as<schedule_node_band>();
14949 }
14950 
member_set_ast_loop_separate(int pos)14951 schedule_node_band schedule_node_band::member_set_ast_loop_separate(int pos) const
14952 {
14953   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_separate);
14954   return manage(res).as<schedule_node_band>();
14955 }
14956 
14957 inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
14958 {
14959   char *str = isl_schedule_node_to_str(obj.get());
14960   if (!str) {
14961     os.setstate(std::ios_base::badbit);
14962     return os;
14963   }
14964   os << str;
14965   free(str);
14966   return os;
14967 }
14968 
14969 // implementations for isl::schedule_node_context
schedule_node_context()14970 schedule_node_context::schedule_node_context()
14971     : schedule_node() {}
14972 
schedule_node_context(const schedule_node_context & obj)14973 schedule_node_context::schedule_node_context(const schedule_node_context &obj)
14974     : schedule_node(obj)
14975 {
14976 }
14977 
schedule_node_context(__isl_take isl_schedule_node * ptr)14978 schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
14979     : schedule_node(ptr) {}
14980 
14981 schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
14982   std::swap(this->ptr, obj.ptr);
14983   return *this;
14984 }
14985 
ctx()14986 isl::checked::ctx schedule_node_context::ctx() const {
14987   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
14988 }
14989 
context()14990 isl::checked::set schedule_node_context::context() const
14991 {
14992   auto res = isl_schedule_node_context_get_context(get());
14993   return manage(res);
14994 }
14995 
get_context()14996 isl::checked::set schedule_node_context::get_context() const
14997 {
14998   return context();
14999 }
15000 
15001 inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
15002 {
15003   char *str = isl_schedule_node_to_str(obj.get());
15004   if (!str) {
15005     os.setstate(std::ios_base::badbit);
15006     return os;
15007   }
15008   os << str;
15009   free(str);
15010   return os;
15011 }
15012 
15013 // implementations for isl::schedule_node_domain
schedule_node_domain()15014 schedule_node_domain::schedule_node_domain()
15015     : schedule_node() {}
15016 
schedule_node_domain(const schedule_node_domain & obj)15017 schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
15018     : schedule_node(obj)
15019 {
15020 }
15021 
schedule_node_domain(__isl_take isl_schedule_node * ptr)15022 schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
15023     : schedule_node(ptr) {}
15024 
15025 schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
15026   std::swap(this->ptr, obj.ptr);
15027   return *this;
15028 }
15029 
ctx()15030 isl::checked::ctx schedule_node_domain::ctx() const {
15031   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15032 }
15033 
domain()15034 isl::checked::union_set schedule_node_domain::domain() const
15035 {
15036   auto res = isl_schedule_node_domain_get_domain(get());
15037   return manage(res);
15038 }
15039 
get_domain()15040 isl::checked::union_set schedule_node_domain::get_domain() const
15041 {
15042   return domain();
15043 }
15044 
15045 inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
15046 {
15047   char *str = isl_schedule_node_to_str(obj.get());
15048   if (!str) {
15049     os.setstate(std::ios_base::badbit);
15050     return os;
15051   }
15052   os << str;
15053   free(str);
15054   return os;
15055 }
15056 
15057 // implementations for isl::schedule_node_expansion
schedule_node_expansion()15058 schedule_node_expansion::schedule_node_expansion()
15059     : schedule_node() {}
15060 
schedule_node_expansion(const schedule_node_expansion & obj)15061 schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
15062     : schedule_node(obj)
15063 {
15064 }
15065 
schedule_node_expansion(__isl_take isl_schedule_node * ptr)15066 schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
15067     : schedule_node(ptr) {}
15068 
15069 schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
15070   std::swap(this->ptr, obj.ptr);
15071   return *this;
15072 }
15073 
ctx()15074 isl::checked::ctx schedule_node_expansion::ctx() const {
15075   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15076 }
15077 
contraction()15078 isl::checked::union_pw_multi_aff schedule_node_expansion::contraction() const
15079 {
15080   auto res = isl_schedule_node_expansion_get_contraction(get());
15081   return manage(res);
15082 }
15083 
get_contraction()15084 isl::checked::union_pw_multi_aff schedule_node_expansion::get_contraction() const
15085 {
15086   return contraction();
15087 }
15088 
expansion()15089 isl::checked::union_map schedule_node_expansion::expansion() const
15090 {
15091   auto res = isl_schedule_node_expansion_get_expansion(get());
15092   return manage(res);
15093 }
15094 
get_expansion()15095 isl::checked::union_map schedule_node_expansion::get_expansion() const
15096 {
15097   return expansion();
15098 }
15099 
15100 inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
15101 {
15102   char *str = isl_schedule_node_to_str(obj.get());
15103   if (!str) {
15104     os.setstate(std::ios_base::badbit);
15105     return os;
15106   }
15107   os << str;
15108   free(str);
15109   return os;
15110 }
15111 
15112 // implementations for isl::schedule_node_extension
schedule_node_extension()15113 schedule_node_extension::schedule_node_extension()
15114     : schedule_node() {}
15115 
schedule_node_extension(const schedule_node_extension & obj)15116 schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
15117     : schedule_node(obj)
15118 {
15119 }
15120 
schedule_node_extension(__isl_take isl_schedule_node * ptr)15121 schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
15122     : schedule_node(ptr) {}
15123 
15124 schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
15125   std::swap(this->ptr, obj.ptr);
15126   return *this;
15127 }
15128 
ctx()15129 isl::checked::ctx schedule_node_extension::ctx() const {
15130   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15131 }
15132 
extension()15133 isl::checked::union_map schedule_node_extension::extension() const
15134 {
15135   auto res = isl_schedule_node_extension_get_extension(get());
15136   return manage(res);
15137 }
15138 
get_extension()15139 isl::checked::union_map schedule_node_extension::get_extension() const
15140 {
15141   return extension();
15142 }
15143 
15144 inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
15145 {
15146   char *str = isl_schedule_node_to_str(obj.get());
15147   if (!str) {
15148     os.setstate(std::ios_base::badbit);
15149     return os;
15150   }
15151   os << str;
15152   free(str);
15153   return os;
15154 }
15155 
15156 // implementations for isl::schedule_node_filter
schedule_node_filter()15157 schedule_node_filter::schedule_node_filter()
15158     : schedule_node() {}
15159 
schedule_node_filter(const schedule_node_filter & obj)15160 schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
15161     : schedule_node(obj)
15162 {
15163 }
15164 
schedule_node_filter(__isl_take isl_schedule_node * ptr)15165 schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
15166     : schedule_node(ptr) {}
15167 
15168 schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
15169   std::swap(this->ptr, obj.ptr);
15170   return *this;
15171 }
15172 
ctx()15173 isl::checked::ctx schedule_node_filter::ctx() const {
15174   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15175 }
15176 
filter()15177 isl::checked::union_set schedule_node_filter::filter() const
15178 {
15179   auto res = isl_schedule_node_filter_get_filter(get());
15180   return manage(res);
15181 }
15182 
get_filter()15183 isl::checked::union_set schedule_node_filter::get_filter() const
15184 {
15185   return filter();
15186 }
15187 
15188 inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
15189 {
15190   char *str = isl_schedule_node_to_str(obj.get());
15191   if (!str) {
15192     os.setstate(std::ios_base::badbit);
15193     return os;
15194   }
15195   os << str;
15196   free(str);
15197   return os;
15198 }
15199 
15200 // implementations for isl::schedule_node_guard
schedule_node_guard()15201 schedule_node_guard::schedule_node_guard()
15202     : schedule_node() {}
15203 
schedule_node_guard(const schedule_node_guard & obj)15204 schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
15205     : schedule_node(obj)
15206 {
15207 }
15208 
schedule_node_guard(__isl_take isl_schedule_node * ptr)15209 schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
15210     : schedule_node(ptr) {}
15211 
15212 schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
15213   std::swap(this->ptr, obj.ptr);
15214   return *this;
15215 }
15216 
ctx()15217 isl::checked::ctx schedule_node_guard::ctx() const {
15218   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15219 }
15220 
guard()15221 isl::checked::set schedule_node_guard::guard() const
15222 {
15223   auto res = isl_schedule_node_guard_get_guard(get());
15224   return manage(res);
15225 }
15226 
get_guard()15227 isl::checked::set schedule_node_guard::get_guard() const
15228 {
15229   return guard();
15230 }
15231 
15232 inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
15233 {
15234   char *str = isl_schedule_node_to_str(obj.get());
15235   if (!str) {
15236     os.setstate(std::ios_base::badbit);
15237     return os;
15238   }
15239   os << str;
15240   free(str);
15241   return os;
15242 }
15243 
15244 // implementations for isl::schedule_node_leaf
schedule_node_leaf()15245 schedule_node_leaf::schedule_node_leaf()
15246     : schedule_node() {}
15247 
schedule_node_leaf(const schedule_node_leaf & obj)15248 schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
15249     : schedule_node(obj)
15250 {
15251 }
15252 
schedule_node_leaf(__isl_take isl_schedule_node * ptr)15253 schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
15254     : schedule_node(ptr) {}
15255 
15256 schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
15257   std::swap(this->ptr, obj.ptr);
15258   return *this;
15259 }
15260 
ctx()15261 isl::checked::ctx schedule_node_leaf::ctx() const {
15262   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15263 }
15264 
15265 inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
15266 {
15267   char *str = isl_schedule_node_to_str(obj.get());
15268   if (!str) {
15269     os.setstate(std::ios_base::badbit);
15270     return os;
15271   }
15272   os << str;
15273   free(str);
15274   return os;
15275 }
15276 
15277 // implementations for isl::schedule_node_mark
schedule_node_mark()15278 schedule_node_mark::schedule_node_mark()
15279     : schedule_node() {}
15280 
schedule_node_mark(const schedule_node_mark & obj)15281 schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
15282     : schedule_node(obj)
15283 {
15284 }
15285 
schedule_node_mark(__isl_take isl_schedule_node * ptr)15286 schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
15287     : schedule_node(ptr) {}
15288 
15289 schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
15290   std::swap(this->ptr, obj.ptr);
15291   return *this;
15292 }
15293 
ctx()15294 isl::checked::ctx schedule_node_mark::ctx() const {
15295   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15296 }
15297 
15298 inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
15299 {
15300   char *str = isl_schedule_node_to_str(obj.get());
15301   if (!str) {
15302     os.setstate(std::ios_base::badbit);
15303     return os;
15304   }
15305   os << str;
15306   free(str);
15307   return os;
15308 }
15309 
15310 // implementations for isl::schedule_node_sequence
schedule_node_sequence()15311 schedule_node_sequence::schedule_node_sequence()
15312     : schedule_node() {}
15313 
schedule_node_sequence(const schedule_node_sequence & obj)15314 schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
15315     : schedule_node(obj)
15316 {
15317 }
15318 
schedule_node_sequence(__isl_take isl_schedule_node * ptr)15319 schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
15320     : schedule_node(ptr) {}
15321 
15322 schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
15323   std::swap(this->ptr, obj.ptr);
15324   return *this;
15325 }
15326 
ctx()15327 isl::checked::ctx schedule_node_sequence::ctx() const {
15328   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15329 }
15330 
15331 inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
15332 {
15333   char *str = isl_schedule_node_to_str(obj.get());
15334   if (!str) {
15335     os.setstate(std::ios_base::badbit);
15336     return os;
15337   }
15338   os << str;
15339   free(str);
15340   return os;
15341 }
15342 
15343 // implementations for isl::schedule_node_set
schedule_node_set()15344 schedule_node_set::schedule_node_set()
15345     : schedule_node() {}
15346 
schedule_node_set(const schedule_node_set & obj)15347 schedule_node_set::schedule_node_set(const schedule_node_set &obj)
15348     : schedule_node(obj)
15349 {
15350 }
15351 
schedule_node_set(__isl_take isl_schedule_node * ptr)15352 schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
15353     : schedule_node(ptr) {}
15354 
15355 schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
15356   std::swap(this->ptr, obj.ptr);
15357   return *this;
15358 }
15359 
ctx()15360 isl::checked::ctx schedule_node_set::ctx() const {
15361   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15362 }
15363 
15364 inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
15365 {
15366   char *str = isl_schedule_node_to_str(obj.get());
15367   if (!str) {
15368     os.setstate(std::ios_base::badbit);
15369     return os;
15370   }
15371   os << str;
15372   free(str);
15373   return os;
15374 }
15375 
15376 // implementations for isl::set
manage(__isl_take isl_set * ptr)15377 set manage(__isl_take isl_set *ptr) {
15378   return set(ptr);
15379 }
manage_copy(__isl_keep isl_set * ptr)15380 set manage_copy(__isl_keep isl_set *ptr) {
15381   ptr = isl_set_copy(ptr);
15382   return set(ptr);
15383 }
15384 
set()15385 set::set()
15386     : ptr(nullptr) {}
15387 
set(const set & obj)15388 set::set(const set &obj)
15389     : ptr(nullptr)
15390 {
15391   ptr = obj.copy();
15392 }
15393 
set(__isl_take isl_set * ptr)15394 set::set(__isl_take isl_set *ptr)
15395     : ptr(ptr) {}
15396 
set(isl::checked::basic_set bset)15397 set::set(isl::checked::basic_set bset)
15398 {
15399   auto res = isl_set_from_basic_set(bset.release());
15400   ptr = res;
15401 }
15402 
set(isl::checked::point pnt)15403 set::set(isl::checked::point pnt)
15404 {
15405   auto res = isl_set_from_point(pnt.release());
15406   ptr = res;
15407 }
15408 
set(isl::checked::ctx ctx,const std::string & str)15409 set::set(isl::checked::ctx ctx, const std::string &str)
15410 {
15411   auto res = isl_set_read_from_str(ctx.release(), str.c_str());
15412   ptr = res;
15413 }
15414 
15415 set &set::operator=(set obj) {
15416   std::swap(this->ptr, obj.ptr);
15417   return *this;
15418 }
15419 
~set()15420 set::~set() {
15421   if (ptr)
15422     isl_set_free(ptr);
15423 }
15424 
copy()15425 __isl_give isl_set *set::copy() const & {
15426   return isl_set_copy(ptr);
15427 }
15428 
get()15429 __isl_keep isl_set *set::get() const {
15430   return ptr;
15431 }
15432 
release()15433 __isl_give isl_set *set::release() {
15434   isl_set *tmp = ptr;
15435   ptr = nullptr;
15436   return tmp;
15437 }
15438 
is_null()15439 bool set::is_null() const {
15440   return ptr == nullptr;
15441 }
15442 
ctx()15443 isl::checked::ctx set::ctx() const {
15444   return isl::checked::ctx(isl_set_get_ctx(ptr));
15445 }
15446 
affine_hull()15447 isl::checked::basic_set set::affine_hull() const
15448 {
15449   auto res = isl_set_affine_hull(copy());
15450   return manage(res);
15451 }
15452 
apply(isl::checked::map map)15453 isl::checked::set set::apply(isl::checked::map map) const
15454 {
15455   auto res = isl_set_apply(copy(), map.release());
15456   return manage(res);
15457 }
15458 
apply(const isl::checked::union_map & umap)15459 isl::checked::union_set set::apply(const isl::checked::union_map &umap) const
15460 {
15461   return isl::checked::union_set(*this).apply(umap);
15462 }
15463 
apply(const isl::checked::basic_map & map)15464 isl::checked::set set::apply(const isl::checked::basic_map &map) const
15465 {
15466   return this->apply(isl::checked::map(map));
15467 }
15468 
as_pw_multi_aff()15469 isl::checked::pw_multi_aff set::as_pw_multi_aff() const
15470 {
15471   auto res = isl_set_as_pw_multi_aff(copy());
15472   return manage(res);
15473 }
15474 
as_set()15475 isl::checked::set set::as_set() const
15476 {
15477   return isl::checked::union_set(*this).as_set();
15478 }
15479 
bind(isl::checked::multi_id tuple)15480 isl::checked::set set::bind(isl::checked::multi_id tuple) const
15481 {
15482   auto res = isl_set_bind(copy(), tuple.release());
15483   return manage(res);
15484 }
15485 
coalesce()15486 isl::checked::set set::coalesce() const
15487 {
15488   auto res = isl_set_coalesce(copy());
15489   return manage(res);
15490 }
15491 
complement()15492 isl::checked::set set::complement() const
15493 {
15494   auto res = isl_set_complement(copy());
15495   return manage(res);
15496 }
15497 
compute_divs()15498 isl::checked::union_set set::compute_divs() const
15499 {
15500   return isl::checked::union_set(*this).compute_divs();
15501 }
15502 
detect_equalities()15503 isl::checked::set set::detect_equalities() const
15504 {
15505   auto res = isl_set_detect_equalities(copy());
15506   return manage(res);
15507 }
15508 
dim_max_val(int pos)15509 isl::checked::val set::dim_max_val(int pos) const
15510 {
15511   auto res = isl_set_dim_max_val(copy(), pos);
15512   return manage(res);
15513 }
15514 
dim_min_val(int pos)15515 isl::checked::val set::dim_min_val(int pos) const
15516 {
15517   auto res = isl_set_dim_min_val(copy(), pos);
15518   return manage(res);
15519 }
15520 
empty(isl::checked::space space)15521 isl::checked::set set::empty(isl::checked::space space)
15522 {
15523   auto res = isl_set_empty(space.release());
15524   return manage(res);
15525 }
15526 
every_set(const std::function<boolean (isl::checked::set)> & test)15527 boolean set::every_set(const std::function<boolean(isl::checked::set)> &test) const
15528 {
15529   return isl::checked::union_set(*this).every_set(test);
15530 }
15531 
extract_set(const isl::checked::space & space)15532 isl::checked::set set::extract_set(const isl::checked::space &space) const
15533 {
15534   return isl::checked::union_set(*this).extract_set(space);
15535 }
15536 
flatten()15537 isl::checked::set set::flatten() const
15538 {
15539   auto res = isl_set_flatten(copy());
15540   return manage(res);
15541 }
15542 
foreach_basic_set(const std::function<stat (isl::checked::basic_set)> & fn)15543 stat set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
15544 {
15545   struct fn_data {
15546     std::function<stat(isl::checked::basic_set)> func;
15547   } fn_data = { fn };
15548   auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
15549     auto *data = static_cast<struct fn_data *>(arg_1);
15550     auto ret = (data->func)(manage(arg_0));
15551     return ret.release();
15552   };
15553   auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
15554   return manage(res);
15555 }
15556 
foreach_point(const std::function<stat (isl::checked::point)> & fn)15557 stat set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
15558 {
15559   struct fn_data {
15560     std::function<stat(isl::checked::point)> func;
15561   } fn_data = { fn };
15562   auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
15563     auto *data = static_cast<struct fn_data *>(arg_1);
15564     auto ret = (data->func)(manage(arg_0));
15565     return ret.release();
15566   };
15567   auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
15568   return manage(res);
15569 }
15570 
foreach_set(const std::function<stat (isl::checked::set)> & fn)15571 stat set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
15572 {
15573   return isl::checked::union_set(*this).foreach_set(fn);
15574 }
15575 
gist(isl::checked::set context)15576 isl::checked::set set::gist(isl::checked::set context) const
15577 {
15578   auto res = isl_set_gist(copy(), context.release());
15579   return manage(res);
15580 }
15581 
gist(const isl::checked::union_set & context)15582 isl::checked::union_set set::gist(const isl::checked::union_set &context) const
15583 {
15584   return isl::checked::union_set(*this).gist(context);
15585 }
15586 
gist(const isl::checked::basic_set & context)15587 isl::checked::set set::gist(const isl::checked::basic_set &context) const
15588 {
15589   return this->gist(isl::checked::set(context));
15590 }
15591 
gist(const isl::checked::point & context)15592 isl::checked::set set::gist(const isl::checked::point &context) const
15593 {
15594   return this->gist(isl::checked::set(context));
15595 }
15596 
gist_params(const isl::checked::set & set)15597 isl::checked::union_set set::gist_params(const isl::checked::set &set) const
15598 {
15599   return isl::checked::union_set(*this).gist_params(set);
15600 }
15601 
identity()15602 isl::checked::map set::identity() const
15603 {
15604   auto res = isl_set_identity(copy());
15605   return manage(res);
15606 }
15607 
indicator_function()15608 isl::checked::pw_aff set::indicator_function() const
15609 {
15610   auto res = isl_set_indicator_function(copy());
15611   return manage(res);
15612 }
15613 
insert_domain(isl::checked::space domain)15614 isl::checked::map set::insert_domain(isl::checked::space domain) const
15615 {
15616   auto res = isl_set_insert_domain(copy(), domain.release());
15617   return manage(res);
15618 }
15619 
intersect(isl::checked::set set2)15620 isl::checked::set set::intersect(isl::checked::set set2) const
15621 {
15622   auto res = isl_set_intersect(copy(), set2.release());
15623   return manage(res);
15624 }
15625 
intersect(const isl::checked::union_set & uset2)15626 isl::checked::union_set set::intersect(const isl::checked::union_set &uset2) const
15627 {
15628   return isl::checked::union_set(*this).intersect(uset2);
15629 }
15630 
intersect(const isl::checked::basic_set & set2)15631 isl::checked::set set::intersect(const isl::checked::basic_set &set2) const
15632 {
15633   return this->intersect(isl::checked::set(set2));
15634 }
15635 
intersect(const isl::checked::point & set2)15636 isl::checked::set set::intersect(const isl::checked::point &set2) const
15637 {
15638   return this->intersect(isl::checked::set(set2));
15639 }
15640 
intersect_params(isl::checked::set params)15641 isl::checked::set set::intersect_params(isl::checked::set params) const
15642 {
15643   auto res = isl_set_intersect_params(copy(), params.release());
15644   return manage(res);
15645 }
15646 
involves_locals()15647 boolean set::involves_locals() const
15648 {
15649   auto res = isl_set_involves_locals(get());
15650   return manage(res);
15651 }
15652 
is_disjoint(const isl::checked::set & set2)15653 boolean set::is_disjoint(const isl::checked::set &set2) const
15654 {
15655   auto res = isl_set_is_disjoint(get(), set2.get());
15656   return manage(res);
15657 }
15658 
is_disjoint(const isl::checked::union_set & uset2)15659 boolean set::is_disjoint(const isl::checked::union_set &uset2) const
15660 {
15661   return isl::checked::union_set(*this).is_disjoint(uset2);
15662 }
15663 
is_disjoint(const isl::checked::basic_set & set2)15664 boolean set::is_disjoint(const isl::checked::basic_set &set2) const
15665 {
15666   return this->is_disjoint(isl::checked::set(set2));
15667 }
15668 
is_disjoint(const isl::checked::point & set2)15669 boolean set::is_disjoint(const isl::checked::point &set2) const
15670 {
15671   return this->is_disjoint(isl::checked::set(set2));
15672 }
15673 
is_empty()15674 boolean set::is_empty() const
15675 {
15676   auto res = isl_set_is_empty(get());
15677   return manage(res);
15678 }
15679 
is_equal(const isl::checked::set & set2)15680 boolean set::is_equal(const isl::checked::set &set2) const
15681 {
15682   auto res = isl_set_is_equal(get(), set2.get());
15683   return manage(res);
15684 }
15685 
is_equal(const isl::checked::union_set & uset2)15686 boolean set::is_equal(const isl::checked::union_set &uset2) const
15687 {
15688   return isl::checked::union_set(*this).is_equal(uset2);
15689 }
15690 
is_equal(const isl::checked::basic_set & set2)15691 boolean set::is_equal(const isl::checked::basic_set &set2) const
15692 {
15693   return this->is_equal(isl::checked::set(set2));
15694 }
15695 
is_equal(const isl::checked::point & set2)15696 boolean set::is_equal(const isl::checked::point &set2) const
15697 {
15698   return this->is_equal(isl::checked::set(set2));
15699 }
15700 
is_singleton()15701 boolean set::is_singleton() const
15702 {
15703   auto res = isl_set_is_singleton(get());
15704   return manage(res);
15705 }
15706 
is_strict_subset(const isl::checked::set & set2)15707 boolean set::is_strict_subset(const isl::checked::set &set2) const
15708 {
15709   auto res = isl_set_is_strict_subset(get(), set2.get());
15710   return manage(res);
15711 }
15712 
is_strict_subset(const isl::checked::union_set & uset2)15713 boolean set::is_strict_subset(const isl::checked::union_set &uset2) const
15714 {
15715   return isl::checked::union_set(*this).is_strict_subset(uset2);
15716 }
15717 
is_strict_subset(const isl::checked::basic_set & set2)15718 boolean set::is_strict_subset(const isl::checked::basic_set &set2) const
15719 {
15720   return this->is_strict_subset(isl::checked::set(set2));
15721 }
15722 
is_strict_subset(const isl::checked::point & set2)15723 boolean set::is_strict_subset(const isl::checked::point &set2) const
15724 {
15725   return this->is_strict_subset(isl::checked::set(set2));
15726 }
15727 
is_subset(const isl::checked::set & set2)15728 boolean set::is_subset(const isl::checked::set &set2) const
15729 {
15730   auto res = isl_set_is_subset(get(), set2.get());
15731   return manage(res);
15732 }
15733 
is_subset(const isl::checked::union_set & uset2)15734 boolean set::is_subset(const isl::checked::union_set &uset2) const
15735 {
15736   return isl::checked::union_set(*this).is_subset(uset2);
15737 }
15738 
is_subset(const isl::checked::basic_set & set2)15739 boolean set::is_subset(const isl::checked::basic_set &set2) const
15740 {
15741   return this->is_subset(isl::checked::set(set2));
15742 }
15743 
is_subset(const isl::checked::point & set2)15744 boolean set::is_subset(const isl::checked::point &set2) const
15745 {
15746   return this->is_subset(isl::checked::set(set2));
15747 }
15748 
is_wrapping()15749 boolean set::is_wrapping() const
15750 {
15751   auto res = isl_set_is_wrapping(get());
15752   return manage(res);
15753 }
15754 
isa_set()15755 boolean set::isa_set() const
15756 {
15757   return isl::checked::union_set(*this).isa_set();
15758 }
15759 
lexmax()15760 isl::checked::set set::lexmax() const
15761 {
15762   auto res = isl_set_lexmax(copy());
15763   return manage(res);
15764 }
15765 
lexmax_pw_multi_aff()15766 isl::checked::pw_multi_aff set::lexmax_pw_multi_aff() const
15767 {
15768   auto res = isl_set_lexmax_pw_multi_aff(copy());
15769   return manage(res);
15770 }
15771 
lexmin()15772 isl::checked::set set::lexmin() const
15773 {
15774   auto res = isl_set_lexmin(copy());
15775   return manage(res);
15776 }
15777 
lexmin_pw_multi_aff()15778 isl::checked::pw_multi_aff set::lexmin_pw_multi_aff() const
15779 {
15780   auto res = isl_set_lexmin_pw_multi_aff(copy());
15781   return manage(res);
15782 }
15783 
lower_bound(isl::checked::multi_pw_aff lower)15784 isl::checked::set set::lower_bound(isl::checked::multi_pw_aff lower) const
15785 {
15786   auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
15787   return manage(res);
15788 }
15789 
lower_bound(isl::checked::multi_val lower)15790 isl::checked::set set::lower_bound(isl::checked::multi_val lower) const
15791 {
15792   auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
15793   return manage(res);
15794 }
15795 
max_multi_pw_aff()15796 isl::checked::multi_pw_aff set::max_multi_pw_aff() const
15797 {
15798   auto res = isl_set_max_multi_pw_aff(copy());
15799   return manage(res);
15800 }
15801 
max_val(const isl::checked::aff & obj)15802 isl::checked::val set::max_val(const isl::checked::aff &obj) const
15803 {
15804   auto res = isl_set_max_val(get(), obj.get());
15805   return manage(res);
15806 }
15807 
min_multi_pw_aff()15808 isl::checked::multi_pw_aff set::min_multi_pw_aff() const
15809 {
15810   auto res = isl_set_min_multi_pw_aff(copy());
15811   return manage(res);
15812 }
15813 
min_val(const isl::checked::aff & obj)15814 isl::checked::val set::min_val(const isl::checked::aff &obj) const
15815 {
15816   auto res = isl_set_min_val(get(), obj.get());
15817   return manage(res);
15818 }
15819 
params()15820 isl::checked::set set::params() const
15821 {
15822   auto res = isl_set_params(copy());
15823   return manage(res);
15824 }
15825 
plain_multi_val_if_fixed()15826 isl::checked::multi_val set::plain_multi_val_if_fixed() const
15827 {
15828   auto res = isl_set_get_plain_multi_val_if_fixed(get());
15829   return manage(res);
15830 }
15831 
get_plain_multi_val_if_fixed()15832 isl::checked::multi_val set::get_plain_multi_val_if_fixed() const
15833 {
15834   return plain_multi_val_if_fixed();
15835 }
15836 
polyhedral_hull()15837 isl::checked::basic_set set::polyhedral_hull() const
15838 {
15839   auto res = isl_set_polyhedral_hull(copy());
15840   return manage(res);
15841 }
15842 
preimage(isl::checked::multi_aff ma)15843 isl::checked::set set::preimage(isl::checked::multi_aff ma) const
15844 {
15845   auto res = isl_set_preimage_multi_aff(copy(), ma.release());
15846   return manage(res);
15847 }
15848 
preimage(isl::checked::multi_pw_aff mpa)15849 isl::checked::set set::preimage(isl::checked::multi_pw_aff mpa) const
15850 {
15851   auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
15852   return manage(res);
15853 }
15854 
preimage(isl::checked::pw_multi_aff pma)15855 isl::checked::set set::preimage(isl::checked::pw_multi_aff pma) const
15856 {
15857   auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
15858   return manage(res);
15859 }
15860 
preimage(const isl::checked::union_pw_multi_aff & upma)15861 isl::checked::union_set set::preimage(const isl::checked::union_pw_multi_aff &upma) const
15862 {
15863   return isl::checked::union_set(*this).preimage(upma);
15864 }
15865 
product(isl::checked::set set2)15866 isl::checked::set set::product(isl::checked::set set2) const
15867 {
15868   auto res = isl_set_product(copy(), set2.release());
15869   return manage(res);
15870 }
15871 
project_out_all_params()15872 isl::checked::set set::project_out_all_params() const
15873 {
15874   auto res = isl_set_project_out_all_params(copy());
15875   return manage(res);
15876 }
15877 
project_out_param(isl::checked::id id)15878 isl::checked::set set::project_out_param(isl::checked::id id) const
15879 {
15880   auto res = isl_set_project_out_param_id(copy(), id.release());
15881   return manage(res);
15882 }
15883 
project_out_param(const std::string & id)15884 isl::checked::set set::project_out_param(const std::string &id) const
15885 {
15886   return this->project_out_param(isl::checked::id(ctx(), id));
15887 }
15888 
project_out_param(isl::checked::id_list list)15889 isl::checked::set set::project_out_param(isl::checked::id_list list) const
15890 {
15891   auto res = isl_set_project_out_param_id_list(copy(), list.release());
15892   return manage(res);
15893 }
15894 
pw_multi_aff_on_domain(isl::checked::multi_val mv)15895 isl::checked::pw_multi_aff set::pw_multi_aff_on_domain(isl::checked::multi_val mv) const
15896 {
15897   auto res = isl_set_pw_multi_aff_on_domain_multi_val(copy(), mv.release());
15898   return manage(res);
15899 }
15900 
sample()15901 isl::checked::basic_set set::sample() const
15902 {
15903   auto res = isl_set_sample(copy());
15904   return manage(res);
15905 }
15906 
sample_point()15907 isl::checked::point set::sample_point() const
15908 {
15909   auto res = isl_set_sample_point(copy());
15910   return manage(res);
15911 }
15912 
simple_fixed_box_hull()15913 isl::checked::fixed_box set::simple_fixed_box_hull() const
15914 {
15915   auto res = isl_set_get_simple_fixed_box_hull(get());
15916   return manage(res);
15917 }
15918 
get_simple_fixed_box_hull()15919 isl::checked::fixed_box set::get_simple_fixed_box_hull() const
15920 {
15921   return simple_fixed_box_hull();
15922 }
15923 
space()15924 isl::checked::space set::space() const
15925 {
15926   auto res = isl_set_get_space(get());
15927   return manage(res);
15928 }
15929 
get_space()15930 isl::checked::space set::get_space() const
15931 {
15932   return space();
15933 }
15934 
stride(int pos)15935 isl::checked::val set::stride(int pos) const
15936 {
15937   auto res = isl_set_get_stride(get(), pos);
15938   return manage(res);
15939 }
15940 
get_stride(int pos)15941 isl::checked::val set::get_stride(int pos) const
15942 {
15943   return stride(pos);
15944 }
15945 
subtract(isl::checked::set set2)15946 isl::checked::set set::subtract(isl::checked::set set2) const
15947 {
15948   auto res = isl_set_subtract(copy(), set2.release());
15949   return manage(res);
15950 }
15951 
subtract(const isl::checked::union_set & uset2)15952 isl::checked::union_set set::subtract(const isl::checked::union_set &uset2) const
15953 {
15954   return isl::checked::union_set(*this).subtract(uset2);
15955 }
15956 
subtract(const isl::checked::basic_set & set2)15957 isl::checked::set set::subtract(const isl::checked::basic_set &set2) const
15958 {
15959   return this->subtract(isl::checked::set(set2));
15960 }
15961 
subtract(const isl::checked::point & set2)15962 isl::checked::set set::subtract(const isl::checked::point &set2) const
15963 {
15964   return this->subtract(isl::checked::set(set2));
15965 }
15966 
to_list()15967 isl::checked::union_set_list set::to_list() const
15968 {
15969   return isl::checked::union_set(*this).to_list();
15970 }
15971 
to_union_set()15972 isl::checked::union_set set::to_union_set() const
15973 {
15974   auto res = isl_set_to_union_set(copy());
15975   return manage(res);
15976 }
15977 
translation()15978 isl::checked::map set::translation() const
15979 {
15980   auto res = isl_set_translation(copy());
15981   return manage(res);
15982 }
15983 
unbind_params(isl::checked::multi_id tuple)15984 isl::checked::set set::unbind_params(isl::checked::multi_id tuple) const
15985 {
15986   auto res = isl_set_unbind_params(copy(), tuple.release());
15987   return manage(res);
15988 }
15989 
unbind_params_insert_domain(isl::checked::multi_id domain)15990 isl::checked::map set::unbind_params_insert_domain(isl::checked::multi_id domain) const
15991 {
15992   auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
15993   return manage(res);
15994 }
15995 
unite(isl::checked::set set2)15996 isl::checked::set set::unite(isl::checked::set set2) const
15997 {
15998   auto res = isl_set_union(copy(), set2.release());
15999   return manage(res);
16000 }
16001 
unite(const isl::checked::union_set & uset2)16002 isl::checked::union_set set::unite(const isl::checked::union_set &uset2) const
16003 {
16004   return isl::checked::union_set(*this).unite(uset2);
16005 }
16006 
unite(const isl::checked::basic_set & set2)16007 isl::checked::set set::unite(const isl::checked::basic_set &set2) const
16008 {
16009   return this->unite(isl::checked::set(set2));
16010 }
16011 
unite(const isl::checked::point & set2)16012 isl::checked::set set::unite(const isl::checked::point &set2) const
16013 {
16014   return this->unite(isl::checked::set(set2));
16015 }
16016 
universe(isl::checked::space space)16017 isl::checked::set set::universe(isl::checked::space space)
16018 {
16019   auto res = isl_set_universe(space.release());
16020   return manage(res);
16021 }
16022 
unshifted_simple_hull()16023 isl::checked::basic_set set::unshifted_simple_hull() const
16024 {
16025   auto res = isl_set_unshifted_simple_hull(copy());
16026   return manage(res);
16027 }
16028 
unwrap()16029 isl::checked::map set::unwrap() const
16030 {
16031   auto res = isl_set_unwrap(copy());
16032   return manage(res);
16033 }
16034 
upper_bound(isl::checked::multi_pw_aff upper)16035 isl::checked::set set::upper_bound(isl::checked::multi_pw_aff upper) const
16036 {
16037   auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
16038   return manage(res);
16039 }
16040 
upper_bound(isl::checked::multi_val upper)16041 isl::checked::set set::upper_bound(isl::checked::multi_val upper) const
16042 {
16043   auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
16044   return manage(res);
16045 }
16046 
16047 inline std::ostream &operator<<(std::ostream &os, const set &obj)
16048 {
16049   char *str = isl_set_to_str(obj.get());
16050   if (!str) {
16051     os.setstate(std::ios_base::badbit);
16052     return os;
16053   }
16054   os << str;
16055   free(str);
16056   return os;
16057 }
16058 
16059 // implementations for isl::space
manage(__isl_take isl_space * ptr)16060 space manage(__isl_take isl_space *ptr) {
16061   return space(ptr);
16062 }
manage_copy(__isl_keep isl_space * ptr)16063 space manage_copy(__isl_keep isl_space *ptr) {
16064   ptr = isl_space_copy(ptr);
16065   return space(ptr);
16066 }
16067 
space()16068 space::space()
16069     : ptr(nullptr) {}
16070 
space(const space & obj)16071 space::space(const space &obj)
16072     : ptr(nullptr)
16073 {
16074   ptr = obj.copy();
16075 }
16076 
space(__isl_take isl_space * ptr)16077 space::space(__isl_take isl_space *ptr)
16078     : ptr(ptr) {}
16079 
16080 space &space::operator=(space obj) {
16081   std::swap(this->ptr, obj.ptr);
16082   return *this;
16083 }
16084 
~space()16085 space::~space() {
16086   if (ptr)
16087     isl_space_free(ptr);
16088 }
16089 
copy()16090 __isl_give isl_space *space::copy() const & {
16091   return isl_space_copy(ptr);
16092 }
16093 
get()16094 __isl_keep isl_space *space::get() const {
16095   return ptr;
16096 }
16097 
release()16098 __isl_give isl_space *space::release() {
16099   isl_space *tmp = ptr;
16100   ptr = nullptr;
16101   return tmp;
16102 }
16103 
is_null()16104 bool space::is_null() const {
16105   return ptr == nullptr;
16106 }
16107 
ctx()16108 isl::checked::ctx space::ctx() const {
16109   return isl::checked::ctx(isl_space_get_ctx(ptr));
16110 }
16111 
add_named_tuple(isl::checked::id tuple_id,unsigned int dim)16112 isl::checked::space space::add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const
16113 {
16114   auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
16115   return manage(res);
16116 }
16117 
add_named_tuple(const std::string & tuple_id,unsigned int dim)16118 isl::checked::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
16119 {
16120   return this->add_named_tuple(isl::checked::id(ctx(), tuple_id), dim);
16121 }
16122 
add_unnamed_tuple(unsigned int dim)16123 isl::checked::space space::add_unnamed_tuple(unsigned int dim) const
16124 {
16125   auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
16126   return manage(res);
16127 }
16128 
curry()16129 isl::checked::space space::curry() const
16130 {
16131   auto res = isl_space_curry(copy());
16132   return manage(res);
16133 }
16134 
domain()16135 isl::checked::space space::domain() const
16136 {
16137   auto res = isl_space_domain(copy());
16138   return manage(res);
16139 }
16140 
domain_map_multi_aff()16141 isl::checked::multi_aff space::domain_map_multi_aff() const
16142 {
16143   auto res = isl_space_domain_map_multi_aff(copy());
16144   return manage(res);
16145 }
16146 
domain_map_pw_multi_aff()16147 isl::checked::pw_multi_aff space::domain_map_pw_multi_aff() const
16148 {
16149   auto res = isl_space_domain_map_pw_multi_aff(copy());
16150   return manage(res);
16151 }
16152 
domain_tuple_id()16153 isl::checked::id space::domain_tuple_id() const
16154 {
16155   auto res = isl_space_get_domain_tuple_id(get());
16156   return manage(res);
16157 }
16158 
get_domain_tuple_id()16159 isl::checked::id space::get_domain_tuple_id() const
16160 {
16161   return domain_tuple_id();
16162 }
16163 
flatten_domain()16164 isl::checked::space space::flatten_domain() const
16165 {
16166   auto res = isl_space_flatten_domain(copy());
16167   return manage(res);
16168 }
16169 
flatten_range()16170 isl::checked::space space::flatten_range() const
16171 {
16172   auto res = isl_space_flatten_range(copy());
16173   return manage(res);
16174 }
16175 
has_domain_tuple_id()16176 boolean space::has_domain_tuple_id() const
16177 {
16178   auto res = isl_space_has_domain_tuple_id(get());
16179   return manage(res);
16180 }
16181 
has_range_tuple_id()16182 boolean space::has_range_tuple_id() const
16183 {
16184   auto res = isl_space_has_range_tuple_id(get());
16185   return manage(res);
16186 }
16187 
identity_multi_aff_on_domain()16188 isl::checked::multi_aff space::identity_multi_aff_on_domain() const
16189 {
16190   auto res = isl_space_identity_multi_aff_on_domain(copy());
16191   return manage(res);
16192 }
16193 
identity_multi_pw_aff_on_domain()16194 isl::checked::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
16195 {
16196   auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
16197   return manage(res);
16198 }
16199 
identity_pw_multi_aff_on_domain()16200 isl::checked::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
16201 {
16202   auto res = isl_space_identity_pw_multi_aff_on_domain(copy());
16203   return manage(res);
16204 }
16205 
is_equal(const isl::checked::space & space2)16206 boolean space::is_equal(const isl::checked::space &space2) const
16207 {
16208   auto res = isl_space_is_equal(get(), space2.get());
16209   return manage(res);
16210 }
16211 
is_wrapping()16212 boolean space::is_wrapping() const
16213 {
16214   auto res = isl_space_is_wrapping(get());
16215   return manage(res);
16216 }
16217 
map_from_set()16218 isl::checked::space space::map_from_set() const
16219 {
16220   auto res = isl_space_map_from_set(copy());
16221   return manage(res);
16222 }
16223 
multi_aff(isl::checked::aff_list list)16224 isl::checked::multi_aff space::multi_aff(isl::checked::aff_list list) const
16225 {
16226   auto res = isl_space_multi_aff(copy(), list.release());
16227   return manage(res);
16228 }
16229 
multi_aff_on_domain(isl::checked::multi_val mv)16230 isl::checked::multi_aff space::multi_aff_on_domain(isl::checked::multi_val mv) const
16231 {
16232   auto res = isl_space_multi_aff_on_domain_multi_val(copy(), mv.release());
16233   return manage(res);
16234 }
16235 
multi_id(isl::checked::id_list list)16236 isl::checked::multi_id space::multi_id(isl::checked::id_list list) const
16237 {
16238   auto res = isl_space_multi_id(copy(), list.release());
16239   return manage(res);
16240 }
16241 
multi_pw_aff(isl::checked::pw_aff_list list)16242 isl::checked::multi_pw_aff space::multi_pw_aff(isl::checked::pw_aff_list list) const
16243 {
16244   auto res = isl_space_multi_pw_aff(copy(), list.release());
16245   return manage(res);
16246 }
16247 
multi_union_pw_aff(isl::checked::union_pw_aff_list list)16248 isl::checked::multi_union_pw_aff space::multi_union_pw_aff(isl::checked::union_pw_aff_list list) const
16249 {
16250   auto res = isl_space_multi_union_pw_aff(copy(), list.release());
16251   return manage(res);
16252 }
16253 
multi_val(isl::checked::val_list list)16254 isl::checked::multi_val space::multi_val(isl::checked::val_list list) const
16255 {
16256   auto res = isl_space_multi_val(copy(), list.release());
16257   return manage(res);
16258 }
16259 
params()16260 isl::checked::space space::params() const
16261 {
16262   auto res = isl_space_params(copy());
16263   return manage(res);
16264 }
16265 
product(isl::checked::space right)16266 isl::checked::space space::product(isl::checked::space right) const
16267 {
16268   auto res = isl_space_product(copy(), right.release());
16269   return manage(res);
16270 }
16271 
range()16272 isl::checked::space space::range() const
16273 {
16274   auto res = isl_space_range(copy());
16275   return manage(res);
16276 }
16277 
range_map_multi_aff()16278 isl::checked::multi_aff space::range_map_multi_aff() const
16279 {
16280   auto res = isl_space_range_map_multi_aff(copy());
16281   return manage(res);
16282 }
16283 
range_map_pw_multi_aff()16284 isl::checked::pw_multi_aff space::range_map_pw_multi_aff() const
16285 {
16286   auto res = isl_space_range_map_pw_multi_aff(copy());
16287   return manage(res);
16288 }
16289 
range_reverse()16290 isl::checked::space space::range_reverse() const
16291 {
16292   auto res = isl_space_range_reverse(copy());
16293   return manage(res);
16294 }
16295 
range_tuple_id()16296 isl::checked::id space::range_tuple_id() const
16297 {
16298   auto res = isl_space_get_range_tuple_id(get());
16299   return manage(res);
16300 }
16301 
get_range_tuple_id()16302 isl::checked::id space::get_range_tuple_id() const
16303 {
16304   return range_tuple_id();
16305 }
16306 
reverse()16307 isl::checked::space space::reverse() const
16308 {
16309   auto res = isl_space_reverse(copy());
16310   return manage(res);
16311 }
16312 
set_domain_tuple(isl::checked::id id)16313 isl::checked::space space::set_domain_tuple(isl::checked::id id) const
16314 {
16315   auto res = isl_space_set_domain_tuple_id(copy(), id.release());
16316   return manage(res);
16317 }
16318 
set_domain_tuple(const std::string & id)16319 isl::checked::space space::set_domain_tuple(const std::string &id) const
16320 {
16321   return this->set_domain_tuple(isl::checked::id(ctx(), id));
16322 }
16323 
set_range_tuple(isl::checked::id id)16324 isl::checked::space space::set_range_tuple(isl::checked::id id) const
16325 {
16326   auto res = isl_space_set_range_tuple_id(copy(), id.release());
16327   return manage(res);
16328 }
16329 
set_range_tuple(const std::string & id)16330 isl::checked::space space::set_range_tuple(const std::string &id) const
16331 {
16332   return this->set_range_tuple(isl::checked::id(ctx(), id));
16333 }
16334 
uncurry()16335 isl::checked::space space::uncurry() const
16336 {
16337   auto res = isl_space_uncurry(copy());
16338   return manage(res);
16339 }
16340 
unit(isl::checked::ctx ctx)16341 isl::checked::space space::unit(isl::checked::ctx ctx)
16342 {
16343   auto res = isl_space_unit(ctx.release());
16344   return manage(res);
16345 }
16346 
universe_map()16347 isl::checked::map space::universe_map() const
16348 {
16349   auto res = isl_space_universe_map(copy());
16350   return manage(res);
16351 }
16352 
universe_set()16353 isl::checked::set space::universe_set() const
16354 {
16355   auto res = isl_space_universe_set(copy());
16356   return manage(res);
16357 }
16358 
unwrap()16359 isl::checked::space space::unwrap() const
16360 {
16361   auto res = isl_space_unwrap(copy());
16362   return manage(res);
16363 }
16364 
wrap()16365 isl::checked::space space::wrap() const
16366 {
16367   auto res = isl_space_wrap(copy());
16368   return manage(res);
16369 }
16370 
zero_aff_on_domain()16371 isl::checked::aff space::zero_aff_on_domain() const
16372 {
16373   auto res = isl_space_zero_aff_on_domain(copy());
16374   return manage(res);
16375 }
16376 
zero_multi_aff()16377 isl::checked::multi_aff space::zero_multi_aff() const
16378 {
16379   auto res = isl_space_zero_multi_aff(copy());
16380   return manage(res);
16381 }
16382 
zero_multi_pw_aff()16383 isl::checked::multi_pw_aff space::zero_multi_pw_aff() const
16384 {
16385   auto res = isl_space_zero_multi_pw_aff(copy());
16386   return manage(res);
16387 }
16388 
zero_multi_union_pw_aff()16389 isl::checked::multi_union_pw_aff space::zero_multi_union_pw_aff() const
16390 {
16391   auto res = isl_space_zero_multi_union_pw_aff(copy());
16392   return manage(res);
16393 }
16394 
zero_multi_val()16395 isl::checked::multi_val space::zero_multi_val() const
16396 {
16397   auto res = isl_space_zero_multi_val(copy());
16398   return manage(res);
16399 }
16400 
16401 inline std::ostream &operator<<(std::ostream &os, const space &obj)
16402 {
16403   char *str = isl_space_to_str(obj.get());
16404   if (!str) {
16405     os.setstate(std::ios_base::badbit);
16406     return os;
16407   }
16408   os << str;
16409   free(str);
16410   return os;
16411 }
16412 
16413 // implementations for isl::union_access_info
manage(__isl_take isl_union_access_info * ptr)16414 union_access_info manage(__isl_take isl_union_access_info *ptr) {
16415   return union_access_info(ptr);
16416 }
manage_copy(__isl_keep isl_union_access_info * ptr)16417 union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
16418   ptr = isl_union_access_info_copy(ptr);
16419   return union_access_info(ptr);
16420 }
16421 
union_access_info()16422 union_access_info::union_access_info()
16423     : ptr(nullptr) {}
16424 
union_access_info(const union_access_info & obj)16425 union_access_info::union_access_info(const union_access_info &obj)
16426     : ptr(nullptr)
16427 {
16428   ptr = obj.copy();
16429 }
16430 
union_access_info(__isl_take isl_union_access_info * ptr)16431 union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
16432     : ptr(ptr) {}
16433 
union_access_info(isl::checked::union_map sink)16434 union_access_info::union_access_info(isl::checked::union_map sink)
16435 {
16436   auto res = isl_union_access_info_from_sink(sink.release());
16437   ptr = res;
16438 }
16439 
16440 union_access_info &union_access_info::operator=(union_access_info obj) {
16441   std::swap(this->ptr, obj.ptr);
16442   return *this;
16443 }
16444 
~union_access_info()16445 union_access_info::~union_access_info() {
16446   if (ptr)
16447     isl_union_access_info_free(ptr);
16448 }
16449 
copy()16450 __isl_give isl_union_access_info *union_access_info::copy() const & {
16451   return isl_union_access_info_copy(ptr);
16452 }
16453 
get()16454 __isl_keep isl_union_access_info *union_access_info::get() const {
16455   return ptr;
16456 }
16457 
release()16458 __isl_give isl_union_access_info *union_access_info::release() {
16459   isl_union_access_info *tmp = ptr;
16460   ptr = nullptr;
16461   return tmp;
16462 }
16463 
is_null()16464 bool union_access_info::is_null() const {
16465   return ptr == nullptr;
16466 }
16467 
ctx()16468 isl::checked::ctx union_access_info::ctx() const {
16469   return isl::checked::ctx(isl_union_access_info_get_ctx(ptr));
16470 }
16471 
compute_flow()16472 isl::checked::union_flow union_access_info::compute_flow() const
16473 {
16474   auto res = isl_union_access_info_compute_flow(copy());
16475   return manage(res);
16476 }
16477 
set_kill(isl::checked::union_map kill)16478 isl::checked::union_access_info union_access_info::set_kill(isl::checked::union_map kill) const
16479 {
16480   auto res = isl_union_access_info_set_kill(copy(), kill.release());
16481   return manage(res);
16482 }
16483 
set_may_source(isl::checked::union_map may_source)16484 isl::checked::union_access_info union_access_info::set_may_source(isl::checked::union_map may_source) const
16485 {
16486   auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
16487   return manage(res);
16488 }
16489 
set_must_source(isl::checked::union_map must_source)16490 isl::checked::union_access_info union_access_info::set_must_source(isl::checked::union_map must_source) const
16491 {
16492   auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
16493   return manage(res);
16494 }
16495 
set_schedule(isl::checked::schedule schedule)16496 isl::checked::union_access_info union_access_info::set_schedule(isl::checked::schedule schedule) const
16497 {
16498   auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
16499   return manage(res);
16500 }
16501 
set_schedule_map(isl::checked::union_map schedule_map)16502 isl::checked::union_access_info union_access_info::set_schedule_map(isl::checked::union_map schedule_map) const
16503 {
16504   auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
16505   return manage(res);
16506 }
16507 
16508 inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
16509 {
16510   char *str = isl_union_access_info_to_str(obj.get());
16511   if (!str) {
16512     os.setstate(std::ios_base::badbit);
16513     return os;
16514   }
16515   os << str;
16516   free(str);
16517   return os;
16518 }
16519 
16520 // implementations for isl::union_flow
manage(__isl_take isl_union_flow * ptr)16521 union_flow manage(__isl_take isl_union_flow *ptr) {
16522   return union_flow(ptr);
16523 }
manage_copy(__isl_keep isl_union_flow * ptr)16524 union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
16525   ptr = isl_union_flow_copy(ptr);
16526   return union_flow(ptr);
16527 }
16528 
union_flow()16529 union_flow::union_flow()
16530     : ptr(nullptr) {}
16531 
union_flow(const union_flow & obj)16532 union_flow::union_flow(const union_flow &obj)
16533     : ptr(nullptr)
16534 {
16535   ptr = obj.copy();
16536 }
16537 
union_flow(__isl_take isl_union_flow * ptr)16538 union_flow::union_flow(__isl_take isl_union_flow *ptr)
16539     : ptr(ptr) {}
16540 
16541 union_flow &union_flow::operator=(union_flow obj) {
16542   std::swap(this->ptr, obj.ptr);
16543   return *this;
16544 }
16545 
~union_flow()16546 union_flow::~union_flow() {
16547   if (ptr)
16548     isl_union_flow_free(ptr);
16549 }
16550 
copy()16551 __isl_give isl_union_flow *union_flow::copy() const & {
16552   return isl_union_flow_copy(ptr);
16553 }
16554 
get()16555 __isl_keep isl_union_flow *union_flow::get() const {
16556   return ptr;
16557 }
16558 
release()16559 __isl_give isl_union_flow *union_flow::release() {
16560   isl_union_flow *tmp = ptr;
16561   ptr = nullptr;
16562   return tmp;
16563 }
16564 
is_null()16565 bool union_flow::is_null() const {
16566   return ptr == nullptr;
16567 }
16568 
ctx()16569 isl::checked::ctx union_flow::ctx() const {
16570   return isl::checked::ctx(isl_union_flow_get_ctx(ptr));
16571 }
16572 
full_may_dependence()16573 isl::checked::union_map union_flow::full_may_dependence() const
16574 {
16575   auto res = isl_union_flow_get_full_may_dependence(get());
16576   return manage(res);
16577 }
16578 
get_full_may_dependence()16579 isl::checked::union_map union_flow::get_full_may_dependence() const
16580 {
16581   return full_may_dependence();
16582 }
16583 
full_must_dependence()16584 isl::checked::union_map union_flow::full_must_dependence() const
16585 {
16586   auto res = isl_union_flow_get_full_must_dependence(get());
16587   return manage(res);
16588 }
16589 
get_full_must_dependence()16590 isl::checked::union_map union_flow::get_full_must_dependence() const
16591 {
16592   return full_must_dependence();
16593 }
16594 
may_dependence()16595 isl::checked::union_map union_flow::may_dependence() const
16596 {
16597   auto res = isl_union_flow_get_may_dependence(get());
16598   return manage(res);
16599 }
16600 
get_may_dependence()16601 isl::checked::union_map union_flow::get_may_dependence() const
16602 {
16603   return may_dependence();
16604 }
16605 
may_no_source()16606 isl::checked::union_map union_flow::may_no_source() const
16607 {
16608   auto res = isl_union_flow_get_may_no_source(get());
16609   return manage(res);
16610 }
16611 
get_may_no_source()16612 isl::checked::union_map union_flow::get_may_no_source() const
16613 {
16614   return may_no_source();
16615 }
16616 
must_dependence()16617 isl::checked::union_map union_flow::must_dependence() const
16618 {
16619   auto res = isl_union_flow_get_must_dependence(get());
16620   return manage(res);
16621 }
16622 
get_must_dependence()16623 isl::checked::union_map union_flow::get_must_dependence() const
16624 {
16625   return must_dependence();
16626 }
16627 
must_no_source()16628 isl::checked::union_map union_flow::must_no_source() const
16629 {
16630   auto res = isl_union_flow_get_must_no_source(get());
16631   return manage(res);
16632 }
16633 
get_must_no_source()16634 isl::checked::union_map union_flow::get_must_no_source() const
16635 {
16636   return must_no_source();
16637 }
16638 
16639 inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
16640 {
16641   char *str = isl_union_flow_to_str(obj.get());
16642   if (!str) {
16643     os.setstate(std::ios_base::badbit);
16644     return os;
16645   }
16646   os << str;
16647   free(str);
16648   return os;
16649 }
16650 
16651 // implementations for isl::union_map
manage(__isl_take isl_union_map * ptr)16652 union_map manage(__isl_take isl_union_map *ptr) {
16653   return union_map(ptr);
16654 }
manage_copy(__isl_keep isl_union_map * ptr)16655 union_map manage_copy(__isl_keep isl_union_map *ptr) {
16656   ptr = isl_union_map_copy(ptr);
16657   return union_map(ptr);
16658 }
16659 
union_map()16660 union_map::union_map()
16661     : ptr(nullptr) {}
16662 
union_map(const union_map & obj)16663 union_map::union_map(const union_map &obj)
16664     : ptr(nullptr)
16665 {
16666   ptr = obj.copy();
16667 }
16668 
union_map(__isl_take isl_union_map * ptr)16669 union_map::union_map(__isl_take isl_union_map *ptr)
16670     : ptr(ptr) {}
16671 
union_map(isl::checked::basic_map bmap)16672 union_map::union_map(isl::checked::basic_map bmap)
16673 {
16674   auto res = isl_union_map_from_basic_map(bmap.release());
16675   ptr = res;
16676 }
16677 
union_map(isl::checked::map map)16678 union_map::union_map(isl::checked::map map)
16679 {
16680   auto res = isl_union_map_from_map(map.release());
16681   ptr = res;
16682 }
16683 
union_map(isl::checked::ctx ctx,const std::string & str)16684 union_map::union_map(isl::checked::ctx ctx, const std::string &str)
16685 {
16686   auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
16687   ptr = res;
16688 }
16689 
16690 union_map &union_map::operator=(union_map obj) {
16691   std::swap(this->ptr, obj.ptr);
16692   return *this;
16693 }
16694 
~union_map()16695 union_map::~union_map() {
16696   if (ptr)
16697     isl_union_map_free(ptr);
16698 }
16699 
copy()16700 __isl_give isl_union_map *union_map::copy() const & {
16701   return isl_union_map_copy(ptr);
16702 }
16703 
get()16704 __isl_keep isl_union_map *union_map::get() const {
16705   return ptr;
16706 }
16707 
release()16708 __isl_give isl_union_map *union_map::release() {
16709   isl_union_map *tmp = ptr;
16710   ptr = nullptr;
16711   return tmp;
16712 }
16713 
is_null()16714 bool union_map::is_null() const {
16715   return ptr == nullptr;
16716 }
16717 
ctx()16718 isl::checked::ctx union_map::ctx() const {
16719   return isl::checked::ctx(isl_union_map_get_ctx(ptr));
16720 }
16721 
affine_hull()16722 isl::checked::union_map union_map::affine_hull() const
16723 {
16724   auto res = isl_union_map_affine_hull(copy());
16725   return manage(res);
16726 }
16727 
apply_domain(isl::checked::union_map umap2)16728 isl::checked::union_map union_map::apply_domain(isl::checked::union_map umap2) const
16729 {
16730   auto res = isl_union_map_apply_domain(copy(), umap2.release());
16731   return manage(res);
16732 }
16733 
apply_range(isl::checked::union_map umap2)16734 isl::checked::union_map union_map::apply_range(isl::checked::union_map umap2) const
16735 {
16736   auto res = isl_union_map_apply_range(copy(), umap2.release());
16737   return manage(res);
16738 }
16739 
as_map()16740 isl::checked::map union_map::as_map() const
16741 {
16742   auto res = isl_union_map_as_map(copy());
16743   return manage(res);
16744 }
16745 
as_multi_union_pw_aff()16746 isl::checked::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
16747 {
16748   auto res = isl_union_map_as_multi_union_pw_aff(copy());
16749   return manage(res);
16750 }
16751 
as_union_pw_multi_aff()16752 isl::checked::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
16753 {
16754   auto res = isl_union_map_as_union_pw_multi_aff(copy());
16755   return manage(res);
16756 }
16757 
bind_range(isl::checked::multi_id tuple)16758 isl::checked::union_set union_map::bind_range(isl::checked::multi_id tuple) const
16759 {
16760   auto res = isl_union_map_bind_range(copy(), tuple.release());
16761   return manage(res);
16762 }
16763 
coalesce()16764 isl::checked::union_map union_map::coalesce() const
16765 {
16766   auto res = isl_union_map_coalesce(copy());
16767   return manage(res);
16768 }
16769 
compute_divs()16770 isl::checked::union_map union_map::compute_divs() const
16771 {
16772   auto res = isl_union_map_compute_divs(copy());
16773   return manage(res);
16774 }
16775 
curry()16776 isl::checked::union_map union_map::curry() const
16777 {
16778   auto res = isl_union_map_curry(copy());
16779   return manage(res);
16780 }
16781 
deltas()16782 isl::checked::union_set union_map::deltas() const
16783 {
16784   auto res = isl_union_map_deltas(copy());
16785   return manage(res);
16786 }
16787 
detect_equalities()16788 isl::checked::union_map union_map::detect_equalities() const
16789 {
16790   auto res = isl_union_map_detect_equalities(copy());
16791   return manage(res);
16792 }
16793 
domain()16794 isl::checked::union_set union_map::domain() const
16795 {
16796   auto res = isl_union_map_domain(copy());
16797   return manage(res);
16798 }
16799 
domain_factor_domain()16800 isl::checked::union_map union_map::domain_factor_domain() const
16801 {
16802   auto res = isl_union_map_domain_factor_domain(copy());
16803   return manage(res);
16804 }
16805 
domain_factor_range()16806 isl::checked::union_map union_map::domain_factor_range() const
16807 {
16808   auto res = isl_union_map_domain_factor_range(copy());
16809   return manage(res);
16810 }
16811 
domain_map()16812 isl::checked::union_map union_map::domain_map() const
16813 {
16814   auto res = isl_union_map_domain_map(copy());
16815   return manage(res);
16816 }
16817 
domain_map_union_pw_multi_aff()16818 isl::checked::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
16819 {
16820   auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
16821   return manage(res);
16822 }
16823 
domain_product(isl::checked::union_map umap2)16824 isl::checked::union_map union_map::domain_product(isl::checked::union_map umap2) const
16825 {
16826   auto res = isl_union_map_domain_product(copy(), umap2.release());
16827   return manage(res);
16828 }
16829 
empty(isl::checked::ctx ctx)16830 isl::checked::union_map union_map::empty(isl::checked::ctx ctx)
16831 {
16832   auto res = isl_union_map_empty_ctx(ctx.release());
16833   return manage(res);
16834 }
16835 
eq_at(isl::checked::multi_union_pw_aff mupa)16836 isl::checked::union_map union_map::eq_at(isl::checked::multi_union_pw_aff mupa) const
16837 {
16838   auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
16839   return manage(res);
16840 }
16841 
every_map(const std::function<boolean (isl::checked::map)> & test)16842 boolean union_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
16843 {
16844   struct test_data {
16845     std::function<boolean(isl::checked::map)> func;
16846   } test_data = { test };
16847   auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
16848     auto *data = static_cast<struct test_data *>(arg_1);
16849     auto ret = (data->func)(manage_copy(arg_0));
16850     return ret.release();
16851   };
16852   auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
16853   return manage(res);
16854 }
16855 
extract_map(isl::checked::space space)16856 isl::checked::map union_map::extract_map(isl::checked::space space) const
16857 {
16858   auto res = isl_union_map_extract_map(get(), space.release());
16859   return manage(res);
16860 }
16861 
factor_domain()16862 isl::checked::union_map union_map::factor_domain() const
16863 {
16864   auto res = isl_union_map_factor_domain(copy());
16865   return manage(res);
16866 }
16867 
factor_range()16868 isl::checked::union_map union_map::factor_range() const
16869 {
16870   auto res = isl_union_map_factor_range(copy());
16871   return manage(res);
16872 }
16873 
fixed_power(isl::checked::val exp)16874 isl::checked::union_map union_map::fixed_power(isl::checked::val exp) const
16875 {
16876   auto res = isl_union_map_fixed_power_val(copy(), exp.release());
16877   return manage(res);
16878 }
16879 
fixed_power(long exp)16880 isl::checked::union_map union_map::fixed_power(long exp) const
16881 {
16882   return this->fixed_power(isl::checked::val(ctx(), exp));
16883 }
16884 
foreach_map(const std::function<stat (isl::checked::map)> & fn)16885 stat union_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
16886 {
16887   struct fn_data {
16888     std::function<stat(isl::checked::map)> func;
16889   } fn_data = { fn };
16890   auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
16891     auto *data = static_cast<struct fn_data *>(arg_1);
16892     auto ret = (data->func)(manage(arg_0));
16893     return ret.release();
16894   };
16895   auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
16896   return manage(res);
16897 }
16898 
from(isl::checked::multi_union_pw_aff mupa)16899 isl::checked::union_map union_map::from(isl::checked::multi_union_pw_aff mupa)
16900 {
16901   auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
16902   return manage(res);
16903 }
16904 
from(isl::checked::union_pw_multi_aff upma)16905 isl::checked::union_map union_map::from(isl::checked::union_pw_multi_aff upma)
16906 {
16907   auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
16908   return manage(res);
16909 }
16910 
from_domain(isl::checked::union_set uset)16911 isl::checked::union_map union_map::from_domain(isl::checked::union_set uset)
16912 {
16913   auto res = isl_union_map_from_domain(uset.release());
16914   return manage(res);
16915 }
16916 
from_domain_and_range(isl::checked::union_set domain,isl::checked::union_set range)16917 isl::checked::union_map union_map::from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range)
16918 {
16919   auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
16920   return manage(res);
16921 }
16922 
from_range(isl::checked::union_set uset)16923 isl::checked::union_map union_map::from_range(isl::checked::union_set uset)
16924 {
16925   auto res = isl_union_map_from_range(uset.release());
16926   return manage(res);
16927 }
16928 
gist(isl::checked::union_map context)16929 isl::checked::union_map union_map::gist(isl::checked::union_map context) const
16930 {
16931   auto res = isl_union_map_gist(copy(), context.release());
16932   return manage(res);
16933 }
16934 
gist_domain(isl::checked::union_set uset)16935 isl::checked::union_map union_map::gist_domain(isl::checked::union_set uset) const
16936 {
16937   auto res = isl_union_map_gist_domain(copy(), uset.release());
16938   return manage(res);
16939 }
16940 
gist_params(isl::checked::set set)16941 isl::checked::union_map union_map::gist_params(isl::checked::set set) const
16942 {
16943   auto res = isl_union_map_gist_params(copy(), set.release());
16944   return manage(res);
16945 }
16946 
gist_range(isl::checked::union_set uset)16947 isl::checked::union_map union_map::gist_range(isl::checked::union_set uset) const
16948 {
16949   auto res = isl_union_map_gist_range(copy(), uset.release());
16950   return manage(res);
16951 }
16952 
intersect(isl::checked::union_map umap2)16953 isl::checked::union_map union_map::intersect(isl::checked::union_map umap2) const
16954 {
16955   auto res = isl_union_map_intersect(copy(), umap2.release());
16956   return manage(res);
16957 }
16958 
intersect_domain(isl::checked::space space)16959 isl::checked::union_map union_map::intersect_domain(isl::checked::space space) const
16960 {
16961   auto res = isl_union_map_intersect_domain_space(copy(), space.release());
16962   return manage(res);
16963 }
16964 
intersect_domain(isl::checked::union_set uset)16965 isl::checked::union_map union_map::intersect_domain(isl::checked::union_set uset) const
16966 {
16967   auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
16968   return manage(res);
16969 }
16970 
intersect_domain_factor_domain(isl::checked::union_map factor)16971 isl::checked::union_map union_map::intersect_domain_factor_domain(isl::checked::union_map factor) const
16972 {
16973   auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
16974   return manage(res);
16975 }
16976 
intersect_domain_factor_range(isl::checked::union_map factor)16977 isl::checked::union_map union_map::intersect_domain_factor_range(isl::checked::union_map factor) const
16978 {
16979   auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
16980   return manage(res);
16981 }
16982 
intersect_params(isl::checked::set set)16983 isl::checked::union_map union_map::intersect_params(isl::checked::set set) const
16984 {
16985   auto res = isl_union_map_intersect_params(copy(), set.release());
16986   return manage(res);
16987 }
16988 
intersect_range(isl::checked::space space)16989 isl::checked::union_map union_map::intersect_range(isl::checked::space space) const
16990 {
16991   auto res = isl_union_map_intersect_range_space(copy(), space.release());
16992   return manage(res);
16993 }
16994 
intersect_range(isl::checked::union_set uset)16995 isl::checked::union_map union_map::intersect_range(isl::checked::union_set uset) const
16996 {
16997   auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
16998   return manage(res);
16999 }
17000 
intersect_range_factor_domain(isl::checked::union_map factor)17001 isl::checked::union_map union_map::intersect_range_factor_domain(isl::checked::union_map factor) const
17002 {
17003   auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
17004   return manage(res);
17005 }
17006 
intersect_range_factor_range(isl::checked::union_map factor)17007 isl::checked::union_map union_map::intersect_range_factor_range(isl::checked::union_map factor) const
17008 {
17009   auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
17010   return manage(res);
17011 }
17012 
is_bijective()17013 boolean union_map::is_bijective() const
17014 {
17015   auto res = isl_union_map_is_bijective(get());
17016   return manage(res);
17017 }
17018 
is_disjoint(const isl::checked::union_map & umap2)17019 boolean union_map::is_disjoint(const isl::checked::union_map &umap2) const
17020 {
17021   auto res = isl_union_map_is_disjoint(get(), umap2.get());
17022   return manage(res);
17023 }
17024 
is_empty()17025 boolean union_map::is_empty() const
17026 {
17027   auto res = isl_union_map_is_empty(get());
17028   return manage(res);
17029 }
17030 
is_equal(const isl::checked::union_map & umap2)17031 boolean union_map::is_equal(const isl::checked::union_map &umap2) const
17032 {
17033   auto res = isl_union_map_is_equal(get(), umap2.get());
17034   return manage(res);
17035 }
17036 
is_injective()17037 boolean union_map::is_injective() const
17038 {
17039   auto res = isl_union_map_is_injective(get());
17040   return manage(res);
17041 }
17042 
is_single_valued()17043 boolean union_map::is_single_valued() const
17044 {
17045   auto res = isl_union_map_is_single_valued(get());
17046   return manage(res);
17047 }
17048 
is_strict_subset(const isl::checked::union_map & umap2)17049 boolean union_map::is_strict_subset(const isl::checked::union_map &umap2) const
17050 {
17051   auto res = isl_union_map_is_strict_subset(get(), umap2.get());
17052   return manage(res);
17053 }
17054 
is_subset(const isl::checked::union_map & umap2)17055 boolean union_map::is_subset(const isl::checked::union_map &umap2) const
17056 {
17057   auto res = isl_union_map_is_subset(get(), umap2.get());
17058   return manage(res);
17059 }
17060 
isa_map()17061 boolean union_map::isa_map() const
17062 {
17063   auto res = isl_union_map_isa_map(get());
17064   return manage(res);
17065 }
17066 
lexmax()17067 isl::checked::union_map union_map::lexmax() const
17068 {
17069   auto res = isl_union_map_lexmax(copy());
17070   return manage(res);
17071 }
17072 
lexmin()17073 isl::checked::union_map union_map::lexmin() const
17074 {
17075   auto res = isl_union_map_lexmin(copy());
17076   return manage(res);
17077 }
17078 
polyhedral_hull()17079 isl::checked::union_map union_map::polyhedral_hull() const
17080 {
17081   auto res = isl_union_map_polyhedral_hull(copy());
17082   return manage(res);
17083 }
17084 
preimage_domain(isl::checked::multi_aff ma)17085 isl::checked::union_map union_map::preimage_domain(isl::checked::multi_aff ma) const
17086 {
17087   auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
17088   return manage(res);
17089 }
17090 
preimage_domain(isl::checked::multi_pw_aff mpa)17091 isl::checked::union_map union_map::preimage_domain(isl::checked::multi_pw_aff mpa) const
17092 {
17093   auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
17094   return manage(res);
17095 }
17096 
preimage_domain(isl::checked::pw_multi_aff pma)17097 isl::checked::union_map union_map::preimage_domain(isl::checked::pw_multi_aff pma) const
17098 {
17099   auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
17100   return manage(res);
17101 }
17102 
preimage_domain(isl::checked::union_pw_multi_aff upma)17103 isl::checked::union_map union_map::preimage_domain(isl::checked::union_pw_multi_aff upma) const
17104 {
17105   auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
17106   return manage(res);
17107 }
17108 
preimage_range(isl::checked::multi_aff ma)17109 isl::checked::union_map union_map::preimage_range(isl::checked::multi_aff ma) const
17110 {
17111   auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
17112   return manage(res);
17113 }
17114 
preimage_range(isl::checked::pw_multi_aff pma)17115 isl::checked::union_map union_map::preimage_range(isl::checked::pw_multi_aff pma) const
17116 {
17117   auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
17118   return manage(res);
17119 }
17120 
preimage_range(isl::checked::union_pw_multi_aff upma)17121 isl::checked::union_map union_map::preimage_range(isl::checked::union_pw_multi_aff upma) const
17122 {
17123   auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
17124   return manage(res);
17125 }
17126 
product(isl::checked::union_map umap2)17127 isl::checked::union_map union_map::product(isl::checked::union_map umap2) const
17128 {
17129   auto res = isl_union_map_product(copy(), umap2.release());
17130   return manage(res);
17131 }
17132 
project_out_all_params()17133 isl::checked::union_map union_map::project_out_all_params() const
17134 {
17135   auto res = isl_union_map_project_out_all_params(copy());
17136   return manage(res);
17137 }
17138 
range()17139 isl::checked::union_set union_map::range() const
17140 {
17141   auto res = isl_union_map_range(copy());
17142   return manage(res);
17143 }
17144 
range_factor_domain()17145 isl::checked::union_map union_map::range_factor_domain() const
17146 {
17147   auto res = isl_union_map_range_factor_domain(copy());
17148   return manage(res);
17149 }
17150 
range_factor_range()17151 isl::checked::union_map union_map::range_factor_range() const
17152 {
17153   auto res = isl_union_map_range_factor_range(copy());
17154   return manage(res);
17155 }
17156 
range_map()17157 isl::checked::union_map union_map::range_map() const
17158 {
17159   auto res = isl_union_map_range_map(copy());
17160   return manage(res);
17161 }
17162 
range_product(isl::checked::union_map umap2)17163 isl::checked::union_map union_map::range_product(isl::checked::union_map umap2) const
17164 {
17165   auto res = isl_union_map_range_product(copy(), umap2.release());
17166   return manage(res);
17167 }
17168 
range_reverse()17169 isl::checked::union_map union_map::range_reverse() const
17170 {
17171   auto res = isl_union_map_range_reverse(copy());
17172   return manage(res);
17173 }
17174 
reverse()17175 isl::checked::union_map union_map::reverse() const
17176 {
17177   auto res = isl_union_map_reverse(copy());
17178   return manage(res);
17179 }
17180 
space()17181 isl::checked::space union_map::space() const
17182 {
17183   auto res = isl_union_map_get_space(get());
17184   return manage(res);
17185 }
17186 
get_space()17187 isl::checked::space union_map::get_space() const
17188 {
17189   return space();
17190 }
17191 
subtract(isl::checked::union_map umap2)17192 isl::checked::union_map union_map::subtract(isl::checked::union_map umap2) const
17193 {
17194   auto res = isl_union_map_subtract(copy(), umap2.release());
17195   return manage(res);
17196 }
17197 
subtract_domain(isl::checked::union_set dom)17198 isl::checked::union_map union_map::subtract_domain(isl::checked::union_set dom) const
17199 {
17200   auto res = isl_union_map_subtract_domain(copy(), dom.release());
17201   return manage(res);
17202 }
17203 
subtract_range(isl::checked::union_set dom)17204 isl::checked::union_map union_map::subtract_range(isl::checked::union_set dom) const
17205 {
17206   auto res = isl_union_map_subtract_range(copy(), dom.release());
17207   return manage(res);
17208 }
17209 
uncurry()17210 isl::checked::union_map union_map::uncurry() const
17211 {
17212   auto res = isl_union_map_uncurry(copy());
17213   return manage(res);
17214 }
17215 
unite(isl::checked::union_map umap2)17216 isl::checked::union_map union_map::unite(isl::checked::union_map umap2) const
17217 {
17218   auto res = isl_union_map_union(copy(), umap2.release());
17219   return manage(res);
17220 }
17221 
universe()17222 isl::checked::union_map union_map::universe() const
17223 {
17224   auto res = isl_union_map_universe(copy());
17225   return manage(res);
17226 }
17227 
wrap()17228 isl::checked::union_set union_map::wrap() const
17229 {
17230   auto res = isl_union_map_wrap(copy());
17231   return manage(res);
17232 }
17233 
zip()17234 isl::checked::union_map union_map::zip() const
17235 {
17236   auto res = isl_union_map_zip(copy());
17237   return manage(res);
17238 }
17239 
17240 inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
17241 {
17242   char *str = isl_union_map_to_str(obj.get());
17243   if (!str) {
17244     os.setstate(std::ios_base::badbit);
17245     return os;
17246   }
17247   os << str;
17248   free(str);
17249   return os;
17250 }
17251 
17252 // implementations for isl::union_pw_aff
manage(__isl_take isl_union_pw_aff * ptr)17253 union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
17254   return union_pw_aff(ptr);
17255 }
manage_copy(__isl_keep isl_union_pw_aff * ptr)17256 union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
17257   ptr = isl_union_pw_aff_copy(ptr);
17258   return union_pw_aff(ptr);
17259 }
17260 
union_pw_aff()17261 union_pw_aff::union_pw_aff()
17262     : ptr(nullptr) {}
17263 
union_pw_aff(const union_pw_aff & obj)17264 union_pw_aff::union_pw_aff(const union_pw_aff &obj)
17265     : ptr(nullptr)
17266 {
17267   ptr = obj.copy();
17268 }
17269 
union_pw_aff(__isl_take isl_union_pw_aff * ptr)17270 union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
17271     : ptr(ptr) {}
17272 
union_pw_aff(isl::checked::aff aff)17273 union_pw_aff::union_pw_aff(isl::checked::aff aff)
17274 {
17275   auto res = isl_union_pw_aff_from_aff(aff.release());
17276   ptr = res;
17277 }
17278 
union_pw_aff(isl::checked::pw_aff pa)17279 union_pw_aff::union_pw_aff(isl::checked::pw_aff pa)
17280 {
17281   auto res = isl_union_pw_aff_from_pw_aff(pa.release());
17282   ptr = res;
17283 }
17284 
union_pw_aff(isl::checked::ctx ctx,const std::string & str)17285 union_pw_aff::union_pw_aff(isl::checked::ctx ctx, const std::string &str)
17286 {
17287   auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
17288   ptr = res;
17289 }
17290 
17291 union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
17292   std::swap(this->ptr, obj.ptr);
17293   return *this;
17294 }
17295 
~union_pw_aff()17296 union_pw_aff::~union_pw_aff() {
17297   if (ptr)
17298     isl_union_pw_aff_free(ptr);
17299 }
17300 
copy()17301 __isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
17302   return isl_union_pw_aff_copy(ptr);
17303 }
17304 
get()17305 __isl_keep isl_union_pw_aff *union_pw_aff::get() const {
17306   return ptr;
17307 }
17308 
release()17309 __isl_give isl_union_pw_aff *union_pw_aff::release() {
17310   isl_union_pw_aff *tmp = ptr;
17311   ptr = nullptr;
17312   return tmp;
17313 }
17314 
is_null()17315 bool union_pw_aff::is_null() const {
17316   return ptr == nullptr;
17317 }
17318 
ctx()17319 isl::checked::ctx union_pw_aff::ctx() const {
17320   return isl::checked::ctx(isl_union_pw_aff_get_ctx(ptr));
17321 }
17322 
add(const isl::checked::multi_union_pw_aff & multi2)17323 isl::checked::multi_union_pw_aff union_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
17324 {
17325   return isl::checked::multi_union_pw_aff(*this).add(multi2);
17326 }
17327 
add(isl::checked::union_pw_aff upa2)17328 isl::checked::union_pw_aff union_pw_aff::add(isl::checked::union_pw_aff upa2) const
17329 {
17330   auto res = isl_union_pw_aff_add(copy(), upa2.release());
17331   return manage(res);
17332 }
17333 
add(const isl::checked::union_pw_multi_aff & upma2)17334 isl::checked::union_pw_multi_aff union_pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
17335 {
17336   return isl::checked::union_pw_multi_aff(*this).add(upma2);
17337 }
17338 
add(const isl::checked::aff & upa2)17339 isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::aff &upa2) const
17340 {
17341   return this->add(isl::checked::union_pw_aff(upa2));
17342 }
17343 
add(const isl::checked::pw_aff & upa2)17344 isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::pw_aff &upa2) const
17345 {
17346   return this->add(isl::checked::union_pw_aff(upa2));
17347 }
17348 
apply(const isl::checked::union_pw_multi_aff & upma2)17349 isl::checked::union_pw_multi_aff union_pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
17350 {
17351   return isl::checked::union_pw_multi_aff(*this).apply(upma2);
17352 }
17353 
as_multi_union_pw_aff()17354 isl::checked::multi_union_pw_aff union_pw_aff::as_multi_union_pw_aff() const
17355 {
17356   return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
17357 }
17358 
as_pw_multi_aff()17359 isl::checked::pw_multi_aff union_pw_aff::as_pw_multi_aff() const
17360 {
17361   return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
17362 }
17363 
as_union_map()17364 isl::checked::union_map union_pw_aff::as_union_map() const
17365 {
17366   return isl::checked::union_pw_multi_aff(*this).as_union_map();
17367 }
17368 
at(int pos)17369 isl::checked::union_pw_aff union_pw_aff::at(int pos) const
17370 {
17371   return isl::checked::multi_union_pw_aff(*this).at(pos);
17372 }
17373 
bind(const isl::checked::multi_id & tuple)17374 isl::checked::union_set union_pw_aff::bind(const isl::checked::multi_id &tuple) const
17375 {
17376   return isl::checked::multi_union_pw_aff(*this).bind(tuple);
17377 }
17378 
bind(isl::checked::id id)17379 isl::checked::union_set union_pw_aff::bind(isl::checked::id id) const
17380 {
17381   auto res = isl_union_pw_aff_bind_id(copy(), id.release());
17382   return manage(res);
17383 }
17384 
bind(const std::string & id)17385 isl::checked::union_set union_pw_aff::bind(const std::string &id) const
17386 {
17387   return this->bind(isl::checked::id(ctx(), id));
17388 }
17389 
coalesce()17390 isl::checked::union_pw_aff union_pw_aff::coalesce() const
17391 {
17392   auto res = isl_union_pw_aff_coalesce(copy());
17393   return manage(res);
17394 }
17395 
domain()17396 isl::checked::union_set union_pw_aff::domain() const
17397 {
17398   auto res = isl_union_pw_aff_domain(copy());
17399   return manage(res);
17400 }
17401 
extract_pw_multi_aff(const isl::checked::space & space)17402 isl::checked::pw_multi_aff union_pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
17403 {
17404   return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
17405 }
17406 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)17407 isl::checked::multi_union_pw_aff union_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
17408 {
17409   return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
17410 }
17411 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)17412 isl::checked::union_pw_multi_aff union_pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
17413 {
17414   return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
17415 }
17416 
gist(isl::checked::union_set context)17417 isl::checked::union_pw_aff union_pw_aff::gist(isl::checked::union_set context) const
17418 {
17419   auto res = isl_union_pw_aff_gist(copy(), context.release());
17420   return manage(res);
17421 }
17422 
has_range_tuple_id()17423 boolean union_pw_aff::has_range_tuple_id() const
17424 {
17425   return isl::checked::multi_union_pw_aff(*this).has_range_tuple_id();
17426 }
17427 
intersect_domain(isl::checked::space space)17428 isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::space space) const
17429 {
17430   auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
17431   return manage(res);
17432 }
17433 
intersect_domain(isl::checked::union_set uset)17434 isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::union_set uset) const
17435 {
17436   auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
17437   return manage(res);
17438 }
17439 
intersect_domain_wrapped_domain(isl::checked::union_set uset)17440 isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
17441 {
17442   auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
17443   return manage(res);
17444 }
17445 
intersect_domain_wrapped_range(isl::checked::union_set uset)17446 isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
17447 {
17448   auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
17449   return manage(res);
17450 }
17451 
intersect_params(isl::checked::set set)17452 isl::checked::union_pw_aff union_pw_aff::intersect_params(isl::checked::set set) const
17453 {
17454   auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
17455   return manage(res);
17456 }
17457 
involves_locals()17458 boolean union_pw_aff::involves_locals() const
17459 {
17460   return isl::checked::union_pw_multi_aff(*this).involves_locals();
17461 }
17462 
involves_nan()17463 boolean union_pw_aff::involves_nan() const
17464 {
17465   return isl::checked::multi_union_pw_aff(*this).involves_nan();
17466 }
17467 
isa_pw_multi_aff()17468 boolean union_pw_aff::isa_pw_multi_aff() const
17469 {
17470   return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
17471 }
17472 
list()17473 isl::checked::union_pw_aff_list union_pw_aff::list() const
17474 {
17475   return isl::checked::multi_union_pw_aff(*this).list();
17476 }
17477 
neg()17478 isl::checked::multi_union_pw_aff union_pw_aff::neg() const
17479 {
17480   return isl::checked::multi_union_pw_aff(*this).neg();
17481 }
17482 
plain_is_empty()17483 boolean union_pw_aff::plain_is_empty() const
17484 {
17485   return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
17486 }
17487 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)17488 boolean union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
17489 {
17490   return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
17491 }
17492 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)17493 isl::checked::union_pw_multi_aff union_pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
17494 {
17495   return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
17496 }
17497 
pullback(isl::checked::union_pw_multi_aff upma)17498 isl::checked::union_pw_aff union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
17499 {
17500   auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
17501   return manage(res);
17502 }
17503 
range_factor_domain()17504 isl::checked::union_pw_multi_aff union_pw_aff::range_factor_domain() const
17505 {
17506   return isl::checked::union_pw_multi_aff(*this).range_factor_domain();
17507 }
17508 
range_factor_range()17509 isl::checked::union_pw_multi_aff union_pw_aff::range_factor_range() const
17510 {
17511   return isl::checked::union_pw_multi_aff(*this).range_factor_range();
17512 }
17513 
range_product(const isl::checked::multi_union_pw_aff & multi2)17514 isl::checked::multi_union_pw_aff union_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
17515 {
17516   return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
17517 }
17518 
range_product(const isl::checked::union_pw_multi_aff & upma2)17519 isl::checked::union_pw_multi_aff union_pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
17520 {
17521   return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
17522 }
17523 
range_tuple_id()17524 isl::checked::id union_pw_aff::range_tuple_id() const
17525 {
17526   return isl::checked::multi_union_pw_aff(*this).range_tuple_id();
17527 }
17528 
reset_range_tuple_id()17529 isl::checked::multi_union_pw_aff union_pw_aff::reset_range_tuple_id() const
17530 {
17531   return isl::checked::multi_union_pw_aff(*this).reset_range_tuple_id();
17532 }
17533 
scale(const isl::checked::multi_val & mv)17534 isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::multi_val &mv) const
17535 {
17536   return isl::checked::multi_union_pw_aff(*this).scale(mv);
17537 }
17538 
scale(const isl::checked::val & v)17539 isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::val &v) const
17540 {
17541   return isl::checked::multi_union_pw_aff(*this).scale(v);
17542 }
17543 
scale(long v)17544 isl::checked::multi_union_pw_aff union_pw_aff::scale(long v) const
17545 {
17546   return this->scale(isl::checked::val(ctx(), v));
17547 }
17548 
scale_down(const isl::checked::multi_val & mv)17549 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::multi_val &mv) const
17550 {
17551   return isl::checked::multi_union_pw_aff(*this).scale_down(mv);
17552 }
17553 
scale_down(const isl::checked::val & v)17554 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::val &v) const
17555 {
17556   return isl::checked::multi_union_pw_aff(*this).scale_down(v);
17557 }
17558 
scale_down(long v)17559 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(long v) const
17560 {
17561   return this->scale_down(isl::checked::val(ctx(), v));
17562 }
17563 
set_at(int pos,const isl::checked::union_pw_aff & el)17564 isl::checked::multi_union_pw_aff union_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
17565 {
17566   return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
17567 }
17568 
set_range_tuple(const isl::checked::id & id)17569 isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const isl::checked::id &id) const
17570 {
17571   return isl::checked::multi_union_pw_aff(*this).set_range_tuple(id);
17572 }
17573 
set_range_tuple(const std::string & id)17574 isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const std::string &id) const
17575 {
17576   return this->set_range_tuple(isl::checked::id(ctx(), id));
17577 }
17578 
size()17579 class size union_pw_aff::size() const
17580 {
17581   return isl::checked::multi_union_pw_aff(*this).size();
17582 }
17583 
space()17584 isl::checked::space union_pw_aff::space() const
17585 {
17586   auto res = isl_union_pw_aff_get_space(get());
17587   return manage(res);
17588 }
17589 
get_space()17590 isl::checked::space union_pw_aff::get_space() const
17591 {
17592   return space();
17593 }
17594 
sub(const isl::checked::multi_union_pw_aff & multi2)17595 isl::checked::multi_union_pw_aff union_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
17596 {
17597   return isl::checked::multi_union_pw_aff(*this).sub(multi2);
17598 }
17599 
sub(isl::checked::union_pw_aff upa2)17600 isl::checked::union_pw_aff union_pw_aff::sub(isl::checked::union_pw_aff upa2) const
17601 {
17602   auto res = isl_union_pw_aff_sub(copy(), upa2.release());
17603   return manage(res);
17604 }
17605 
sub(const isl::checked::union_pw_multi_aff & upma2)17606 isl::checked::union_pw_multi_aff union_pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
17607 {
17608   return isl::checked::union_pw_multi_aff(*this).sub(upma2);
17609 }
17610 
sub(const isl::checked::aff & upa2)17611 isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::aff &upa2) const
17612 {
17613   return this->sub(isl::checked::union_pw_aff(upa2));
17614 }
17615 
sub(const isl::checked::pw_aff & upa2)17616 isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::pw_aff &upa2) const
17617 {
17618   return this->sub(isl::checked::union_pw_aff(upa2));
17619 }
17620 
subtract_domain(isl::checked::space space)17621 isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::space space) const
17622 {
17623   auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
17624   return manage(res);
17625 }
17626 
subtract_domain(isl::checked::union_set uset)17627 isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::union_set uset) const
17628 {
17629   auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
17630   return manage(res);
17631 }
17632 
to_list()17633 isl::checked::union_pw_aff_list union_pw_aff::to_list() const
17634 {
17635   auto res = isl_union_pw_aff_to_list(copy());
17636   return manage(res);
17637 }
17638 
union_add(const isl::checked::multi_union_pw_aff & mupa2)17639 isl::checked::multi_union_pw_aff union_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
17640 {
17641   return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
17642 }
17643 
union_add(isl::checked::union_pw_aff upa2)17644 isl::checked::union_pw_aff union_pw_aff::union_add(isl::checked::union_pw_aff upa2) const
17645 {
17646   auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
17647   return manage(res);
17648 }
17649 
union_add(const isl::checked::union_pw_multi_aff & upma2)17650 isl::checked::union_pw_multi_aff union_pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
17651 {
17652   return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
17653 }
17654 
union_add(const isl::checked::aff & upa2)17655 isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::aff &upa2) const
17656 {
17657   return this->union_add(isl::checked::union_pw_aff(upa2));
17658 }
17659 
union_add(const isl::checked::pw_aff & upa2)17660 isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::pw_aff &upa2) const
17661 {
17662   return this->union_add(isl::checked::union_pw_aff(upa2));
17663 }
17664 
17665 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
17666 {
17667   char *str = isl_union_pw_aff_to_str(obj.get());
17668   if (!str) {
17669     os.setstate(std::ios_base::badbit);
17670     return os;
17671   }
17672   os << str;
17673   free(str);
17674   return os;
17675 }
17676 
17677 // implementations for isl::union_pw_aff_list
manage(__isl_take isl_union_pw_aff_list * ptr)17678 union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
17679   return union_pw_aff_list(ptr);
17680 }
manage_copy(__isl_keep isl_union_pw_aff_list * ptr)17681 union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
17682   ptr = isl_union_pw_aff_list_copy(ptr);
17683   return union_pw_aff_list(ptr);
17684 }
17685 
union_pw_aff_list()17686 union_pw_aff_list::union_pw_aff_list()
17687     : ptr(nullptr) {}
17688 
union_pw_aff_list(const union_pw_aff_list & obj)17689 union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
17690     : ptr(nullptr)
17691 {
17692   ptr = obj.copy();
17693 }
17694 
union_pw_aff_list(__isl_take isl_union_pw_aff_list * ptr)17695 union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
17696     : ptr(ptr) {}
17697 
union_pw_aff_list(isl::checked::ctx ctx,int n)17698 union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, int n)
17699 {
17700   auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
17701   ptr = res;
17702 }
17703 
union_pw_aff_list(isl::checked::union_pw_aff el)17704 union_pw_aff_list::union_pw_aff_list(isl::checked::union_pw_aff el)
17705 {
17706   auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
17707   ptr = res;
17708 }
17709 
17710 union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
17711   std::swap(this->ptr, obj.ptr);
17712   return *this;
17713 }
17714 
~union_pw_aff_list()17715 union_pw_aff_list::~union_pw_aff_list() {
17716   if (ptr)
17717     isl_union_pw_aff_list_free(ptr);
17718 }
17719 
copy()17720 __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
17721   return isl_union_pw_aff_list_copy(ptr);
17722 }
17723 
get()17724 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
17725   return ptr;
17726 }
17727 
release()17728 __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
17729   isl_union_pw_aff_list *tmp = ptr;
17730   ptr = nullptr;
17731   return tmp;
17732 }
17733 
is_null()17734 bool union_pw_aff_list::is_null() const {
17735   return ptr == nullptr;
17736 }
17737 
ctx()17738 isl::checked::ctx union_pw_aff_list::ctx() const {
17739   return isl::checked::ctx(isl_union_pw_aff_list_get_ctx(ptr));
17740 }
17741 
add(isl::checked::union_pw_aff el)17742 isl::checked::union_pw_aff_list union_pw_aff_list::add(isl::checked::union_pw_aff el) const
17743 {
17744   auto res = isl_union_pw_aff_list_add(copy(), el.release());
17745   return manage(res);
17746 }
17747 
at(int index)17748 isl::checked::union_pw_aff union_pw_aff_list::at(int index) const
17749 {
17750   auto res = isl_union_pw_aff_list_get_at(get(), index);
17751   return manage(res);
17752 }
17753 
get_at(int index)17754 isl::checked::union_pw_aff union_pw_aff_list::get_at(int index) const
17755 {
17756   return at(index);
17757 }
17758 
clear()17759 isl::checked::union_pw_aff_list union_pw_aff_list::clear() const
17760 {
17761   auto res = isl_union_pw_aff_list_clear(copy());
17762   return manage(res);
17763 }
17764 
concat(isl::checked::union_pw_aff_list list2)17765 isl::checked::union_pw_aff_list union_pw_aff_list::concat(isl::checked::union_pw_aff_list list2) const
17766 {
17767   auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
17768   return manage(res);
17769 }
17770 
drop(unsigned int first,unsigned int n)17771 isl::checked::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
17772 {
17773   auto res = isl_union_pw_aff_list_drop(copy(), first, n);
17774   return manage(res);
17775 }
17776 
foreach(const std::function<stat (isl::checked::union_pw_aff)> & fn)17777 stat union_pw_aff_list::foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const
17778 {
17779   struct fn_data {
17780     std::function<stat(isl::checked::union_pw_aff)> func;
17781   } fn_data = { fn };
17782   auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
17783     auto *data = static_cast<struct fn_data *>(arg_1);
17784     auto ret = (data->func)(manage(arg_0));
17785     return ret.release();
17786   };
17787   auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
17788   return manage(res);
17789 }
17790 
insert(unsigned int pos,isl::checked::union_pw_aff el)17791 isl::checked::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::checked::union_pw_aff el) const
17792 {
17793   auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
17794   return manage(res);
17795 }
17796 
size()17797 class size union_pw_aff_list::size() const
17798 {
17799   auto res = isl_union_pw_aff_list_size(get());
17800   return manage(res);
17801 }
17802 
17803 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
17804 {
17805   char *str = isl_union_pw_aff_list_to_str(obj.get());
17806   if (!str) {
17807     os.setstate(std::ios_base::badbit);
17808     return os;
17809   }
17810   os << str;
17811   free(str);
17812   return os;
17813 }
17814 
17815 // implementations for isl::union_pw_multi_aff
manage(__isl_take isl_union_pw_multi_aff * ptr)17816 union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
17817   return union_pw_multi_aff(ptr);
17818 }
manage_copy(__isl_keep isl_union_pw_multi_aff * ptr)17819 union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
17820   ptr = isl_union_pw_multi_aff_copy(ptr);
17821   return union_pw_multi_aff(ptr);
17822 }
17823 
union_pw_multi_aff()17824 union_pw_multi_aff::union_pw_multi_aff()
17825     : ptr(nullptr) {}
17826 
union_pw_multi_aff(const union_pw_multi_aff & obj)17827 union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
17828     : ptr(nullptr)
17829 {
17830   ptr = obj.copy();
17831 }
17832 
union_pw_multi_aff(__isl_take isl_union_pw_multi_aff * ptr)17833 union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
17834     : ptr(ptr) {}
17835 
union_pw_multi_aff(isl::checked::multi_aff ma)17836 union_pw_multi_aff::union_pw_multi_aff(isl::checked::multi_aff ma)
17837 {
17838   auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
17839   ptr = res;
17840 }
17841 
union_pw_multi_aff(isl::checked::pw_multi_aff pma)17842 union_pw_multi_aff::union_pw_multi_aff(isl::checked::pw_multi_aff pma)
17843 {
17844   auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
17845   ptr = res;
17846 }
17847 
union_pw_multi_aff(isl::checked::union_pw_aff upa)17848 union_pw_multi_aff::union_pw_multi_aff(isl::checked::union_pw_aff upa)
17849 {
17850   auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
17851   ptr = res;
17852 }
17853 
union_pw_multi_aff(isl::checked::ctx ctx,const std::string & str)17854 union_pw_multi_aff::union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
17855 {
17856   auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
17857   ptr = res;
17858 }
17859 
17860 union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
17861   std::swap(this->ptr, obj.ptr);
17862   return *this;
17863 }
17864 
~union_pw_multi_aff()17865 union_pw_multi_aff::~union_pw_multi_aff() {
17866   if (ptr)
17867     isl_union_pw_multi_aff_free(ptr);
17868 }
17869 
copy()17870 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
17871   return isl_union_pw_multi_aff_copy(ptr);
17872 }
17873 
get()17874 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
17875   return ptr;
17876 }
17877 
release()17878 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
17879   isl_union_pw_multi_aff *tmp = ptr;
17880   ptr = nullptr;
17881   return tmp;
17882 }
17883 
is_null()17884 bool union_pw_multi_aff::is_null() const {
17885   return ptr == nullptr;
17886 }
17887 
ctx()17888 isl::checked::ctx union_pw_multi_aff::ctx() const {
17889   return isl::checked::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
17890 }
17891 
add(isl::checked::union_pw_multi_aff upma2)17892 isl::checked::union_pw_multi_aff union_pw_multi_aff::add(isl::checked::union_pw_multi_aff upma2) const
17893 {
17894   auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
17895   return manage(res);
17896 }
17897 
apply(isl::checked::union_pw_multi_aff upma2)17898 isl::checked::union_pw_multi_aff union_pw_multi_aff::apply(isl::checked::union_pw_multi_aff upma2) const
17899 {
17900   auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
17901   return manage(res);
17902 }
17903 
as_multi_union_pw_aff()17904 isl::checked::multi_union_pw_aff union_pw_multi_aff::as_multi_union_pw_aff() const
17905 {
17906   auto res = isl_union_pw_multi_aff_as_multi_union_pw_aff(copy());
17907   return manage(res);
17908 }
17909 
as_pw_multi_aff()17910 isl::checked::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
17911 {
17912   auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
17913   return manage(res);
17914 }
17915 
as_union_map()17916 isl::checked::union_map union_pw_multi_aff::as_union_map() const
17917 {
17918   auto res = isl_union_pw_multi_aff_as_union_map(copy());
17919   return manage(res);
17920 }
17921 
coalesce()17922 isl::checked::union_pw_multi_aff union_pw_multi_aff::coalesce() const
17923 {
17924   auto res = isl_union_pw_multi_aff_coalesce(copy());
17925   return manage(res);
17926 }
17927 
domain()17928 isl::checked::union_set union_pw_multi_aff::domain() const
17929 {
17930   auto res = isl_union_pw_multi_aff_domain(copy());
17931   return manage(res);
17932 }
17933 
empty(isl::checked::ctx ctx)17934 isl::checked::union_pw_multi_aff union_pw_multi_aff::empty(isl::checked::ctx ctx)
17935 {
17936   auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
17937   return manage(res);
17938 }
17939 
extract_pw_multi_aff(isl::checked::space space)17940 isl::checked::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::checked::space space) const
17941 {
17942   auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
17943   return manage(res);
17944 }
17945 
flat_range_product(isl::checked::union_pw_multi_aff upma2)17946 isl::checked::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::checked::union_pw_multi_aff upma2) const
17947 {
17948   auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
17949   return manage(res);
17950 }
17951 
gist(isl::checked::union_set context)17952 isl::checked::union_pw_multi_aff union_pw_multi_aff::gist(isl::checked::union_set context) const
17953 {
17954   auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
17955   return manage(res);
17956 }
17957 
intersect_domain(isl::checked::space space)17958 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::space space) const
17959 {
17960   auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
17961   return manage(res);
17962 }
17963 
intersect_domain(isl::checked::union_set uset)17964 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::union_set uset) const
17965 {
17966   auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
17967   return manage(res);
17968 }
17969 
intersect_domain_wrapped_domain(isl::checked::union_set uset)17970 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
17971 {
17972   auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
17973   return manage(res);
17974 }
17975 
intersect_domain_wrapped_range(isl::checked::union_set uset)17976 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
17977 {
17978   auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
17979   return manage(res);
17980 }
17981 
intersect_params(isl::checked::set set)17982 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::checked::set set) const
17983 {
17984   auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
17985   return manage(res);
17986 }
17987 
involves_locals()17988 boolean union_pw_multi_aff::involves_locals() const
17989 {
17990   auto res = isl_union_pw_multi_aff_involves_locals(get());
17991   return manage(res);
17992 }
17993 
isa_pw_multi_aff()17994 boolean union_pw_multi_aff::isa_pw_multi_aff() const
17995 {
17996   auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
17997   return manage(res);
17998 }
17999 
plain_is_empty()18000 boolean union_pw_multi_aff::plain_is_empty() const
18001 {
18002   auto res = isl_union_pw_multi_aff_plain_is_empty(get());
18003   return manage(res);
18004 }
18005 
preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2)18006 isl::checked::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const
18007 {
18008   auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
18009   return manage(res);
18010 }
18011 
pullback(isl::checked::union_pw_multi_aff upma2)18012 isl::checked::union_pw_multi_aff union_pw_multi_aff::pullback(isl::checked::union_pw_multi_aff upma2) const
18013 {
18014   auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
18015   return manage(res);
18016 }
18017 
range_factor_domain()18018 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
18019 {
18020   auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
18021   return manage(res);
18022 }
18023 
range_factor_range()18024 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
18025 {
18026   auto res = isl_union_pw_multi_aff_range_factor_range(copy());
18027   return manage(res);
18028 }
18029 
range_product(isl::checked::union_pw_multi_aff upma2)18030 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_product(isl::checked::union_pw_multi_aff upma2) const
18031 {
18032   auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
18033   return manage(res);
18034 }
18035 
space()18036 isl::checked::space union_pw_multi_aff::space() const
18037 {
18038   auto res = isl_union_pw_multi_aff_get_space(get());
18039   return manage(res);
18040 }
18041 
get_space()18042 isl::checked::space union_pw_multi_aff::get_space() const
18043 {
18044   return space();
18045 }
18046 
sub(isl::checked::union_pw_multi_aff upma2)18047 isl::checked::union_pw_multi_aff union_pw_multi_aff::sub(isl::checked::union_pw_multi_aff upma2) const
18048 {
18049   auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
18050   return manage(res);
18051 }
18052 
subtract_domain(isl::checked::space space)18053 isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::space space) const
18054 {
18055   auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
18056   return manage(res);
18057 }
18058 
subtract_domain(isl::checked::union_set uset)18059 isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::union_set uset) const
18060 {
18061   auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
18062   return manage(res);
18063 }
18064 
union_add(isl::checked::union_pw_multi_aff upma2)18065 isl::checked::union_pw_multi_aff union_pw_multi_aff::union_add(isl::checked::union_pw_multi_aff upma2) const
18066 {
18067   auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
18068   return manage(res);
18069 }
18070 
18071 inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
18072 {
18073   char *str = isl_union_pw_multi_aff_to_str(obj.get());
18074   if (!str) {
18075     os.setstate(std::ios_base::badbit);
18076     return os;
18077   }
18078   os << str;
18079   free(str);
18080   return os;
18081 }
18082 
18083 // implementations for isl::union_set
manage(__isl_take isl_union_set * ptr)18084 union_set manage(__isl_take isl_union_set *ptr) {
18085   return union_set(ptr);
18086 }
manage_copy(__isl_keep isl_union_set * ptr)18087 union_set manage_copy(__isl_keep isl_union_set *ptr) {
18088   ptr = isl_union_set_copy(ptr);
18089   return union_set(ptr);
18090 }
18091 
union_set()18092 union_set::union_set()
18093     : ptr(nullptr) {}
18094 
union_set(const union_set & obj)18095 union_set::union_set(const union_set &obj)
18096     : ptr(nullptr)
18097 {
18098   ptr = obj.copy();
18099 }
18100 
union_set(__isl_take isl_union_set * ptr)18101 union_set::union_set(__isl_take isl_union_set *ptr)
18102     : ptr(ptr) {}
18103 
union_set(isl::checked::basic_set bset)18104 union_set::union_set(isl::checked::basic_set bset)
18105 {
18106   auto res = isl_union_set_from_basic_set(bset.release());
18107   ptr = res;
18108 }
18109 
union_set(isl::checked::point pnt)18110 union_set::union_set(isl::checked::point pnt)
18111 {
18112   auto res = isl_union_set_from_point(pnt.release());
18113   ptr = res;
18114 }
18115 
union_set(isl::checked::set set)18116 union_set::union_set(isl::checked::set set)
18117 {
18118   auto res = isl_union_set_from_set(set.release());
18119   ptr = res;
18120 }
18121 
union_set(isl::checked::ctx ctx,const std::string & str)18122 union_set::union_set(isl::checked::ctx ctx, const std::string &str)
18123 {
18124   auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
18125   ptr = res;
18126 }
18127 
18128 union_set &union_set::operator=(union_set obj) {
18129   std::swap(this->ptr, obj.ptr);
18130   return *this;
18131 }
18132 
~union_set()18133 union_set::~union_set() {
18134   if (ptr)
18135     isl_union_set_free(ptr);
18136 }
18137 
copy()18138 __isl_give isl_union_set *union_set::copy() const & {
18139   return isl_union_set_copy(ptr);
18140 }
18141 
get()18142 __isl_keep isl_union_set *union_set::get() const {
18143   return ptr;
18144 }
18145 
release()18146 __isl_give isl_union_set *union_set::release() {
18147   isl_union_set *tmp = ptr;
18148   ptr = nullptr;
18149   return tmp;
18150 }
18151 
is_null()18152 bool union_set::is_null() const {
18153   return ptr == nullptr;
18154 }
18155 
ctx()18156 isl::checked::ctx union_set::ctx() const {
18157   return isl::checked::ctx(isl_union_set_get_ctx(ptr));
18158 }
18159 
affine_hull()18160 isl::checked::union_set union_set::affine_hull() const
18161 {
18162   auto res = isl_union_set_affine_hull(copy());
18163   return manage(res);
18164 }
18165 
apply(isl::checked::union_map umap)18166 isl::checked::union_set union_set::apply(isl::checked::union_map umap) const
18167 {
18168   auto res = isl_union_set_apply(copy(), umap.release());
18169   return manage(res);
18170 }
18171 
as_set()18172 isl::checked::set union_set::as_set() const
18173 {
18174   auto res = isl_union_set_as_set(copy());
18175   return manage(res);
18176 }
18177 
coalesce()18178 isl::checked::union_set union_set::coalesce() const
18179 {
18180   auto res = isl_union_set_coalesce(copy());
18181   return manage(res);
18182 }
18183 
compute_divs()18184 isl::checked::union_set union_set::compute_divs() const
18185 {
18186   auto res = isl_union_set_compute_divs(copy());
18187   return manage(res);
18188 }
18189 
detect_equalities()18190 isl::checked::union_set union_set::detect_equalities() const
18191 {
18192   auto res = isl_union_set_detect_equalities(copy());
18193   return manage(res);
18194 }
18195 
empty(isl::checked::ctx ctx)18196 isl::checked::union_set union_set::empty(isl::checked::ctx ctx)
18197 {
18198   auto res = isl_union_set_empty_ctx(ctx.release());
18199   return manage(res);
18200 }
18201 
every_set(const std::function<boolean (isl::checked::set)> & test)18202 boolean union_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
18203 {
18204   struct test_data {
18205     std::function<boolean(isl::checked::set)> func;
18206   } test_data = { test };
18207   auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
18208     auto *data = static_cast<struct test_data *>(arg_1);
18209     auto ret = (data->func)(manage_copy(arg_0));
18210     return ret.release();
18211   };
18212   auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
18213   return manage(res);
18214 }
18215 
extract_set(isl::checked::space space)18216 isl::checked::set union_set::extract_set(isl::checked::space space) const
18217 {
18218   auto res = isl_union_set_extract_set(get(), space.release());
18219   return manage(res);
18220 }
18221 
foreach_point(const std::function<stat (isl::checked::point)> & fn)18222 stat union_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
18223 {
18224   struct fn_data {
18225     std::function<stat(isl::checked::point)> func;
18226   } fn_data = { fn };
18227   auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
18228     auto *data = static_cast<struct fn_data *>(arg_1);
18229     auto ret = (data->func)(manage(arg_0));
18230     return ret.release();
18231   };
18232   auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
18233   return manage(res);
18234 }
18235 
foreach_set(const std::function<stat (isl::checked::set)> & fn)18236 stat union_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
18237 {
18238   struct fn_data {
18239     std::function<stat(isl::checked::set)> func;
18240   } fn_data = { fn };
18241   auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
18242     auto *data = static_cast<struct fn_data *>(arg_1);
18243     auto ret = (data->func)(manage(arg_0));
18244     return ret.release();
18245   };
18246   auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
18247   return manage(res);
18248 }
18249 
gist(isl::checked::union_set context)18250 isl::checked::union_set union_set::gist(isl::checked::union_set context) const
18251 {
18252   auto res = isl_union_set_gist(copy(), context.release());
18253   return manage(res);
18254 }
18255 
gist_params(isl::checked::set set)18256 isl::checked::union_set union_set::gist_params(isl::checked::set set) const
18257 {
18258   auto res = isl_union_set_gist_params(copy(), set.release());
18259   return manage(res);
18260 }
18261 
identity()18262 isl::checked::union_map union_set::identity() const
18263 {
18264   auto res = isl_union_set_identity(copy());
18265   return manage(res);
18266 }
18267 
intersect(isl::checked::union_set uset2)18268 isl::checked::union_set union_set::intersect(isl::checked::union_set uset2) const
18269 {
18270   auto res = isl_union_set_intersect(copy(), uset2.release());
18271   return manage(res);
18272 }
18273 
intersect_params(isl::checked::set set)18274 isl::checked::union_set union_set::intersect_params(isl::checked::set set) const
18275 {
18276   auto res = isl_union_set_intersect_params(copy(), set.release());
18277   return manage(res);
18278 }
18279 
is_disjoint(const isl::checked::union_set & uset2)18280 boolean union_set::is_disjoint(const isl::checked::union_set &uset2) const
18281 {
18282   auto res = isl_union_set_is_disjoint(get(), uset2.get());
18283   return manage(res);
18284 }
18285 
is_empty()18286 boolean union_set::is_empty() const
18287 {
18288   auto res = isl_union_set_is_empty(get());
18289   return manage(res);
18290 }
18291 
is_equal(const isl::checked::union_set & uset2)18292 boolean union_set::is_equal(const isl::checked::union_set &uset2) const
18293 {
18294   auto res = isl_union_set_is_equal(get(), uset2.get());
18295   return manage(res);
18296 }
18297 
is_strict_subset(const isl::checked::union_set & uset2)18298 boolean union_set::is_strict_subset(const isl::checked::union_set &uset2) const
18299 {
18300   auto res = isl_union_set_is_strict_subset(get(), uset2.get());
18301   return manage(res);
18302 }
18303 
is_subset(const isl::checked::union_set & uset2)18304 boolean union_set::is_subset(const isl::checked::union_set &uset2) const
18305 {
18306   auto res = isl_union_set_is_subset(get(), uset2.get());
18307   return manage(res);
18308 }
18309 
isa_set()18310 boolean union_set::isa_set() const
18311 {
18312   auto res = isl_union_set_isa_set(get());
18313   return manage(res);
18314 }
18315 
lexmax()18316 isl::checked::union_set union_set::lexmax() const
18317 {
18318   auto res = isl_union_set_lexmax(copy());
18319   return manage(res);
18320 }
18321 
lexmin()18322 isl::checked::union_set union_set::lexmin() const
18323 {
18324   auto res = isl_union_set_lexmin(copy());
18325   return manage(res);
18326 }
18327 
polyhedral_hull()18328 isl::checked::union_set union_set::polyhedral_hull() const
18329 {
18330   auto res = isl_union_set_polyhedral_hull(copy());
18331   return manage(res);
18332 }
18333 
preimage(isl::checked::multi_aff ma)18334 isl::checked::union_set union_set::preimage(isl::checked::multi_aff ma) const
18335 {
18336   auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
18337   return manage(res);
18338 }
18339 
preimage(isl::checked::pw_multi_aff pma)18340 isl::checked::union_set union_set::preimage(isl::checked::pw_multi_aff pma) const
18341 {
18342   auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
18343   return manage(res);
18344 }
18345 
preimage(isl::checked::union_pw_multi_aff upma)18346 isl::checked::union_set union_set::preimage(isl::checked::union_pw_multi_aff upma) const
18347 {
18348   auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
18349   return manage(res);
18350 }
18351 
sample_point()18352 isl::checked::point union_set::sample_point() const
18353 {
18354   auto res = isl_union_set_sample_point(copy());
18355   return manage(res);
18356 }
18357 
space()18358 isl::checked::space union_set::space() const
18359 {
18360   auto res = isl_union_set_get_space(get());
18361   return manage(res);
18362 }
18363 
get_space()18364 isl::checked::space union_set::get_space() const
18365 {
18366   return space();
18367 }
18368 
subtract(isl::checked::union_set uset2)18369 isl::checked::union_set union_set::subtract(isl::checked::union_set uset2) const
18370 {
18371   auto res = isl_union_set_subtract(copy(), uset2.release());
18372   return manage(res);
18373 }
18374 
to_list()18375 isl::checked::union_set_list union_set::to_list() const
18376 {
18377   auto res = isl_union_set_to_list(copy());
18378   return manage(res);
18379 }
18380 
unite(isl::checked::union_set uset2)18381 isl::checked::union_set union_set::unite(isl::checked::union_set uset2) const
18382 {
18383   auto res = isl_union_set_union(copy(), uset2.release());
18384   return manage(res);
18385 }
18386 
universe()18387 isl::checked::union_set union_set::universe() const
18388 {
18389   auto res = isl_union_set_universe(copy());
18390   return manage(res);
18391 }
18392 
unwrap()18393 isl::checked::union_map union_set::unwrap() const
18394 {
18395   auto res = isl_union_set_unwrap(copy());
18396   return manage(res);
18397 }
18398 
18399 inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
18400 {
18401   char *str = isl_union_set_to_str(obj.get());
18402   if (!str) {
18403     os.setstate(std::ios_base::badbit);
18404     return os;
18405   }
18406   os << str;
18407   free(str);
18408   return os;
18409 }
18410 
18411 // implementations for isl::union_set_list
manage(__isl_take isl_union_set_list * ptr)18412 union_set_list manage(__isl_take isl_union_set_list *ptr) {
18413   return union_set_list(ptr);
18414 }
manage_copy(__isl_keep isl_union_set_list * ptr)18415 union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
18416   ptr = isl_union_set_list_copy(ptr);
18417   return union_set_list(ptr);
18418 }
18419 
union_set_list()18420 union_set_list::union_set_list()
18421     : ptr(nullptr) {}
18422 
union_set_list(const union_set_list & obj)18423 union_set_list::union_set_list(const union_set_list &obj)
18424     : ptr(nullptr)
18425 {
18426   ptr = obj.copy();
18427 }
18428 
union_set_list(__isl_take isl_union_set_list * ptr)18429 union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
18430     : ptr(ptr) {}
18431 
union_set_list(isl::checked::ctx ctx,int n)18432 union_set_list::union_set_list(isl::checked::ctx ctx, int n)
18433 {
18434   auto res = isl_union_set_list_alloc(ctx.release(), n);
18435   ptr = res;
18436 }
18437 
union_set_list(isl::checked::union_set el)18438 union_set_list::union_set_list(isl::checked::union_set el)
18439 {
18440   auto res = isl_union_set_list_from_union_set(el.release());
18441   ptr = res;
18442 }
18443 
18444 union_set_list &union_set_list::operator=(union_set_list obj) {
18445   std::swap(this->ptr, obj.ptr);
18446   return *this;
18447 }
18448 
~union_set_list()18449 union_set_list::~union_set_list() {
18450   if (ptr)
18451     isl_union_set_list_free(ptr);
18452 }
18453 
copy()18454 __isl_give isl_union_set_list *union_set_list::copy() const & {
18455   return isl_union_set_list_copy(ptr);
18456 }
18457 
get()18458 __isl_keep isl_union_set_list *union_set_list::get() const {
18459   return ptr;
18460 }
18461 
release()18462 __isl_give isl_union_set_list *union_set_list::release() {
18463   isl_union_set_list *tmp = ptr;
18464   ptr = nullptr;
18465   return tmp;
18466 }
18467 
is_null()18468 bool union_set_list::is_null() const {
18469   return ptr == nullptr;
18470 }
18471 
ctx()18472 isl::checked::ctx union_set_list::ctx() const {
18473   return isl::checked::ctx(isl_union_set_list_get_ctx(ptr));
18474 }
18475 
add(isl::checked::union_set el)18476 isl::checked::union_set_list union_set_list::add(isl::checked::union_set el) const
18477 {
18478   auto res = isl_union_set_list_add(copy(), el.release());
18479   return manage(res);
18480 }
18481 
at(int index)18482 isl::checked::union_set union_set_list::at(int index) const
18483 {
18484   auto res = isl_union_set_list_get_at(get(), index);
18485   return manage(res);
18486 }
18487 
get_at(int index)18488 isl::checked::union_set union_set_list::get_at(int index) const
18489 {
18490   return at(index);
18491 }
18492 
clear()18493 isl::checked::union_set_list union_set_list::clear() const
18494 {
18495   auto res = isl_union_set_list_clear(copy());
18496   return manage(res);
18497 }
18498 
concat(isl::checked::union_set_list list2)18499 isl::checked::union_set_list union_set_list::concat(isl::checked::union_set_list list2) const
18500 {
18501   auto res = isl_union_set_list_concat(copy(), list2.release());
18502   return manage(res);
18503 }
18504 
drop(unsigned int first,unsigned int n)18505 isl::checked::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
18506 {
18507   auto res = isl_union_set_list_drop(copy(), first, n);
18508   return manage(res);
18509 }
18510 
foreach(const std::function<stat (isl::checked::union_set)> & fn)18511 stat union_set_list::foreach(const std::function<stat(isl::checked::union_set)> &fn) const
18512 {
18513   struct fn_data {
18514     std::function<stat(isl::checked::union_set)> func;
18515   } fn_data = { fn };
18516   auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
18517     auto *data = static_cast<struct fn_data *>(arg_1);
18518     auto ret = (data->func)(manage(arg_0));
18519     return ret.release();
18520   };
18521   auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
18522   return manage(res);
18523 }
18524 
insert(unsigned int pos,isl::checked::union_set el)18525 isl::checked::union_set_list union_set_list::insert(unsigned int pos, isl::checked::union_set el) const
18526 {
18527   auto res = isl_union_set_list_insert(copy(), pos, el.release());
18528   return manage(res);
18529 }
18530 
size()18531 class size union_set_list::size() const
18532 {
18533   auto res = isl_union_set_list_size(get());
18534   return manage(res);
18535 }
18536 
18537 inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
18538 {
18539   char *str = isl_union_set_list_to_str(obj.get());
18540   if (!str) {
18541     os.setstate(std::ios_base::badbit);
18542     return os;
18543   }
18544   os << str;
18545   free(str);
18546   return os;
18547 }
18548 
18549 // implementations for isl::val
manage(__isl_take isl_val * ptr)18550 val manage(__isl_take isl_val *ptr) {
18551   return val(ptr);
18552 }
manage_copy(__isl_keep isl_val * ptr)18553 val manage_copy(__isl_keep isl_val *ptr) {
18554   ptr = isl_val_copy(ptr);
18555   return val(ptr);
18556 }
18557 
val()18558 val::val()
18559     : ptr(nullptr) {}
18560 
val(const val & obj)18561 val::val(const val &obj)
18562     : ptr(nullptr)
18563 {
18564   ptr = obj.copy();
18565 }
18566 
val(__isl_take isl_val * ptr)18567 val::val(__isl_take isl_val *ptr)
18568     : ptr(ptr) {}
18569 
val(isl::checked::ctx ctx,long i)18570 val::val(isl::checked::ctx ctx, long i)
18571 {
18572   auto res = isl_val_int_from_si(ctx.release(), i);
18573   ptr = res;
18574 }
18575 
val(isl::checked::ctx ctx,const std::string & str)18576 val::val(isl::checked::ctx ctx, const std::string &str)
18577 {
18578   auto res = isl_val_read_from_str(ctx.release(), str.c_str());
18579   ptr = res;
18580 }
18581 
18582 val &val::operator=(val obj) {
18583   std::swap(this->ptr, obj.ptr);
18584   return *this;
18585 }
18586 
~val()18587 val::~val() {
18588   if (ptr)
18589     isl_val_free(ptr);
18590 }
18591 
copy()18592 __isl_give isl_val *val::copy() const & {
18593   return isl_val_copy(ptr);
18594 }
18595 
get()18596 __isl_keep isl_val *val::get() const {
18597   return ptr;
18598 }
18599 
release()18600 __isl_give isl_val *val::release() {
18601   isl_val *tmp = ptr;
18602   ptr = nullptr;
18603   return tmp;
18604 }
18605 
is_null()18606 bool val::is_null() const {
18607   return ptr == nullptr;
18608 }
18609 
ctx()18610 isl::checked::ctx val::ctx() const {
18611   return isl::checked::ctx(isl_val_get_ctx(ptr));
18612 }
18613 
abs()18614 isl::checked::val val::abs() const
18615 {
18616   auto res = isl_val_abs(copy());
18617   return manage(res);
18618 }
18619 
abs_eq(const isl::checked::val & v2)18620 boolean val::abs_eq(const isl::checked::val &v2) const
18621 {
18622   auto res = isl_val_abs_eq(get(), v2.get());
18623   return manage(res);
18624 }
18625 
abs_eq(long v2)18626 boolean val::abs_eq(long v2) const
18627 {
18628   return this->abs_eq(isl::checked::val(ctx(), v2));
18629 }
18630 
add(isl::checked::val v2)18631 isl::checked::val val::add(isl::checked::val v2) const
18632 {
18633   auto res = isl_val_add(copy(), v2.release());
18634   return manage(res);
18635 }
18636 
add(long v2)18637 isl::checked::val val::add(long v2) const
18638 {
18639   return this->add(isl::checked::val(ctx(), v2));
18640 }
18641 
ceil()18642 isl::checked::val val::ceil() const
18643 {
18644   auto res = isl_val_ceil(copy());
18645   return manage(res);
18646 }
18647 
cmp_si(long i)18648 int val::cmp_si(long i) const
18649 {
18650   auto res = isl_val_cmp_si(get(), i);
18651   return res;
18652 }
18653 
den_si()18654 long val::den_si() const
18655 {
18656   auto res = isl_val_get_den_si(get());
18657   return res;
18658 }
18659 
get_den_si()18660 long val::get_den_si() const
18661 {
18662   return den_si();
18663 }
18664 
div(isl::checked::val v2)18665 isl::checked::val val::div(isl::checked::val v2) const
18666 {
18667   auto res = isl_val_div(copy(), v2.release());
18668   return manage(res);
18669 }
18670 
div(long v2)18671 isl::checked::val val::div(long v2) const
18672 {
18673   return this->div(isl::checked::val(ctx(), v2));
18674 }
18675 
eq(const isl::checked::val & v2)18676 boolean val::eq(const isl::checked::val &v2) const
18677 {
18678   auto res = isl_val_eq(get(), v2.get());
18679   return manage(res);
18680 }
18681 
eq(long v2)18682 boolean val::eq(long v2) const
18683 {
18684   return this->eq(isl::checked::val(ctx(), v2));
18685 }
18686 
floor()18687 isl::checked::val val::floor() const
18688 {
18689   auto res = isl_val_floor(copy());
18690   return manage(res);
18691 }
18692 
gcd(isl::checked::val v2)18693 isl::checked::val val::gcd(isl::checked::val v2) const
18694 {
18695   auto res = isl_val_gcd(copy(), v2.release());
18696   return manage(res);
18697 }
18698 
gcd(long v2)18699 isl::checked::val val::gcd(long v2) const
18700 {
18701   return this->gcd(isl::checked::val(ctx(), v2));
18702 }
18703 
ge(const isl::checked::val & v2)18704 boolean val::ge(const isl::checked::val &v2) const
18705 {
18706   auto res = isl_val_ge(get(), v2.get());
18707   return manage(res);
18708 }
18709 
ge(long v2)18710 boolean val::ge(long v2) const
18711 {
18712   return this->ge(isl::checked::val(ctx(), v2));
18713 }
18714 
gt(const isl::checked::val & v2)18715 boolean val::gt(const isl::checked::val &v2) const
18716 {
18717   auto res = isl_val_gt(get(), v2.get());
18718   return manage(res);
18719 }
18720 
gt(long v2)18721 boolean val::gt(long v2) const
18722 {
18723   return this->gt(isl::checked::val(ctx(), v2));
18724 }
18725 
infty(isl::checked::ctx ctx)18726 isl::checked::val val::infty(isl::checked::ctx ctx)
18727 {
18728   auto res = isl_val_infty(ctx.release());
18729   return manage(res);
18730 }
18731 
inv()18732 isl::checked::val val::inv() const
18733 {
18734   auto res = isl_val_inv(copy());
18735   return manage(res);
18736 }
18737 
is_divisible_by(const isl::checked::val & v2)18738 boolean val::is_divisible_by(const isl::checked::val &v2) const
18739 {
18740   auto res = isl_val_is_divisible_by(get(), v2.get());
18741   return manage(res);
18742 }
18743 
is_divisible_by(long v2)18744 boolean val::is_divisible_by(long v2) const
18745 {
18746   return this->is_divisible_by(isl::checked::val(ctx(), v2));
18747 }
18748 
is_infty()18749 boolean val::is_infty() const
18750 {
18751   auto res = isl_val_is_infty(get());
18752   return manage(res);
18753 }
18754 
is_int()18755 boolean val::is_int() const
18756 {
18757   auto res = isl_val_is_int(get());
18758   return manage(res);
18759 }
18760 
is_nan()18761 boolean val::is_nan() const
18762 {
18763   auto res = isl_val_is_nan(get());
18764   return manage(res);
18765 }
18766 
is_neg()18767 boolean val::is_neg() const
18768 {
18769   auto res = isl_val_is_neg(get());
18770   return manage(res);
18771 }
18772 
is_neginfty()18773 boolean val::is_neginfty() const
18774 {
18775   auto res = isl_val_is_neginfty(get());
18776   return manage(res);
18777 }
18778 
is_negone()18779 boolean val::is_negone() const
18780 {
18781   auto res = isl_val_is_negone(get());
18782   return manage(res);
18783 }
18784 
is_nonneg()18785 boolean val::is_nonneg() const
18786 {
18787   auto res = isl_val_is_nonneg(get());
18788   return manage(res);
18789 }
18790 
is_nonpos()18791 boolean val::is_nonpos() const
18792 {
18793   auto res = isl_val_is_nonpos(get());
18794   return manage(res);
18795 }
18796 
is_one()18797 boolean val::is_one() const
18798 {
18799   auto res = isl_val_is_one(get());
18800   return manage(res);
18801 }
18802 
is_pos()18803 boolean val::is_pos() const
18804 {
18805   auto res = isl_val_is_pos(get());
18806   return manage(res);
18807 }
18808 
is_rat()18809 boolean val::is_rat() const
18810 {
18811   auto res = isl_val_is_rat(get());
18812   return manage(res);
18813 }
18814 
is_zero()18815 boolean val::is_zero() const
18816 {
18817   auto res = isl_val_is_zero(get());
18818   return manage(res);
18819 }
18820 
le(const isl::checked::val & v2)18821 boolean val::le(const isl::checked::val &v2) const
18822 {
18823   auto res = isl_val_le(get(), v2.get());
18824   return manage(res);
18825 }
18826 
le(long v2)18827 boolean val::le(long v2) const
18828 {
18829   return this->le(isl::checked::val(ctx(), v2));
18830 }
18831 
lt(const isl::checked::val & v2)18832 boolean val::lt(const isl::checked::val &v2) const
18833 {
18834   auto res = isl_val_lt(get(), v2.get());
18835   return manage(res);
18836 }
18837 
lt(long v2)18838 boolean val::lt(long v2) const
18839 {
18840   return this->lt(isl::checked::val(ctx(), v2));
18841 }
18842 
max(isl::checked::val v2)18843 isl::checked::val val::max(isl::checked::val v2) const
18844 {
18845   auto res = isl_val_max(copy(), v2.release());
18846   return manage(res);
18847 }
18848 
max(long v2)18849 isl::checked::val val::max(long v2) const
18850 {
18851   return this->max(isl::checked::val(ctx(), v2));
18852 }
18853 
min(isl::checked::val v2)18854 isl::checked::val val::min(isl::checked::val v2) const
18855 {
18856   auto res = isl_val_min(copy(), v2.release());
18857   return manage(res);
18858 }
18859 
min(long v2)18860 isl::checked::val val::min(long v2) const
18861 {
18862   return this->min(isl::checked::val(ctx(), v2));
18863 }
18864 
mod(isl::checked::val v2)18865 isl::checked::val val::mod(isl::checked::val v2) const
18866 {
18867   auto res = isl_val_mod(copy(), v2.release());
18868   return manage(res);
18869 }
18870 
mod(long v2)18871 isl::checked::val val::mod(long v2) const
18872 {
18873   return this->mod(isl::checked::val(ctx(), v2));
18874 }
18875 
mul(isl::checked::val v2)18876 isl::checked::val val::mul(isl::checked::val v2) const
18877 {
18878   auto res = isl_val_mul(copy(), v2.release());
18879   return manage(res);
18880 }
18881 
mul(long v2)18882 isl::checked::val val::mul(long v2) const
18883 {
18884   return this->mul(isl::checked::val(ctx(), v2));
18885 }
18886 
nan(isl::checked::ctx ctx)18887 isl::checked::val val::nan(isl::checked::ctx ctx)
18888 {
18889   auto res = isl_val_nan(ctx.release());
18890   return manage(res);
18891 }
18892 
ne(const isl::checked::val & v2)18893 boolean val::ne(const isl::checked::val &v2) const
18894 {
18895   auto res = isl_val_ne(get(), v2.get());
18896   return manage(res);
18897 }
18898 
ne(long v2)18899 boolean val::ne(long v2) const
18900 {
18901   return this->ne(isl::checked::val(ctx(), v2));
18902 }
18903 
neg()18904 isl::checked::val val::neg() const
18905 {
18906   auto res = isl_val_neg(copy());
18907   return manage(res);
18908 }
18909 
neginfty(isl::checked::ctx ctx)18910 isl::checked::val val::neginfty(isl::checked::ctx ctx)
18911 {
18912   auto res = isl_val_neginfty(ctx.release());
18913   return manage(res);
18914 }
18915 
negone(isl::checked::ctx ctx)18916 isl::checked::val val::negone(isl::checked::ctx ctx)
18917 {
18918   auto res = isl_val_negone(ctx.release());
18919   return manage(res);
18920 }
18921 
num_si()18922 long val::num_si() const
18923 {
18924   auto res = isl_val_get_num_si(get());
18925   return res;
18926 }
18927 
get_num_si()18928 long val::get_num_si() const
18929 {
18930   return num_si();
18931 }
18932 
one(isl::checked::ctx ctx)18933 isl::checked::val val::one(isl::checked::ctx ctx)
18934 {
18935   auto res = isl_val_one(ctx.release());
18936   return manage(res);
18937 }
18938 
pow2()18939 isl::checked::val val::pow2() const
18940 {
18941   auto res = isl_val_pow2(copy());
18942   return manage(res);
18943 }
18944 
sgn()18945 int val::sgn() const
18946 {
18947   auto res = isl_val_sgn(get());
18948   return res;
18949 }
18950 
sub(isl::checked::val v2)18951 isl::checked::val val::sub(isl::checked::val v2) const
18952 {
18953   auto res = isl_val_sub(copy(), v2.release());
18954   return manage(res);
18955 }
18956 
sub(long v2)18957 isl::checked::val val::sub(long v2) const
18958 {
18959   return this->sub(isl::checked::val(ctx(), v2));
18960 }
18961 
to_list()18962 isl::checked::val_list val::to_list() const
18963 {
18964   auto res = isl_val_to_list(copy());
18965   return manage(res);
18966 }
18967 
trunc()18968 isl::checked::val val::trunc() const
18969 {
18970   auto res = isl_val_trunc(copy());
18971   return manage(res);
18972 }
18973 
zero(isl::checked::ctx ctx)18974 isl::checked::val val::zero(isl::checked::ctx ctx)
18975 {
18976   auto res = isl_val_zero(ctx.release());
18977   return manage(res);
18978 }
18979 
18980 inline std::ostream &operator<<(std::ostream &os, const val &obj)
18981 {
18982   char *str = isl_val_to_str(obj.get());
18983   if (!str) {
18984     os.setstate(std::ios_base::badbit);
18985     return os;
18986   }
18987   os << str;
18988   free(str);
18989   return os;
18990 }
18991 
18992 // implementations for isl::val_list
manage(__isl_take isl_val_list * ptr)18993 val_list manage(__isl_take isl_val_list *ptr) {
18994   return val_list(ptr);
18995 }
manage_copy(__isl_keep isl_val_list * ptr)18996 val_list manage_copy(__isl_keep isl_val_list *ptr) {
18997   ptr = isl_val_list_copy(ptr);
18998   return val_list(ptr);
18999 }
19000 
val_list()19001 val_list::val_list()
19002     : ptr(nullptr) {}
19003 
val_list(const val_list & obj)19004 val_list::val_list(const val_list &obj)
19005     : ptr(nullptr)
19006 {
19007   ptr = obj.copy();
19008 }
19009 
val_list(__isl_take isl_val_list * ptr)19010 val_list::val_list(__isl_take isl_val_list *ptr)
19011     : ptr(ptr) {}
19012 
val_list(isl::checked::ctx ctx,int n)19013 val_list::val_list(isl::checked::ctx ctx, int n)
19014 {
19015   auto res = isl_val_list_alloc(ctx.release(), n);
19016   ptr = res;
19017 }
19018 
val_list(isl::checked::val el)19019 val_list::val_list(isl::checked::val el)
19020 {
19021   auto res = isl_val_list_from_val(el.release());
19022   ptr = res;
19023 }
19024 
19025 val_list &val_list::operator=(val_list obj) {
19026   std::swap(this->ptr, obj.ptr);
19027   return *this;
19028 }
19029 
~val_list()19030 val_list::~val_list() {
19031   if (ptr)
19032     isl_val_list_free(ptr);
19033 }
19034 
copy()19035 __isl_give isl_val_list *val_list::copy() const & {
19036   return isl_val_list_copy(ptr);
19037 }
19038 
get()19039 __isl_keep isl_val_list *val_list::get() const {
19040   return ptr;
19041 }
19042 
release()19043 __isl_give isl_val_list *val_list::release() {
19044   isl_val_list *tmp = ptr;
19045   ptr = nullptr;
19046   return tmp;
19047 }
19048 
is_null()19049 bool val_list::is_null() const {
19050   return ptr == nullptr;
19051 }
19052 
ctx()19053 isl::checked::ctx val_list::ctx() const {
19054   return isl::checked::ctx(isl_val_list_get_ctx(ptr));
19055 }
19056 
add(isl::checked::val el)19057 isl::checked::val_list val_list::add(isl::checked::val el) const
19058 {
19059   auto res = isl_val_list_add(copy(), el.release());
19060   return manage(res);
19061 }
19062 
add(long el)19063 isl::checked::val_list val_list::add(long el) const
19064 {
19065   return this->add(isl::checked::val(ctx(), el));
19066 }
19067 
at(int index)19068 isl::checked::val val_list::at(int index) const
19069 {
19070   auto res = isl_val_list_get_at(get(), index);
19071   return manage(res);
19072 }
19073 
get_at(int index)19074 isl::checked::val val_list::get_at(int index) const
19075 {
19076   return at(index);
19077 }
19078 
clear()19079 isl::checked::val_list val_list::clear() const
19080 {
19081   auto res = isl_val_list_clear(copy());
19082   return manage(res);
19083 }
19084 
concat(isl::checked::val_list list2)19085 isl::checked::val_list val_list::concat(isl::checked::val_list list2) const
19086 {
19087   auto res = isl_val_list_concat(copy(), list2.release());
19088   return manage(res);
19089 }
19090 
drop(unsigned int first,unsigned int n)19091 isl::checked::val_list val_list::drop(unsigned int first, unsigned int n) const
19092 {
19093   auto res = isl_val_list_drop(copy(), first, n);
19094   return manage(res);
19095 }
19096 
foreach(const std::function<stat (isl::checked::val)> & fn)19097 stat val_list::foreach(const std::function<stat(isl::checked::val)> &fn) const
19098 {
19099   struct fn_data {
19100     std::function<stat(isl::checked::val)> func;
19101   } fn_data = { fn };
19102   auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
19103     auto *data = static_cast<struct fn_data *>(arg_1);
19104     auto ret = (data->func)(manage(arg_0));
19105     return ret.release();
19106   };
19107   auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
19108   return manage(res);
19109 }
19110 
insert(unsigned int pos,isl::checked::val el)19111 isl::checked::val_list val_list::insert(unsigned int pos, isl::checked::val el) const
19112 {
19113   auto res = isl_val_list_insert(copy(), pos, el.release());
19114   return manage(res);
19115 }
19116 
insert(unsigned int pos,long el)19117 isl::checked::val_list val_list::insert(unsigned int pos, long el) const
19118 {
19119   return this->insert(pos, isl::checked::val(ctx(), el));
19120 }
19121 
size()19122 class size val_list::size() const
19123 {
19124   auto res = isl_val_list_size(get());
19125   return manage(res);
19126 }
19127 
19128 inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
19129 {
19130   char *str = isl_val_list_to_str(obj.get());
19131   if (!str) {
19132     os.setstate(std::ios_base::badbit);
19133     return os;
19134   }
19135   os << str;
19136   free(str);
19137   return os;
19138 }
19139 } // namespace checked
19140 } // namespace isl
19141 
19142 #endif /* ISL_CPP_CHECKED */
19143