Coverage Report

Created: 2018-06-24 14:39

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/polly/lib/External/isl/include/isl/isl-noexceptions.h
Line
Count
Source (jump to first uncovered line)
1
/// These are automatically generated C++ bindings without exceptions 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_NOEXCEPTIONS
9
#define ISL_CPP_NOEXCEPTIONS
10
11
#include <isl/val.h>
12
#include <isl/aff.h>
13
#include <isl/set.h>
14
#include <isl/space.h>
15
#include <isl/id.h>
16
#include <isl/map.h>
17
#include <isl/vec.h>
18
#include <isl/ilp.h>
19
#include <isl/union_set.h>
20
#include <isl/union_map.h>
21
#include <isl/flow.h>
22
#include <isl/schedule.h>
23
#include <isl/schedule_node.h>
24
#include <isl/ast_build.h>
25
#include <isl/constraint.h>
26
#include <isl/polynomial.h>
27
#include <isl/mat.h>
28
29
#include <functional>
30
#include <string>
31
32
namespace isl {
33
inline namespace noexceptions {
34
35
#define ISLPP_STRINGIZE_(X) #X
36
#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
37
38
#define ISLPP_ASSERT(test, message)                          \
39
57.1k
  do {                                                       \
40
57.1k
    if (test)                                                \
41
57.1k
      break;                                                 \
42
57.1k
    fputs("Assertion \"" #test "\" failed at " __FILE__      \
43
0
      ":" ISLPP_STRINGIZE(__LINE__) "\n  " message "\n",     \
44
0
      stderr);                                               \
45
0
    abort();                                                 \
46
57.1k
  } while (
00
)
47
48
class boolean {
49
private:
50
  isl_bool val;
51
52
  friend isl::boolean manage(isl_bool val);
53
58.7k
  boolean(isl_bool val): val(val) {}
54
public:
55
  boolean()
56
0
      : val(isl_bool_error) {}
57
58
  /* implicit */ boolean(bool val)
59
15.7k
      : val(val ? isl_bool_true : isl_bool_false) {}
60
61
72.9k
  bool is_error() const { return val == isl_bool_error; }
62
1.16k
  bool is_false() const { return val == isl_bool_false; }
63
73.3k
  bool is_true() const { return val == isl_bool_true; }
64
65
57.1k
  operator bool() const {
66
57.1k
    ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
67
57.1k
    return is_true();
68
57.1k
  }
69
70
15.7k
  boolean operator!() const {
71
15.7k
    if (is_error())
72
0
      return *this;
73
15.7k
    return !is_true();
74
15.7k
  }
75
};
76
77
58.7k
inline isl::boolean manage(isl_bool val) {
78
58.7k
  return isl::boolean(val);
79
58.7k
}
80
81
class ctx {
82
  isl_ctx *ptr;
83
public:
84
  /* implicit */ ctx(isl_ctx *ctx)
85
51.8k
      : ptr(ctx) {}
86
51.8k
  isl_ctx *release() {
87
51.8k
    auto tmp = ptr;
88
51.8k
    ptr = nullptr;
89
51.8k
    return tmp;
90
51.8k
  }
91
61.9k
  isl_ctx *get() {
92
61.9k
    return ptr;
93
61.9k
  }
94
};
95
96
enum class stat {
97
  ok = isl_stat_ok,
98
  error = isl_stat_error
99
};
100
101
enum class dim {
102
  cst = isl_dim_cst,
103
  param = isl_dim_param,
104
  in = isl_dim_in,
105
  out = isl_dim_out,
106
  set = isl_dim_set,
107
  div = isl_dim_div,
108
  all = isl_dim_all
109
};
110
111
}
112
} // namespace isl
113
114
namespace isl {
115
116
inline namespace noexceptions {
117
118
// forward declarations
119
class aff;
120
class aff_list;
121
class ast_build;
122
class ast_expr;
123
class ast_expr_list;
124
class ast_node;
125
class ast_node_list;
126
class basic_map;
127
class basic_map_list;
128
class basic_set;
129
class basic_set_list;
130
class constraint;
131
class constraint_list;
132
class id;
133
class id_list;
134
class id_to_ast_expr;
135
class local_space;
136
class map;
137
class map_list;
138
class mat;
139
class multi_aff;
140
class multi_pw_aff;
141
class multi_union_pw_aff;
142
class multi_val;
143
class point;
144
class pw_aff;
145
class pw_aff_list;
146
class pw_multi_aff;
147
class pw_qpolynomial;
148
class qpolynomial;
149
class schedule;
150
class schedule_constraints;
151
class schedule_node;
152
class set;
153
class set_list;
154
class space;
155
class term;
156
class union_access_info;
157
class union_flow;
158
class union_map;
159
class union_map_list;
160
class union_pw_aff;
161
class union_pw_aff_list;
162
class union_pw_multi_aff;
163
class union_pw_multi_aff_list;
164
class union_pw_qpolynomial;
165
class union_set;
166
class union_set_list;
167
class val;
168
class val_list;
169
class vec;
170
171
// declarations for isl::aff
172
inline isl::aff manage(__isl_take isl_aff *ptr);
173
inline isl::aff manage_copy(__isl_keep isl_aff *ptr);
174
175
class aff {
176
  friend inline isl::aff manage(__isl_take isl_aff *ptr);
177
  friend inline isl::aff manage_copy(__isl_keep isl_aff *ptr);
178
179
  isl_aff *ptr = nullptr;
180
181
  inline explicit aff(__isl_take isl_aff *ptr);
182
183
public:
184
  inline /* implicit */ aff();
185
  inline /* implicit */ aff(const isl::aff &obj);
186
  inline /* implicit */ aff(std::nullptr_t);
187
  inline explicit aff(isl::local_space ls);
188
  inline explicit aff(isl::local_space ls, isl::val val);
189
  inline explicit aff(isl::ctx ctx, const std::string &str);
190
  inline isl::aff &operator=(isl::aff obj);
191
  inline ~aff();
192
  inline __isl_give isl_aff *copy() const &;
193
  inline __isl_give isl_aff *copy() && = delete;
194
  inline __isl_keep isl_aff *get() const;
195
  inline __isl_give isl_aff *release();
196
  inline bool is_null() const;
197
  inline explicit operator bool() const;
198
  inline isl::ctx get_ctx() const;
199
  inline std::string to_str() const;
200
  inline void dump() const;
201
202
  inline isl::aff add(isl::aff aff2) const;
203
  inline isl::aff add_coefficient_si(isl::dim type, int pos, int v) const;
204
  inline isl::aff add_coefficient_val(isl::dim type, int pos, isl::val v) const;
205
  inline isl::aff add_constant_num_si(int v) const;
206
  inline isl::aff add_constant_si(int v) const;
207
  inline isl::aff add_constant_val(isl::val v) const;
208
  inline isl::aff add_dims(isl::dim type, unsigned int n) const;
209
  inline isl::aff align_params(isl::space model) const;
210
  inline isl::aff ceil() const;
211
  inline int coefficient_sgn(isl::dim type, int pos) const;
212
  inline int dim(isl::dim type) const;
213
  inline isl::aff div(isl::aff aff2) const;
214
  inline isl::aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
215
  inline isl::basic_set eq_basic_set(isl::aff aff2) const;
216
  inline isl::set eq_set(isl::aff aff2) const;
217
  inline isl::val eval(isl::point pnt) const;
218
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
219
  inline isl::aff floor() const;
220
  inline isl::aff from_range() const;
221
  inline isl::basic_set ge_basic_set(isl::aff aff2) const;
222
  inline isl::set ge_set(isl::aff aff2) const;
223
  inline isl::val get_coefficient_val(isl::dim type, int pos) const;
224
  inline isl::val get_constant_val() const;
225
  inline isl::val get_denominator_val() const;
226
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
227
  inline isl::aff get_div(int pos) const;
228
  inline isl::local_space get_domain_local_space() const;
229
  inline isl::space get_domain_space() const;
230
  inline uint32_t get_hash() const;
231
  inline isl::local_space get_local_space() const;
232
  inline isl::space get_space() const;
233
  inline isl::aff gist(isl::set context) const;
234
  inline isl::aff gist_params(isl::set context) const;
235
  inline isl::basic_set gt_basic_set(isl::aff aff2) const;
236
  inline isl::set gt_set(isl::aff aff2) const;
237
  inline isl::aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
238
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
239
  inline isl::boolean is_cst() const;
240
  inline isl::boolean is_nan() const;
241
  inline isl::basic_set le_basic_set(isl::aff aff2) const;
242
  inline isl::set le_set(isl::aff aff2) const;
243
  inline isl::basic_set lt_basic_set(isl::aff aff2) const;
244
  inline isl::set lt_set(isl::aff aff2) const;
245
  inline isl::aff mod(isl::val mod) const;
246
  inline isl::aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
247
  inline isl::aff mul(isl::aff aff2) const;
248
  static inline isl::aff nan_on_domain(isl::local_space ls);
249
  inline isl::set ne_set(isl::aff aff2) const;
250
  inline isl::aff neg() const;
251
  inline isl::basic_set neg_basic_set() const;
252
  static inline isl::aff param_on_domain_space_id(isl::space space, isl::id id);
253
  inline isl::boolean plain_is_equal(const isl::aff &aff2) const;
254
  inline isl::boolean plain_is_zero() const;
255
  inline isl::aff project_domain_on_params() const;
256
  inline isl::aff pullback(isl::multi_aff ma) const;
257
  inline isl::aff pullback_aff(isl::aff aff2) const;
258
  inline isl::aff scale(isl::val v) const;
259
  inline isl::aff scale_down(isl::val v) const;
260
  inline isl::aff scale_down_ui(unsigned int f) const;
261
  inline isl::aff set_coefficient_si(isl::dim type, int pos, int v) const;
262
  inline isl::aff set_coefficient_val(isl::dim type, int pos, isl::val v) const;
263
  inline isl::aff set_constant_si(int v) const;
264
  inline isl::aff set_constant_val(isl::val v) const;
265
  inline isl::aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
266
  inline isl::aff set_tuple_id(isl::dim type, isl::id id) const;
267
  inline isl::aff sub(isl::aff aff2) const;
268
  static inline isl::aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
269
  inline isl::basic_set zero_basic_set() const;
270
};
271
272
// declarations for isl::aff_list
273
inline isl::aff_list manage(__isl_take isl_aff_list *ptr);
274
inline isl::aff_list manage_copy(__isl_keep isl_aff_list *ptr);
275
276
class aff_list {
277
  friend inline isl::aff_list manage(__isl_take isl_aff_list *ptr);
278
  friend inline isl::aff_list manage_copy(__isl_keep isl_aff_list *ptr);
279
280
  isl_aff_list *ptr = nullptr;
281
282
  inline explicit aff_list(__isl_take isl_aff_list *ptr);
283
284
public:
285
  inline /* implicit */ aff_list();
286
  inline /* implicit */ aff_list(const isl::aff_list &obj);
287
  inline /* implicit */ aff_list(std::nullptr_t);
288
  inline isl::aff_list &operator=(isl::aff_list obj);
289
  inline ~aff_list();
290
  inline __isl_give isl_aff_list *copy() const &;
291
  inline __isl_give isl_aff_list *copy() && = delete;
292
  inline __isl_keep isl_aff_list *get() const;
293
  inline __isl_give isl_aff_list *release();
294
  inline bool is_null() const;
295
  inline explicit operator bool() const;
296
  inline isl::ctx get_ctx() const;
297
  inline void dump() const;
298
299
  inline isl::aff_list add(isl::aff el) const;
300
  static inline isl::aff_list alloc(isl::ctx ctx, int n);
301
  inline isl::aff_list concat(isl::aff_list list2) const;
302
  inline isl::aff_list drop(unsigned int first, unsigned int n) const;
303
  inline isl::stat foreach(const std::function<isl::stat(isl::aff)> &fn) const;
304
  static inline isl::aff_list from_aff(isl::aff el);
305
  inline isl::aff get_aff(int index) const;
306
  inline isl::aff_list insert(unsigned int pos, isl::aff el) const;
307
  inline int n_aff() const;
308
  inline isl::aff_list set_aff(int index, isl::aff el) const;
309
};
310
311
// declarations for isl::ast_build
312
inline isl::ast_build manage(__isl_take isl_ast_build *ptr);
313
inline isl::ast_build manage_copy(__isl_keep isl_ast_build *ptr);
314
315
class ast_build {
316
  friend inline isl::ast_build manage(__isl_take isl_ast_build *ptr);
317
  friend inline isl::ast_build manage_copy(__isl_keep isl_ast_build *ptr);
318
319
  isl_ast_build *ptr = nullptr;
320
321
  inline explicit ast_build(__isl_take isl_ast_build *ptr);
322
323
public:
324
  inline /* implicit */ ast_build();
325
  inline /* implicit */ ast_build(const isl::ast_build &obj);
326
  inline /* implicit */ ast_build(std::nullptr_t);
327
  inline explicit ast_build(isl::ctx ctx);
328
  inline isl::ast_build &operator=(isl::ast_build obj);
329
  inline ~ast_build();
330
  inline __isl_give isl_ast_build *copy() const &;
331
  inline __isl_give isl_ast_build *copy() && = delete;
332
  inline __isl_keep isl_ast_build *get() const;
333
  inline __isl_give isl_ast_build *release();
334
  inline bool is_null() const;
335
  inline explicit operator bool() const;
336
  inline isl::ctx get_ctx() const;
337
338
  inline isl::ast_expr access_from(isl::pw_multi_aff pma) const;
339
  inline isl::ast_expr access_from(isl::multi_pw_aff mpa) const;
340
  inline isl::ast_node ast_from_schedule(isl::union_map schedule) const;
341
  inline isl::ast_expr call_from(isl::pw_multi_aff pma) const;
342
  inline isl::ast_expr call_from(isl::multi_pw_aff mpa) const;
343
  inline isl::ast_expr expr_from(isl::set set) const;
344
  inline isl::ast_expr expr_from(isl::pw_aff pa) const;
345
  static inline isl::ast_build from_context(isl::set set);
346
  inline isl::union_map get_schedule() const;
347
  inline isl::space get_schedule_space() const;
348
  inline isl::ast_node node_from_schedule(isl::schedule schedule) const;
349
  inline isl::ast_node node_from_schedule_map(isl::union_map schedule) const;
350
  inline isl::ast_build restrict(isl::set set) const;
351
};
352
353
// declarations for isl::ast_expr
354
inline isl::ast_expr manage(__isl_take isl_ast_expr *ptr);
355
inline isl::ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
356
357
class ast_expr {
358
  friend inline isl::ast_expr manage(__isl_take isl_ast_expr *ptr);
359
  friend inline isl::ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
360
361
  isl_ast_expr *ptr = nullptr;
362
363
  inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
364
365
public:
366
  inline /* implicit */ ast_expr();
367
  inline /* implicit */ ast_expr(const isl::ast_expr &obj);
368
  inline /* implicit */ ast_expr(std::nullptr_t);
369
  inline isl::ast_expr &operator=(isl::ast_expr obj);
370
  inline ~ast_expr();
371
  inline __isl_give isl_ast_expr *copy() const &;
372
  inline __isl_give isl_ast_expr *copy() && = delete;
373
  inline __isl_keep isl_ast_expr *get() const;
374
  inline __isl_give isl_ast_expr *release();
375
  inline bool is_null() const;
376
  inline explicit operator bool() const;
377
  inline isl::ctx get_ctx() const;
378
  inline std::string to_str() const;
379
  inline void dump() const;
380
381
  inline isl::ast_expr access(isl::ast_expr_list indices) const;
382
  inline isl::ast_expr add(isl::ast_expr expr2) const;
383
  inline isl::ast_expr address_of() const;
384
  inline isl::ast_expr call(isl::ast_expr_list arguments) const;
385
  inline isl::ast_expr div(isl::ast_expr expr2) const;
386
  inline isl::ast_expr eq(isl::ast_expr expr2) const;
387
  static inline isl::ast_expr from_id(isl::id id);
388
  static inline isl::ast_expr from_val(isl::val v);
389
  inline isl::ast_expr ge(isl::ast_expr expr2) const;
390
  inline isl::id get_id() const;
391
  inline isl::ast_expr get_op_arg(int pos) const;
392
  inline int get_op_n_arg() const;
393
  inline isl::val get_val() const;
394
  inline isl::ast_expr gt(isl::ast_expr expr2) const;
395
  inline isl::boolean is_equal(const isl::ast_expr &expr2) const;
396
  inline isl::ast_expr le(isl::ast_expr expr2) const;
397
  inline isl::ast_expr lt(isl::ast_expr expr2) const;
398
  inline isl::ast_expr mul(isl::ast_expr expr2) const;
399
  inline isl::ast_expr neg() const;
400
  inline isl::ast_expr pdiv_q(isl::ast_expr expr2) const;
401
  inline isl::ast_expr pdiv_r(isl::ast_expr expr2) const;
402
  inline isl::ast_expr set_op_arg(int pos, isl::ast_expr arg) const;
403
  inline isl::ast_expr sub(isl::ast_expr expr2) const;
404
  inline isl::ast_expr substitute_ids(isl::id_to_ast_expr id2expr) const;
405
  inline std::string to_C_str() const;
406
};
407
408
// declarations for isl::ast_expr_list
409
inline isl::ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
410
inline isl::ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
411
412
class ast_expr_list {
413
  friend inline isl::ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
414
  friend inline isl::ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
415
416
  isl_ast_expr_list *ptr = nullptr;
417
418
  inline explicit ast_expr_list(__isl_take isl_ast_expr_list *ptr);
419
420
public:
421
  inline /* implicit */ ast_expr_list();
422
  inline /* implicit */ ast_expr_list(const isl::ast_expr_list &obj);
423
  inline /* implicit */ ast_expr_list(std::nullptr_t);
424
  inline isl::ast_expr_list &operator=(isl::ast_expr_list obj);
425
  inline ~ast_expr_list();
426
  inline __isl_give isl_ast_expr_list *copy() const &;
427
  inline __isl_give isl_ast_expr_list *copy() && = delete;
428
  inline __isl_keep isl_ast_expr_list *get() const;
429
  inline __isl_give isl_ast_expr_list *release();
430
  inline bool is_null() const;
431
  inline explicit operator bool() const;
432
  inline isl::ctx get_ctx() const;
433
  inline void dump() const;
434
435
  inline isl::ast_expr_list add(isl::ast_expr el) const;
436
  static inline isl::ast_expr_list alloc(isl::ctx ctx, int n);
437
  inline isl::ast_expr_list concat(isl::ast_expr_list list2) const;
438
  inline isl::ast_expr_list drop(unsigned int first, unsigned int n) const;
439
  inline isl::stat foreach(const std::function<isl::stat(isl::ast_expr)> &fn) const;
440
  static inline isl::ast_expr_list from_ast_expr(isl::ast_expr el);
441
  inline isl::ast_expr get_ast_expr(int index) const;
442
  inline isl::ast_expr_list insert(unsigned int pos, isl::ast_expr el) const;
443
  inline int n_ast_expr() const;
444
  inline isl::ast_expr_list set_ast_expr(int index, isl::ast_expr el) const;
445
};
446
447
// declarations for isl::ast_node
448
inline isl::ast_node manage(__isl_take isl_ast_node *ptr);
449
inline isl::ast_node manage_copy(__isl_keep isl_ast_node *ptr);
450
451
class ast_node {
452
  friend inline isl::ast_node manage(__isl_take isl_ast_node *ptr);
453
  friend inline isl::ast_node manage_copy(__isl_keep isl_ast_node *ptr);
454
455
  isl_ast_node *ptr = nullptr;
456
457
  inline explicit ast_node(__isl_take isl_ast_node *ptr);
458
459
public:
460
  inline /* implicit */ ast_node();
461
  inline /* implicit */ ast_node(const isl::ast_node &obj);
462
  inline /* implicit */ ast_node(std::nullptr_t);
463
  inline isl::ast_node &operator=(isl::ast_node obj);
464
  inline ~ast_node();
465
  inline __isl_give isl_ast_node *copy() const &;
466
  inline __isl_give isl_ast_node *copy() && = delete;
467
  inline __isl_keep isl_ast_node *get() const;
468
  inline __isl_give isl_ast_node *release();
469
  inline bool is_null() const;
470
  inline explicit operator bool() const;
471
  inline isl::ctx get_ctx() const;
472
  inline std::string to_str() const;
473
  inline void dump() const;
474
475
  static inline isl::ast_node alloc_user(isl::ast_expr expr);
476
  inline isl::ast_node_list block_get_children() const;
477
  inline isl::ast_node for_get_body() const;
478
  inline isl::ast_expr for_get_cond() const;
479
  inline isl::ast_expr for_get_inc() const;
480
  inline isl::ast_expr for_get_init() const;
481
  inline isl::ast_expr for_get_iterator() const;
482
  inline isl::boolean for_is_degenerate() const;
483
  inline isl::id get_annotation() const;
484
  inline isl::ast_expr if_get_cond() const;
485
  inline isl::ast_node if_get_else() const;
486
  inline isl::ast_node if_get_then() const;
487
  inline isl::boolean if_has_else() const;
488
  inline isl::id mark_get_id() const;
489
  inline isl::ast_node mark_get_node() const;
490
  inline isl::ast_node set_annotation(isl::id annotation) const;
491
  inline std::string to_C_str() const;
492
  inline isl::ast_expr user_get_expr() const;
493
};
494
495
// declarations for isl::ast_node_list
496
inline isl::ast_node_list manage(__isl_take isl_ast_node_list *ptr);
497
inline isl::ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
498
499
class ast_node_list {
500
  friend inline isl::ast_node_list manage(__isl_take isl_ast_node_list *ptr);
501
  friend inline isl::ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
502
503
  isl_ast_node_list *ptr = nullptr;
504
505
  inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
506
507
public:
508
  inline /* implicit */ ast_node_list();
509
  inline /* implicit */ ast_node_list(const isl::ast_node_list &obj);
510
  inline /* implicit */ ast_node_list(std::nullptr_t);
511
  inline isl::ast_node_list &operator=(isl::ast_node_list obj);
512
  inline ~ast_node_list();
513
  inline __isl_give isl_ast_node_list *copy() const &;
514
  inline __isl_give isl_ast_node_list *copy() && = delete;
515
  inline __isl_keep isl_ast_node_list *get() const;
516
  inline __isl_give isl_ast_node_list *release();
517
  inline bool is_null() const;
518
  inline explicit operator bool() const;
519
  inline isl::ctx get_ctx() const;
520
  inline void dump() const;
521
522
  inline isl::ast_node_list add(isl::ast_node el) const;
523
  static inline isl::ast_node_list alloc(isl::ctx ctx, int n);
524
  inline isl::ast_node_list concat(isl::ast_node_list list2) const;
525
  inline isl::ast_node_list drop(unsigned int first, unsigned int n) const;
526
  inline isl::stat foreach(const std::function<isl::stat(isl::ast_node)> &fn) const;
527
  static inline isl::ast_node_list from_ast_node(isl::ast_node el);
528
  inline isl::ast_node get_ast_node(int index) const;
529
  inline isl::ast_node_list insert(unsigned int pos, isl::ast_node el) const;
530
  inline int n_ast_node() const;
531
  inline isl::ast_node_list set_ast_node(int index, isl::ast_node el) const;
532
};
533
534
// declarations for isl::basic_map
535
inline isl::basic_map manage(__isl_take isl_basic_map *ptr);
536
inline isl::basic_map manage_copy(__isl_keep isl_basic_map *ptr);
537
538
class basic_map {
539
  friend inline isl::basic_map manage(__isl_take isl_basic_map *ptr);
540
  friend inline isl::basic_map manage_copy(__isl_keep isl_basic_map *ptr);
541
542
  isl_basic_map *ptr = nullptr;
543
544
  inline explicit basic_map(__isl_take isl_basic_map *ptr);
545
546
public:
547
  inline /* implicit */ basic_map();
548
  inline /* implicit */ basic_map(const isl::basic_map &obj);
549
  inline /* implicit */ basic_map(std::nullptr_t);
550
  inline explicit basic_map(isl::ctx ctx, const std::string &str);
551
  inline isl::basic_map &operator=(isl::basic_map obj);
552
  inline ~basic_map();
553
  inline __isl_give isl_basic_map *copy() const &;
554
  inline __isl_give isl_basic_map *copy() && = delete;
555
  inline __isl_keep isl_basic_map *get() const;
556
  inline __isl_give isl_basic_map *release();
557
  inline bool is_null() const;
558
  inline explicit operator bool() const;
559
  inline isl::ctx get_ctx() const;
560
  inline std::string to_str() const;
561
  inline void dump() const;
562
563
  inline isl::basic_map add_constraint(isl::constraint constraint) const;
564
  inline isl::basic_map add_dims(isl::dim type, unsigned int n) const;
565
  inline isl::basic_map affine_hull() const;
566
  inline isl::basic_map align_params(isl::space model) const;
567
  inline isl::basic_map apply_domain(isl::basic_map bmap2) const;
568
  inline isl::basic_map apply_range(isl::basic_map bmap2) const;
569
  inline isl::boolean can_curry() const;
570
  inline isl::boolean can_uncurry() const;
571
  inline isl::boolean can_zip() const;
572
  inline isl::basic_map curry() const;
573
  inline isl::basic_set deltas() const;
574
  inline isl::basic_map deltas_map() const;
575
  inline isl::basic_map detect_equalities() const;
576
  inline unsigned int dim(isl::dim type) const;
577
  inline isl::basic_set domain() const;
578
  inline isl::basic_map domain_map() const;
579
  inline isl::basic_map domain_product(isl::basic_map bmap2) const;
580
  inline isl::basic_map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
581
  inline isl::basic_map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
582
  inline isl::basic_map drop_unused_params() const;
583
  inline isl::basic_map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
584
  static inline isl::basic_map empty(isl::space space);
585
  static inline isl::basic_map equal(isl::space dim, unsigned int n_equal);
586
  inline isl::basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
587
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
588
  inline isl::basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
589
  inline isl::basic_map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
590
  inline isl::basic_map flat_product(isl::basic_map bmap2) const;
591
  inline isl::basic_map flat_range_product(isl::basic_map bmap2) const;
592
  inline isl::basic_map flatten() const;
593
  inline isl::basic_map flatten_domain() const;
594
  inline isl::basic_map flatten_range() const;
595
  inline isl::stat foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const;
596
  static inline isl::basic_map from_aff(isl::aff aff);
597
  static inline isl::basic_map from_aff_list(isl::space domain_dim, isl::aff_list list);
598
  static inline isl::basic_map from_constraint(isl::constraint constraint);
599
  static inline isl::basic_map from_domain(isl::basic_set bset);
600
  static inline isl::basic_map from_domain_and_range(isl::basic_set domain, isl::basic_set range);
601
  static inline isl::basic_map from_multi_aff(isl::multi_aff maff);
602
  static inline isl::basic_map from_qpolynomial(isl::qpolynomial qp);
603
  static inline isl::basic_map from_range(isl::basic_set bset);
604
  inline isl::constraint_list get_constraint_list() const;
605
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
606
  inline isl::aff get_div(int pos) const;
607
  inline isl::local_space get_local_space() const;
608
  inline isl::space get_space() const;
609
  inline std::string get_tuple_name(isl::dim type) const;
610
  inline isl::basic_map gist(isl::basic_map context) const;
611
  inline isl::basic_map gist_domain(isl::basic_set context) const;
612
  inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
613
  static inline isl::basic_map identity(isl::space dim);
614
  inline isl::boolean image_is_bounded() const;
615
  inline isl::basic_map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
616
  inline isl::basic_map intersect(isl::basic_map bmap2) const;
617
  inline isl::basic_map intersect_domain(isl::basic_set bset) const;
618
  inline isl::basic_map intersect_range(isl::basic_set bset) const;
619
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
620
  inline isl::boolean is_disjoint(const isl::basic_map &bmap2) const;
621
  inline isl::boolean is_empty() const;
622
  inline isl::boolean is_equal(const isl::basic_map &bmap2) const;
623
  inline isl::boolean is_rational() const;
624
  inline isl::boolean is_single_valued() const;
625
  inline isl::boolean is_strict_subset(const isl::basic_map &bmap2) const;
626
  inline isl::boolean is_subset(const isl::basic_map &bmap2) const;
627
  inline isl::boolean is_universe() const;
628
  static inline isl::basic_map less_at(isl::space dim, unsigned int pos);
629
  inline isl::map lexmax() const;
630
  inline isl::map lexmin() const;
631
  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
632
  inline isl::basic_map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
633
  static inline isl::basic_map more_at(isl::space dim, unsigned int pos);
634
  inline isl::basic_map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
635
  inline int n_constraint() const;
636
  static inline isl::basic_map nat_universe(isl::space dim);
637
  inline isl::basic_map neg() const;
638
  inline isl::basic_map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
639
  inline isl::basic_map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
640
  inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
641
  inline isl::boolean plain_is_empty() const;
642
  inline isl::boolean plain_is_universe() const;
643
  inline isl::basic_map preimage_domain_multi_aff(isl::multi_aff ma) const;
644
  inline isl::basic_map preimage_range_multi_aff(isl::multi_aff ma) const;
645
  inline isl::basic_map product(isl::basic_map bmap2) const;
646
  inline isl::basic_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
647
  inline isl::basic_set range() const;
648
  inline isl::basic_map range_map() const;
649
  inline isl::basic_map range_product(isl::basic_map bmap2) const;
650
  inline isl::basic_map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
651
  inline isl::basic_map remove_divs() const;
652
  inline isl::basic_map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
653
  inline isl::basic_map remove_redundancies() const;
654
  inline isl::basic_map reverse() const;
655
  inline isl::basic_map sample() const;
656
  inline isl::basic_map set_tuple_id(isl::dim type, isl::id id) const;
657
  inline isl::basic_map set_tuple_name(isl::dim type, const std::string &s) const;
658
  inline isl::basic_map sum(isl::basic_map bmap2) const;
659
  inline isl::basic_map uncurry() const;
660
  inline isl::map unite(isl::basic_map bmap2) const;
661
  static inline isl::basic_map universe(isl::space space);
662
  inline isl::basic_map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
663
  inline isl::basic_set wrap() const;
664
  inline isl::basic_map zip() const;
665
};
666
667
// declarations for isl::basic_map_list
668
inline isl::basic_map_list manage(__isl_take isl_basic_map_list *ptr);
669
inline isl::basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
670
671
class basic_map_list {
672
  friend inline isl::basic_map_list manage(__isl_take isl_basic_map_list *ptr);
673
  friend inline isl::basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
674
675
  isl_basic_map_list *ptr = nullptr;
676
677
  inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
678
679
public:
680
  inline /* implicit */ basic_map_list();
681
  inline /* implicit */ basic_map_list(const isl::basic_map_list &obj);
682
  inline /* implicit */ basic_map_list(std::nullptr_t);
683
  inline isl::basic_map_list &operator=(isl::basic_map_list obj);
684
  inline ~basic_map_list();
685
  inline __isl_give isl_basic_map_list *copy() const &;
686
  inline __isl_give isl_basic_map_list *copy() && = delete;
687
  inline __isl_keep isl_basic_map_list *get() const;
688
  inline __isl_give isl_basic_map_list *release();
689
  inline bool is_null() const;
690
  inline explicit operator bool() const;
691
  inline isl::ctx get_ctx() const;
692
  inline void dump() const;
693
694
  inline isl::basic_map_list add(isl::basic_map el) const;
695
  static inline isl::basic_map_list alloc(isl::ctx ctx, int n);
696
  inline isl::basic_map_list concat(isl::basic_map_list list2) const;
697
  inline isl::basic_map_list drop(unsigned int first, unsigned int n) const;
698
  inline isl::stat foreach(const std::function<isl::stat(isl::basic_map)> &fn) const;
699
  static inline isl::basic_map_list from_basic_map(isl::basic_map el);
700
  inline isl::basic_map get_basic_map(int index) const;
701
  inline isl::basic_map_list insert(unsigned int pos, isl::basic_map el) const;
702
  inline isl::basic_map intersect() const;
703
  inline int n_basic_map() const;
704
  inline isl::basic_map_list set_basic_map(int index, isl::basic_map el) const;
705
};
706
707
// declarations for isl::basic_set
708
inline isl::basic_set manage(__isl_take isl_basic_set *ptr);
709
inline isl::basic_set manage_copy(__isl_keep isl_basic_set *ptr);
710
711
class basic_set {
712
  friend inline isl::basic_set manage(__isl_take isl_basic_set *ptr);
713
  friend inline isl::basic_set manage_copy(__isl_keep isl_basic_set *ptr);
714
715
  isl_basic_set *ptr = nullptr;
716
717
  inline explicit basic_set(__isl_take isl_basic_set *ptr);
718
719
public:
720
  inline /* implicit */ basic_set();
721
  inline /* implicit */ basic_set(const isl::basic_set &obj);
722
  inline /* implicit */ basic_set(std::nullptr_t);
723
  inline explicit basic_set(isl::ctx ctx, const std::string &str);
724
  inline /* implicit */ basic_set(isl::point pnt);
725
  inline isl::basic_set &operator=(isl::basic_set obj);
726
  inline ~basic_set();
727
  inline __isl_give isl_basic_set *copy() const &;
728
  inline __isl_give isl_basic_set *copy() && = delete;
729
  inline __isl_keep isl_basic_set *get() const;
730
  inline __isl_give isl_basic_set *release();
731
  inline bool is_null() const;
732
  inline explicit operator bool() const;
733
  inline isl::ctx get_ctx() const;
734
  inline std::string to_str() const;
735
  inline void dump() const;
736
737
  inline isl::basic_set affine_hull() const;
738
  inline isl::basic_set align_params(isl::space model) const;
739
  inline isl::basic_set apply(isl::basic_map bmap) const;
740
  static inline isl::basic_set box_from_points(isl::point pnt1, isl::point pnt2);
741
  inline isl::basic_set coefficients() const;
742
  inline isl::basic_set detect_equalities() const;
743
  inline unsigned int dim(isl::dim type) const;
744
  inline isl::val dim_max_val(int pos) const;
745
  inline isl::basic_set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
746
  inline isl::basic_set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
747
  inline isl::basic_set drop_unused_params() const;
748
  inline isl::basic_set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
749
  static inline isl::basic_set empty(isl::space space);
750
  inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
751
  inline isl::basic_set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
752
  inline isl::basic_set flat_product(isl::basic_set bset2) const;
753
  inline isl::basic_set flatten() const;
754
  inline isl::stat foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<isl::stat(isl::constraint, isl::constraint, isl::basic_set)> &fn) const;
755
  inline isl::stat foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const;
756
  static inline isl::basic_set from_constraint(isl::constraint constraint);
757
  inline isl::basic_set from_params() const;
758
  inline isl::constraint_list get_constraint_list() const;
759
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
760
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
761
  inline isl::aff get_div(int pos) const;
762
  inline isl::local_space get_local_space() const;
763
  inline isl::space get_space() const;
764
  inline std::string get_tuple_name() const;
765
  inline isl::basic_set gist(isl::basic_set context) const;
766
  inline isl::basic_set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
767
  inline isl::basic_set intersect(isl::basic_set bset2) const;
768
  inline isl::basic_set intersect_params(isl::basic_set bset2) const;
769
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
770
  inline isl::boolean is_bounded() const;
771
  inline isl::boolean is_disjoint(const isl::basic_set &bset2) const;
772
  inline isl::boolean is_empty() const;
773
  inline isl::boolean is_equal(const isl::basic_set &bset2) const;
774
  inline int is_rational() const;
775
  inline isl::boolean is_subset(const isl::basic_set &bset2) const;
776
  inline isl::boolean is_universe() const;
777
  inline isl::boolean is_wrapping() const;
778
  inline isl::set lexmax() const;
779
  inline isl::set lexmin() const;
780
  inline isl::basic_set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
781
  inline isl::val max_val(const isl::aff &obj) const;
782
  inline isl::basic_set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
783
  inline int n_constraint() const;
784
  inline unsigned int n_dim() const;
785
  static inline isl::basic_set nat_universe(isl::space dim);
786
  inline isl::basic_set neg() const;
787
  inline isl::basic_set params() const;
788
  inline isl::boolean plain_is_empty() const;
789
  inline isl::boolean plain_is_equal(const isl::basic_set &bset2) const;
790
  inline isl::boolean plain_is_universe() const;
791
  static inline isl::basic_set positive_orthant(isl::space space);
792
  inline isl::basic_set preimage_multi_aff(isl::multi_aff ma) const;
793
  inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
794
  inline isl::basic_set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
795
  inline isl::basic_set remove_divs() const;
796
  inline isl::basic_set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
797
  inline isl::basic_set remove_redundancies() const;
798
  inline isl::basic_set remove_unknown_divs() const;
799
  inline isl::basic_set sample() const;
800
  inline isl::point sample_point() const;
801
  inline isl::basic_set set_tuple_id(isl::id id) const;
802
  inline isl::basic_set set_tuple_name(const std::string &s) const;
803
  inline isl::basic_set solutions() const;
804
  inline isl::set unite(isl::basic_set bset2) const;
805
  static inline isl::basic_set universe(isl::space space);
806
  inline isl::basic_map unwrap() const;
807
  inline isl::basic_set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
808
};
809
810
// declarations for isl::basic_set_list
811
inline isl::basic_set_list manage(__isl_take isl_basic_set_list *ptr);
812
inline isl::basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
813
814
class basic_set_list {
815
  friend inline isl::basic_set_list manage(__isl_take isl_basic_set_list *ptr);
816
  friend inline isl::basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
817
818
  isl_basic_set_list *ptr = nullptr;
819
820
  inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
821
822
public:
823
  inline /* implicit */ basic_set_list();
824
  inline /* implicit */ basic_set_list(const isl::basic_set_list &obj);
825
  inline /* implicit */ basic_set_list(std::nullptr_t);
826
  inline isl::basic_set_list &operator=(isl::basic_set_list obj);
827
  inline ~basic_set_list();
828
  inline __isl_give isl_basic_set_list *copy() const &;
829
  inline __isl_give isl_basic_set_list *copy() && = delete;
830
  inline __isl_keep isl_basic_set_list *get() const;
831
  inline __isl_give isl_basic_set_list *release();
832
  inline bool is_null() const;
833
  inline explicit operator bool() const;
834
  inline isl::ctx get_ctx() const;
835
  inline void dump() const;
836
837
  inline isl::basic_set_list add(isl::basic_set el) const;
838
  static inline isl::basic_set_list alloc(isl::ctx ctx, int n);
839
  inline isl::basic_set_list coefficients() const;
840
  inline isl::basic_set_list concat(isl::basic_set_list list2) const;
841
  inline isl::basic_set_list drop(unsigned int first, unsigned int n) const;
842
  inline isl::stat foreach(const std::function<isl::stat(isl::basic_set)> &fn) const;
843
  static inline isl::basic_set_list from_basic_set(isl::basic_set el);
844
  inline isl::basic_set get_basic_set(int index) const;
845
  inline isl::basic_set_list insert(unsigned int pos, isl::basic_set el) const;
846
  inline isl::basic_set intersect() const;
847
  inline int n_basic_set() const;
848
  inline isl::basic_set_list set_basic_set(int index, isl::basic_set el) const;
849
};
850
851
// declarations for isl::constraint
852
inline isl::constraint manage(__isl_take isl_constraint *ptr);
853
inline isl::constraint manage_copy(__isl_keep isl_constraint *ptr);
854
855
class constraint {
856
  friend inline isl::constraint manage(__isl_take isl_constraint *ptr);
857
  friend inline isl::constraint manage_copy(__isl_keep isl_constraint *ptr);
858
859
  isl_constraint *ptr = nullptr;
860
861
  inline explicit constraint(__isl_take isl_constraint *ptr);
862
863
public:
864
  inline /* implicit */ constraint();
865
  inline /* implicit */ constraint(const isl::constraint &obj);
866
  inline /* implicit */ constraint(std::nullptr_t);
867
  inline isl::constraint &operator=(isl::constraint obj);
868
  inline ~constraint();
869
  inline __isl_give isl_constraint *copy() const &;
870
  inline __isl_give isl_constraint *copy() && = delete;
871
  inline __isl_keep isl_constraint *get() const;
872
  inline __isl_give isl_constraint *release();
873
  inline bool is_null() const;
874
  inline explicit operator bool() const;
875
  inline isl::ctx get_ctx() const;
876
  inline void dump() const;
877
878
  static inline isl::constraint alloc_equality(isl::local_space ls);
879
  static inline isl::constraint alloc_inequality(isl::local_space ls);
880
  inline int cmp_last_non_zero(const isl::constraint &c2) const;
881
  inline isl::aff get_aff() const;
882
  inline isl::aff get_bound(isl::dim type, int pos) const;
883
  inline isl::val get_coefficient_val(isl::dim type, int pos) const;
884
  inline isl::val get_constant_val() const;
885
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
886
  inline isl::aff get_div(int pos) const;
887
  inline isl::local_space get_local_space() const;
888
  inline isl::space get_space() const;
889
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
890
  inline int is_div_constraint() const;
891
  inline isl::boolean is_lower_bound(isl::dim type, unsigned int pos) const;
892
  inline isl::boolean is_upper_bound(isl::dim type, unsigned int pos) const;
893
  inline int plain_cmp(const isl::constraint &c2) const;
894
  inline isl::constraint set_coefficient_si(isl::dim type, int pos, int v) const;
895
  inline isl::constraint set_coefficient_val(isl::dim type, int pos, isl::val v) const;
896
  inline isl::constraint set_constant_si(int v) const;
897
  inline isl::constraint set_constant_val(isl::val v) const;
898
};
899
900
// declarations for isl::constraint_list
901
inline isl::constraint_list manage(__isl_take isl_constraint_list *ptr);
902
inline isl::constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
903
904
class constraint_list {
905
  friend inline isl::constraint_list manage(__isl_take isl_constraint_list *ptr);
906
  friend inline isl::constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
907
908
  isl_constraint_list *ptr = nullptr;
909
910
  inline explicit constraint_list(__isl_take isl_constraint_list *ptr);
911
912
public:
913
  inline /* implicit */ constraint_list();
914
  inline /* implicit */ constraint_list(const isl::constraint_list &obj);
915
  inline /* implicit */ constraint_list(std::nullptr_t);
916
  inline isl::constraint_list &operator=(isl::constraint_list obj);
917
  inline ~constraint_list();
918
  inline __isl_give isl_constraint_list *copy() const &;
919
  inline __isl_give isl_constraint_list *copy() && = delete;
920
  inline __isl_keep isl_constraint_list *get() const;
921
  inline __isl_give isl_constraint_list *release();
922
  inline bool is_null() const;
923
  inline explicit operator bool() const;
924
  inline isl::ctx get_ctx() const;
925
  inline void dump() const;
926
927
  inline isl::constraint_list add(isl::constraint el) const;
928
  static inline isl::constraint_list alloc(isl::ctx ctx, int n);
929
  inline isl::constraint_list concat(isl::constraint_list list2) const;
930
  inline isl::constraint_list drop(unsigned int first, unsigned int n) const;
931
  inline isl::stat foreach(const std::function<isl::stat(isl::constraint)> &fn) const;
932
  static inline isl::constraint_list from_constraint(isl::constraint el);
933
  inline isl::constraint get_constraint(int index) const;
934
  inline isl::constraint_list insert(unsigned int pos, isl::constraint el) const;
935
  inline int n_constraint() const;
936
  inline isl::constraint_list set_constraint(int index, isl::constraint el) const;
937
};
938
939
// declarations for isl::id
940
inline isl::id manage(__isl_take isl_id *ptr);
941
inline isl::id manage_copy(__isl_keep isl_id *ptr);
942
943
class id {
944
  friend inline isl::id manage(__isl_take isl_id *ptr);
945
  friend inline isl::id manage_copy(__isl_keep isl_id *ptr);
946
947
  isl_id *ptr = nullptr;
948
949
  inline explicit id(__isl_take isl_id *ptr);
950
951
public:
952
  inline /* implicit */ id();
953
  inline /* implicit */ id(const isl::id &obj);
954
  inline /* implicit */ id(std::nullptr_t);
955
  inline isl::id &operator=(isl::id obj);
956
  inline ~id();
957
  inline __isl_give isl_id *copy() const &;
958
  inline __isl_give isl_id *copy() && = delete;
959
  inline __isl_keep isl_id *get() const;
960
  inline __isl_give isl_id *release();
961
  inline bool is_null() const;
962
  inline explicit operator bool() const;
963
  inline isl::ctx get_ctx() const;
964
  inline std::string to_str() const;
965
  inline void dump() const;
966
967
  static inline isl::id alloc(isl::ctx ctx, const std::string &name, void * user);
968
  inline uint32_t get_hash() const;
969
  inline std::string get_name() const;
970
  inline void * get_user() const;
971
};
972
973
// declarations for isl::id_list
974
inline isl::id_list manage(__isl_take isl_id_list *ptr);
975
inline isl::id_list manage_copy(__isl_keep isl_id_list *ptr);
976
977
class id_list {
978
  friend inline isl::id_list manage(__isl_take isl_id_list *ptr);
979
  friend inline isl::id_list manage_copy(__isl_keep isl_id_list *ptr);
980
981
  isl_id_list *ptr = nullptr;
982
983
  inline explicit id_list(__isl_take isl_id_list *ptr);
984
985
public:
986
  inline /* implicit */ id_list();
987
  inline /* implicit */ id_list(const isl::id_list &obj);
988
  inline /* implicit */ id_list(std::nullptr_t);
989
  inline isl::id_list &operator=(isl::id_list obj);
990
  inline ~id_list();
991
  inline __isl_give isl_id_list *copy() const &;
992
  inline __isl_give isl_id_list *copy() && = delete;
993
  inline __isl_keep isl_id_list *get() const;
994
  inline __isl_give isl_id_list *release();
995
  inline bool is_null() const;
996
  inline explicit operator bool() const;
997
  inline isl::ctx get_ctx() const;
998
  inline void dump() const;
999
1000
  inline isl::id_list add(isl::id el) const;
1001
  static inline isl::id_list alloc(isl::ctx ctx, int n);
1002
  inline isl::id_list concat(isl::id_list list2) const;
1003
  inline isl::id_list drop(unsigned int first, unsigned int n) const;
1004
  inline isl::stat foreach(const std::function<isl::stat(isl::id)> &fn) const;
1005
  static inline isl::id_list from_id(isl::id el);
1006
  inline isl::id get_id(int index) const;
1007
  inline isl::id_list insert(unsigned int pos, isl::id el) const;
1008
  inline int n_id() const;
1009
  inline isl::id_list set_id(int index, isl::id el) const;
1010
};
1011
1012
// declarations for isl::id_to_ast_expr
1013
inline isl::id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1014
inline isl::id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1015
1016
class id_to_ast_expr {
1017
  friend inline isl::id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1018
  friend inline isl::id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1019
1020
  isl_id_to_ast_expr *ptr = nullptr;
1021
1022
  inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1023
1024
public:
1025
  inline /* implicit */ id_to_ast_expr();
1026
  inline /* implicit */ id_to_ast_expr(const isl::id_to_ast_expr &obj);
1027
  inline /* implicit */ id_to_ast_expr(std::nullptr_t);
1028
  inline isl::id_to_ast_expr &operator=(isl::id_to_ast_expr obj);
1029
  inline ~id_to_ast_expr();
1030
  inline __isl_give isl_id_to_ast_expr *copy() const &;
1031
  inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1032
  inline __isl_keep isl_id_to_ast_expr *get() const;
1033
  inline __isl_give isl_id_to_ast_expr *release();
1034
  inline bool is_null() const;
1035
  inline explicit operator bool() const;
1036
  inline isl::ctx get_ctx() const;
1037
  inline void dump() const;
1038
1039
  static inline isl::id_to_ast_expr alloc(isl::ctx ctx, int min_size);
1040
  inline isl::id_to_ast_expr drop(isl::id key) const;
1041
  inline isl::stat foreach(const std::function<isl::stat(isl::id, isl::ast_expr)> &fn) const;
1042
  inline isl::ast_expr get(isl::id key) const;
1043
  inline isl::boolean has(const isl::id &key) const;
1044
  inline isl::id_to_ast_expr set(isl::id key, isl::ast_expr val) const;
1045
};
1046
1047
// declarations for isl::local_space
1048
inline isl::local_space manage(__isl_take isl_local_space *ptr);
1049
inline isl::local_space manage_copy(__isl_keep isl_local_space *ptr);
1050
1051
class local_space {
1052
  friend inline isl::local_space manage(__isl_take isl_local_space *ptr);
1053
  friend inline isl::local_space manage_copy(__isl_keep isl_local_space *ptr);
1054
1055
  isl_local_space *ptr = nullptr;
1056
1057
  inline explicit local_space(__isl_take isl_local_space *ptr);
1058
1059
public:
1060
  inline /* implicit */ local_space();
1061
  inline /* implicit */ local_space(const isl::local_space &obj);
1062
  inline /* implicit */ local_space(std::nullptr_t);
1063
  inline explicit local_space(isl::space dim);
1064
  inline isl::local_space &operator=(isl::local_space obj);
1065
  inline ~local_space();
1066
  inline __isl_give isl_local_space *copy() const &;
1067
  inline __isl_give isl_local_space *copy() && = delete;
1068
  inline __isl_keep isl_local_space *get() const;
1069
  inline __isl_give isl_local_space *release();
1070
  inline bool is_null() const;
1071
  inline explicit operator bool() const;
1072
  inline isl::ctx get_ctx() const;
1073
  inline void dump() const;
1074
1075
  inline isl::local_space add_dims(isl::dim type, unsigned int n) const;
1076
  inline int dim(isl::dim type) const;
1077
  inline isl::local_space domain() const;
1078
  inline isl::local_space drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1079
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1080
  inline isl::local_space flatten_domain() const;
1081
  inline isl::local_space flatten_range() const;
1082
  inline isl::local_space from_domain() const;
1083
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1084
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1085
  inline isl::aff get_div(int pos) const;
1086
  inline isl::space get_space() const;
1087
  inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
1088
  inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
1089
  inline isl::local_space insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1090
  inline isl::local_space intersect(isl::local_space ls2) const;
1091
  inline isl::boolean is_equal(const isl::local_space &ls2) const;
1092
  inline isl::boolean is_params() const;
1093
  inline isl::boolean is_set() const;
1094
  inline isl::local_space range() const;
1095
  inline isl::local_space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1096
  inline isl::local_space set_from_params() const;
1097
  inline isl::local_space set_tuple_id(isl::dim type, isl::id id) const;
1098
  inline isl::local_space wrap() const;
1099
};
1100
1101
// declarations for isl::map
1102
inline isl::map manage(__isl_take isl_map *ptr);
1103
inline isl::map manage_copy(__isl_keep isl_map *ptr);
1104
1105
class map {
1106
  friend inline isl::map manage(__isl_take isl_map *ptr);
1107
  friend inline isl::map manage_copy(__isl_keep isl_map *ptr);
1108
1109
  isl_map *ptr = nullptr;
1110
1111
  inline explicit map(__isl_take isl_map *ptr);
1112
1113
public:
1114
  inline /* implicit */ map();
1115
  inline /* implicit */ map(const isl::map &obj);
1116
  inline /* implicit */ map(std::nullptr_t);
1117
  inline explicit map(isl::ctx ctx, const std::string &str);
1118
  inline /* implicit */ map(isl::basic_map bmap);
1119
  inline isl::map &operator=(isl::map obj);
1120
  inline ~map();
1121
  inline __isl_give isl_map *copy() const &;
1122
  inline __isl_give isl_map *copy() && = delete;
1123
  inline __isl_keep isl_map *get() const;
1124
  inline __isl_give isl_map *release();
1125
  inline bool is_null() const;
1126
  inline explicit operator bool() const;
1127
  inline isl::ctx get_ctx() const;
1128
  inline std::string to_str() const;
1129
  inline void dump() const;
1130
1131
  inline isl::map add_constraint(isl::constraint constraint) const;
1132
  inline isl::map add_dims(isl::dim type, unsigned int n) const;
1133
  inline isl::basic_map affine_hull() const;
1134
  inline isl::map align_params(isl::space model) const;
1135
  inline isl::map apply_domain(isl::map map2) const;
1136
  inline isl::map apply_range(isl::map map2) const;
1137
  inline isl::boolean can_curry() const;
1138
  inline isl::boolean can_range_curry() const;
1139
  inline isl::boolean can_uncurry() const;
1140
  inline isl::boolean can_zip() const;
1141
  inline isl::map coalesce() const;
1142
  inline isl::map complement() const;
1143
  inline isl::basic_map convex_hull() const;
1144
  inline isl::map curry() const;
1145
  inline isl::set deltas() const;
1146
  inline isl::map deltas_map() const;
1147
  inline isl::map detect_equalities() const;
1148
  inline unsigned int dim(isl::dim type) const;
1149
  inline isl::pw_aff dim_max(int pos) const;
1150
  inline isl::pw_aff dim_min(int pos) const;
1151
  inline isl::set domain() const;
1152
  inline isl::map domain_factor_domain() const;
1153
  inline isl::map domain_factor_range() const;
1154
  inline isl::boolean domain_is_wrapping() const;
1155
  inline isl::map domain_map() const;
1156
  inline isl::map domain_product(isl::map map2) const;
1157
  inline isl::map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1158
  inline isl::map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1159
  inline isl::map drop_unused_params() const;
1160
  inline isl::map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1161
  static inline isl::map empty(isl::space space);
1162
  inline isl::map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1163
  inline isl::map factor_domain() const;
1164
  inline isl::map factor_range() const;
1165
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1166
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1167
  inline isl::map fix_si(isl::dim type, unsigned int pos, int value) const;
1168
  inline isl::map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1169
  inline isl::map fixed_power_val(isl::val exp) const;
1170
  inline isl::map flat_domain_product(isl::map map2) const;
1171
  inline isl::map flat_product(isl::map map2) const;
1172
  inline isl::map flat_range_product(isl::map map2) const;
1173
  inline isl::map flatten() const;
1174
  inline isl::map flatten_domain() const;
1175
  inline isl::map flatten_range() const;
1176
  inline isl::map floordiv_val(isl::val d) const;
1177
  inline isl::stat foreach_basic_map(const std::function<isl::stat(isl::basic_map)> &fn) const;
1178
  static inline isl::map from_aff(isl::aff aff);
1179
  static inline isl::map from_domain(isl::set set);
1180
  static inline isl::map from_domain_and_range(isl::set domain, isl::set range);
1181
  static inline isl::map from_multi_aff(isl::multi_aff maff);
1182
  static inline isl::map from_multi_pw_aff(isl::multi_pw_aff mpa);
1183
  static inline isl::map from_pw_aff(isl::pw_aff pwaff);
1184
  static inline isl::map from_pw_multi_aff(isl::pw_multi_aff pma);
1185
  static inline isl::map from_range(isl::set set);
1186
  static inline isl::map from_union_map(isl::union_map umap);
1187
  inline isl::basic_map_list get_basic_map_list() const;
1188
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1189
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1190
  inline uint32_t get_hash() const;
1191
  inline isl::space get_space() const;
1192
  inline isl::id get_tuple_id(isl::dim type) const;
1193
  inline std::string get_tuple_name(isl::dim type) const;
1194
  inline isl::map gist(isl::map context) const;
1195
  inline isl::map gist_basic_map(isl::basic_map context) const;
1196
  inline isl::map gist_domain(isl::set context) const;
1197
  inline isl::map gist_params(isl::set context) const;
1198
  inline isl::map gist_range(isl::set context) const;
1199
  inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
1200
  inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
1201
  inline isl::boolean has_equal_space(const isl::map &map2) const;
1202
  inline isl::boolean has_tuple_id(isl::dim type) const;
1203
  inline isl::boolean has_tuple_name(isl::dim type) const;
1204
  static inline isl::map identity(isl::space dim);
1205
  inline isl::map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1206
  inline isl::map intersect(isl::map map2) const;
1207
  inline isl::map intersect_domain(isl::set set) const;
1208
  inline isl::map intersect_domain_factor_range(isl::map factor) const;
1209
  inline isl::map intersect_params(isl::set params) const;
1210
  inline isl::map intersect_range(isl::set set) const;
1211
  inline isl::map intersect_range_factor_range(isl::map factor) const;
1212
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1213
  inline isl::boolean is_bijective() const;
1214
  inline isl::boolean is_disjoint(const isl::map &map2) const;
1215
  inline isl::boolean is_empty() const;
1216
  inline isl::boolean is_equal(const isl::map &map2) const;
1217
  inline isl::boolean is_identity() const;
1218
  inline isl::boolean is_injective() const;
1219
  inline isl::boolean is_product() const;
1220
  inline isl::boolean is_single_valued() const;
1221
  inline isl::boolean is_strict_subset(const isl::map &map2) const;
1222
  inline isl::boolean is_subset(const isl::map &map2) const;
1223
  inline int is_translation() const;
1224
  static inline isl::map lex_ge(isl::space set_dim);
1225
  static inline isl::map lex_ge_first(isl::space dim, unsigned int n);
1226
  inline isl::map lex_ge_map(isl::map map2) const;
1227
  static inline isl::map lex_gt(isl::space set_dim);
1228
  static inline isl::map lex_gt_first(isl::space dim, unsigned int n);
1229
  inline isl::map lex_gt_map(isl::map map2) const;
1230
  static inline isl::map lex_le(isl::space set_dim);
1231
  static inline isl::map lex_le_first(isl::space dim, unsigned int n);
1232
  inline isl::map lex_le_map(isl::map map2) const;
1233
  static inline isl::map lex_lt(isl::space set_dim);
1234
  static inline isl::map lex_lt_first(isl::space dim, unsigned int n);
1235
  inline isl::map lex_lt_map(isl::map map2) const;
1236
  inline isl::map lexmax() const;
1237
  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1238
  inline isl::map lexmin() const;
1239
  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1240
  inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1241
  inline isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1242
  inline int n_basic_map() const;
1243
  static inline isl::map nat_universe(isl::space dim);
1244
  inline isl::map neg() const;
1245
  inline isl::map oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1246
  inline isl::map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1247
  inline isl::map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1248
  inline isl::map order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1249
  inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1250
  inline isl::set params() const;
1251
  inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1252
  inline isl::boolean plain_is_empty() const;
1253
  inline isl::boolean plain_is_equal(const isl::map &map2) const;
1254
  inline isl::boolean plain_is_injective() const;
1255
  inline isl::boolean plain_is_single_valued() const;
1256
  inline isl::boolean plain_is_universe() const;
1257
  inline isl::basic_map plain_unshifted_simple_hull() const;
1258
  inline isl::basic_map polyhedral_hull() const;
1259
  inline isl::map preimage_domain_multi_aff(isl::multi_aff ma) const;
1260
  inline isl::map preimage_domain_multi_pw_aff(isl::multi_pw_aff mpa) const;
1261
  inline isl::map preimage_domain_pw_multi_aff(isl::pw_multi_aff pma) const;
1262
  inline isl::map preimage_range_multi_aff(isl::multi_aff ma) const;
1263
  inline isl::map preimage_range_pw_multi_aff(isl::pw_multi_aff pma) const;
1264
  inline isl::map product(isl::map map2) const;
1265
  inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1266
  inline isl::set range() const;
1267
  inline isl::map range_curry() const;
1268
  inline isl::map range_factor_domain() const;
1269
  inline isl::map range_factor_range() const;
1270
  inline isl::boolean range_is_wrapping() const;
1271
  inline isl::map range_map() const;
1272
  inline isl::map range_product(isl::map map2) const;
1273
  inline isl::map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1274
  inline isl::map remove_divs() const;
1275
  inline isl::map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1276
  inline isl::map remove_redundancies() const;
1277
  inline isl::map remove_unknown_divs() const;
1278
  inline isl::map reset_tuple_id(isl::dim type) const;
1279
  inline isl::map reset_user() const;
1280
  inline isl::map reverse() const;
1281
  inline isl::basic_map sample() const;
1282
  inline isl::map set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1283
  inline isl::map set_tuple_id(isl::dim type, isl::id id) const;
1284
  inline isl::map set_tuple_name(isl::dim type, const std::string &s) const;
1285
  inline isl::basic_map simple_hull() const;
1286
  inline isl::map subtract(isl::map map2) const;
1287
  inline isl::map subtract_domain(isl::set dom) const;
1288
  inline isl::map subtract_range(isl::set dom) const;
1289
  inline isl::map sum(isl::map map2) const;
1290
  inline isl::map uncurry() const;
1291
  inline isl::map unite(isl::map map2) const;
1292
  static inline isl::map universe(isl::space space);
1293
  inline isl::basic_map unshifted_simple_hull() const;
1294
  inline isl::basic_map unshifted_simple_hull_from_map_list(isl::map_list list) const;
1295
  inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1296
  inline isl::set wrap() const;
1297
  inline isl::map zip() const;
1298
};
1299
1300
// declarations for isl::map_list
1301
inline isl::map_list manage(__isl_take isl_map_list *ptr);
1302
inline isl::map_list manage_copy(__isl_keep isl_map_list *ptr);
1303
1304
class map_list {
1305
  friend inline isl::map_list manage(__isl_take isl_map_list *ptr);
1306
  friend inline isl::map_list manage_copy(__isl_keep isl_map_list *ptr);
1307
1308
  isl_map_list *ptr = nullptr;
1309
1310
  inline explicit map_list(__isl_take isl_map_list *ptr);
1311
1312
public:
1313
  inline /* implicit */ map_list();
1314
  inline /* implicit */ map_list(const isl::map_list &obj);
1315
  inline /* implicit */ map_list(std::nullptr_t);
1316
  inline isl::map_list &operator=(isl::map_list obj);
1317
  inline ~map_list();
1318
  inline __isl_give isl_map_list *copy() const &;
1319
  inline __isl_give isl_map_list *copy() && = delete;
1320
  inline __isl_keep isl_map_list *get() const;
1321
  inline __isl_give isl_map_list *release();
1322
  inline bool is_null() const;
1323
  inline explicit operator bool() const;
1324
  inline isl::ctx get_ctx() const;
1325
  inline void dump() const;
1326
1327
  inline isl::map_list add(isl::map el) const;
1328
  static inline isl::map_list alloc(isl::ctx ctx, int n);
1329
  inline isl::map_list concat(isl::map_list list2) const;
1330
  inline isl::map_list drop(unsigned int first, unsigned int n) const;
1331
  inline isl::stat foreach(const std::function<isl::stat(isl::map)> &fn) const;
1332
  static inline isl::map_list from_map(isl::map el);
1333
  inline isl::map get_map(int index) const;
1334
  inline isl::map_list insert(unsigned int pos, isl::map el) const;
1335
  inline int n_map() const;
1336
  inline isl::map_list set_map(int index, isl::map el) const;
1337
};
1338
1339
// declarations for isl::mat
1340
inline isl::mat manage(__isl_take isl_mat *ptr);
1341
inline isl::mat manage_copy(__isl_keep isl_mat *ptr);
1342
1343
class mat {
1344
  friend inline isl::mat manage(__isl_take isl_mat *ptr);
1345
  friend inline isl::mat manage_copy(__isl_keep isl_mat *ptr);
1346
1347
  isl_mat *ptr = nullptr;
1348
1349
  inline explicit mat(__isl_take isl_mat *ptr);
1350
1351
public:
1352
  inline /* implicit */ mat();
1353
  inline /* implicit */ mat(const isl::mat &obj);
1354
  inline /* implicit */ mat(std::nullptr_t);
1355
  inline isl::mat &operator=(isl::mat obj);
1356
  inline ~mat();
1357
  inline __isl_give isl_mat *copy() const &;
1358
  inline __isl_give isl_mat *copy() && = delete;
1359
  inline __isl_keep isl_mat *get() const;
1360
  inline __isl_give isl_mat *release();
1361
  inline bool is_null() const;
1362
  inline explicit operator bool() const;
1363
  inline isl::ctx get_ctx() const;
1364
  inline void dump() const;
1365
1366
  inline isl::mat add_rows(unsigned int n) const;
1367
  inline isl::mat add_zero_cols(unsigned int n) const;
1368
  inline isl::mat add_zero_rows(unsigned int n) const;
1369
  inline isl::mat aff_direct_sum(isl::mat right) const;
1370
  static inline isl::mat alloc(isl::ctx ctx, unsigned int n_row, unsigned int n_col);
1371
  inline int cols() const;
1372
  inline isl::mat concat(isl::mat bot) const;
1373
  inline isl::mat diagonal(isl::mat mat2) const;
1374
  inline isl::mat drop_cols(unsigned int col, unsigned int n) const;
1375
  inline isl::mat drop_rows(unsigned int row, unsigned int n) const;
1376
  static inline isl::mat from_row_vec(isl::vec vec);
1377
  inline isl::val get_element_val(int row, int col) const;
1378
  inline isl::boolean has_linearly_independent_rows(const isl::mat &mat2) const;
1379
  inline int initial_non_zero_cols() const;
1380
  inline isl::mat insert_cols(unsigned int col, unsigned int n) const;
1381
  inline isl::mat insert_rows(unsigned int row, unsigned int n) const;
1382
  inline isl::mat insert_zero_cols(unsigned int first, unsigned int n) const;
1383
  inline isl::mat insert_zero_rows(unsigned int row, unsigned int n) const;
1384
  inline isl::mat inverse_product(isl::mat right) const;
1385
  inline isl::boolean is_equal(const isl::mat &mat2) const;
1386
  inline isl::mat lin_to_aff() const;
1387
  inline isl::mat move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
1388
  inline isl::mat normalize() const;
1389
  inline isl::mat normalize_row(int row) const;
1390
  inline isl::mat product(isl::mat right) const;
1391
  inline int rank() const;
1392
  inline isl::mat right_inverse() const;
1393
  inline isl::mat right_kernel() const;
1394
  inline isl::mat row_basis() const;
1395
  inline isl::mat row_basis_extension(isl::mat mat2) const;
1396
  inline int rows() const;
1397
  inline isl::mat set_element_si(int row, int col, int v) const;
1398
  inline isl::mat set_element_val(int row, int col, isl::val v) const;
1399
  inline isl::mat swap_cols(unsigned int i, unsigned int j) const;
1400
  inline isl::mat swap_rows(unsigned int i, unsigned int j) const;
1401
  inline isl::mat transpose() const;
1402
  inline isl::mat unimodular_complete(int row) const;
1403
  inline isl::mat vec_concat(isl::vec bot) const;
1404
  inline isl::vec vec_inverse_product(isl::vec vec) const;
1405
  inline isl::vec vec_product(isl::vec vec) const;
1406
};
1407
1408
// declarations for isl::multi_aff
1409
inline isl::multi_aff manage(__isl_take isl_multi_aff *ptr);
1410
inline isl::multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1411
1412
class multi_aff {
1413
  friend inline isl::multi_aff manage(__isl_take isl_multi_aff *ptr);
1414
  friend inline isl::multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1415
1416
  isl_multi_aff *ptr = nullptr;
1417
1418
  inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
1419
1420
public:
1421
  inline /* implicit */ multi_aff();
1422
  inline /* implicit */ multi_aff(const isl::multi_aff &obj);
1423
  inline /* implicit */ multi_aff(std::nullptr_t);
1424
  inline /* implicit */ multi_aff(isl::aff aff);
1425
  inline explicit multi_aff(isl::ctx ctx, const std::string &str);
1426
  inline isl::multi_aff &operator=(isl::multi_aff obj);
1427
  inline ~multi_aff();
1428
  inline __isl_give isl_multi_aff *copy() const &;
1429
  inline __isl_give isl_multi_aff *copy() && = delete;
1430
  inline __isl_keep isl_multi_aff *get() const;
1431
  inline __isl_give isl_multi_aff *release();
1432
  inline bool is_null() const;
1433
  inline explicit operator bool() const;
1434
  inline isl::ctx get_ctx() const;
1435
  inline std::string to_str() const;
1436
  inline void dump() const;
1437
1438
  inline isl::multi_aff add(isl::multi_aff multi2) const;
1439
  inline isl::multi_aff add_dims(isl::dim type, unsigned int n) const;
1440
  inline isl::multi_aff align_params(isl::space model) const;
1441
  inline unsigned int dim(isl::dim type) const;
1442
  static inline isl::multi_aff domain_map(isl::space space);
1443
  inline isl::multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1444
  inline isl::multi_aff factor_range() const;
1445
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1446
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1447
  inline isl::multi_aff flat_range_product(isl::multi_aff multi2) const;
1448
  inline isl::multi_aff flatten_domain() const;
1449
  inline isl::multi_aff flatten_range() const;
1450
  inline isl::multi_aff floor() const;
1451
  static inline isl::multi_aff from_aff_list(isl::space space, isl::aff_list list);
1452
  inline isl::multi_aff from_range() const;
1453
  inline isl::aff get_aff(int pos) const;
1454
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1455
  inline isl::space get_domain_space() const;
1456
  inline isl::space get_space() const;
1457
  inline isl::id get_tuple_id(isl::dim type) const;
1458
  inline std::string get_tuple_name(isl::dim type) const;
1459
  inline isl::multi_aff gist(isl::set context) const;
1460
  inline isl::multi_aff gist_params(isl::set context) const;
1461
  inline isl::boolean has_tuple_id(isl::dim type) const;
1462
  static inline isl::multi_aff identity(isl::space space);
1463
  inline isl::multi_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1464
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1465
  inline isl::boolean involves_nan() const;
1466
  inline isl::set lex_ge_set(isl::multi_aff ma2) const;
1467
  inline isl::set lex_gt_set(isl::multi_aff ma2) const;
1468
  inline isl::set lex_le_set(isl::multi_aff ma2) const;
1469
  inline isl::set lex_lt_set(isl::multi_aff ma2) const;
1470
  inline isl::multi_aff mod_multi_val(isl::multi_val mv) const;
1471
  inline isl::multi_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1472
  static inline isl::multi_aff multi_val_on_space(isl::space space, isl::multi_val mv);
1473
  inline isl::multi_aff neg() const;
1474
  inline int plain_cmp(const isl::multi_aff &multi2) const;
1475
  inline isl::boolean plain_is_equal(const isl::multi_aff &multi2) const;
1476
  inline isl::multi_aff product(isl::multi_aff multi2) const;
1477
  inline isl::multi_aff project_domain_on_params() const;
1478
  static inline isl::multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
1479
  inline isl::multi_aff pullback(isl::multi_aff ma2) const;
1480
  inline isl::multi_aff range_factor_domain() const;
1481
  inline isl::multi_aff range_factor_range() const;
1482
  inline isl::boolean range_is_wrapping() const;
1483
  static inline isl::multi_aff range_map(isl::space space);
1484
  inline isl::multi_aff range_product(isl::multi_aff multi2) const;
1485
  inline isl::multi_aff range_splice(unsigned int pos, isl::multi_aff multi2) const;
1486
  inline isl::multi_aff reset_tuple_id(isl::dim type) const;
1487
  inline isl::multi_aff reset_user() const;
1488
  inline isl::multi_aff scale_down_multi_val(isl::multi_val mv) const;
1489
  inline isl::multi_aff scale_down_val(isl::val v) const;
1490
  inline isl::multi_aff scale_multi_val(isl::multi_val mv) const;
1491
  inline isl::multi_aff scale_val(isl::val v) const;
1492
  inline isl::multi_aff set_aff(int pos, isl::aff el) const;
1493
  inline isl::multi_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1494
  inline isl::multi_aff set_tuple_id(isl::dim type, isl::id id) const;
1495
  inline isl::multi_aff set_tuple_name(isl::dim type, const std::string &s) const;
1496
  inline isl::multi_aff splice(unsigned int in_pos, unsigned int out_pos, isl::multi_aff multi2) const;
1497
  inline isl::multi_aff sub(isl::multi_aff multi2) const;
1498
  static inline isl::multi_aff zero(isl::space space);
1499
};
1500
1501
// declarations for isl::multi_pw_aff
1502
inline isl::multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1503
inline isl::multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1504
1505
class multi_pw_aff {
1506
  friend inline isl::multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1507
  friend inline isl::multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1508
1509
  isl_multi_pw_aff *ptr = nullptr;
1510
1511
  inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
1512
1513
public:
1514
  inline /* implicit */ multi_pw_aff();
1515
  inline /* implicit */ multi_pw_aff(const isl::multi_pw_aff &obj);
1516
  inline /* implicit */ multi_pw_aff(std::nullptr_t);
1517
  inline /* implicit */ multi_pw_aff(isl::multi_aff ma);
1518
  inline /* implicit */ multi_pw_aff(isl::pw_aff pa);
1519
  inline /* implicit */ multi_pw_aff(isl::pw_multi_aff pma);
1520
  inline explicit multi_pw_aff(isl::ctx ctx, const std::string &str);
1521
  inline isl::multi_pw_aff &operator=(isl::multi_pw_aff obj);
1522
  inline ~multi_pw_aff();
1523
  inline __isl_give isl_multi_pw_aff *copy() const &;
1524
  inline __isl_give isl_multi_pw_aff *copy() && = delete;
1525
  inline __isl_keep isl_multi_pw_aff *get() const;
1526
  inline __isl_give isl_multi_pw_aff *release();
1527
  inline bool is_null() const;
1528
  inline explicit operator bool() const;
1529
  inline isl::ctx get_ctx() const;
1530
  inline std::string to_str() const;
1531
  inline void dump() const;
1532
1533
  inline isl::multi_pw_aff add(isl::multi_pw_aff multi2) const;
1534
  inline isl::multi_pw_aff add_dims(isl::dim type, unsigned int n) const;
1535
  inline isl::multi_pw_aff align_params(isl::space model) const;
1536
  inline isl::multi_pw_aff coalesce() const;
1537
  inline unsigned int dim(isl::dim type) const;
1538
  inline isl::set domain() const;
1539
  inline isl::multi_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1540
  inline isl::map eq_map(isl::multi_pw_aff mpa2) const;
1541
  inline isl::multi_pw_aff factor_range() const;
1542
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1543
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1544
  inline isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const;
1545
  inline isl::multi_pw_aff flatten_range() const;
1546
  static inline isl::multi_pw_aff from_pw_aff_list(isl::space space, isl::pw_aff_list list);
1547
  inline isl::multi_pw_aff from_range() const;
1548
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1549
  inline isl::space get_domain_space() const;
1550
  inline uint32_t get_hash() const;
1551
  inline isl::pw_aff get_pw_aff(int pos) const;
1552
  inline isl::space get_space() const;
1553
  inline isl::id get_tuple_id(isl::dim type) const;
1554
  inline std::string get_tuple_name(isl::dim type) const;
1555
  inline isl::multi_pw_aff gist(isl::set set) const;
1556
  inline isl::multi_pw_aff gist_params(isl::set set) const;
1557
  inline isl::boolean has_tuple_id(isl::dim type) const;
1558
  static inline isl::multi_pw_aff identity(isl::space space);
1559
  inline isl::multi_pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1560
  inline isl::multi_pw_aff intersect_domain(isl::set domain) const;
1561
  inline isl::multi_pw_aff intersect_params(isl::set set) const;
1562
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1563
  inline isl::boolean involves_nan() const;
1564
  inline isl::boolean is_cst() const;
1565
  inline isl::boolean is_equal(const isl::multi_pw_aff &mpa2) const;
1566
  inline isl::map lex_gt_map(isl::multi_pw_aff mpa2) const;
1567
  inline isl::map lex_lt_map(isl::multi_pw_aff mpa2) const;
1568
  inline isl::multi_pw_aff mod_multi_val(isl::multi_val mv) const;
1569
  inline isl::multi_pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1570
  inline isl::multi_pw_aff neg() const;
1571
  inline isl::boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
1572
  inline isl::multi_pw_aff product(isl::multi_pw_aff multi2) const;
1573
  inline isl::multi_pw_aff project_domain_on_params() const;
1574
  inline isl::multi_pw_aff pullback(isl::multi_aff ma) const;
1575
  inline isl::multi_pw_aff pullback(isl::pw_multi_aff pma) const;
1576
  inline isl::multi_pw_aff pullback(isl::multi_pw_aff mpa2) const;
1577
  inline isl::multi_pw_aff range_factor_domain() const;
1578
  inline isl::multi_pw_aff range_factor_range() const;
1579
  inline isl::boolean range_is_wrapping() const;
1580
  inline isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const;
1581
  inline isl::multi_pw_aff range_splice(unsigned int pos, isl::multi_pw_aff multi2) const;
1582
  inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
1583
  inline isl::multi_pw_aff reset_user() const;
1584
  inline isl::multi_pw_aff scale_down_multi_val(isl::multi_val mv) const;
1585
  inline isl::multi_pw_aff scale_down_val(isl::val v) const;
1586
  inline isl::multi_pw_aff scale_multi_val(isl::multi_val mv) const;
1587
  inline isl::multi_pw_aff scale_val(isl::val v) const;
1588
  inline isl::multi_pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1589
  inline isl::multi_pw_aff set_pw_aff(int pos, isl::pw_aff el) const;
1590
  inline isl::multi_pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1591
  inline isl::multi_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1592
  inline isl::multi_pw_aff splice(unsigned int in_pos, unsigned int out_pos, isl::multi_pw_aff multi2) const;
1593
  inline isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const;
1594
  static inline isl::multi_pw_aff zero(isl::space space);
1595
};
1596
1597
// declarations for isl::multi_union_pw_aff
1598
inline isl::multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1599
inline isl::multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1600
1601
class multi_union_pw_aff {
1602
  friend inline isl::multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1603
  friend inline isl::multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1604
1605
  isl_multi_union_pw_aff *ptr = nullptr;
1606
1607
  inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
1608
1609
public:
1610
  inline /* implicit */ multi_union_pw_aff();
1611
  inline /* implicit */ multi_union_pw_aff(const isl::multi_union_pw_aff &obj);
1612
  inline /* implicit */ multi_union_pw_aff(std::nullptr_t);
1613
  inline /* implicit */ multi_union_pw_aff(isl::union_pw_aff upa);
1614
  inline /* implicit */ multi_union_pw_aff(isl::multi_pw_aff mpa);
1615
  inline explicit multi_union_pw_aff(isl::union_pw_multi_aff upma);
1616
  inline explicit multi_union_pw_aff(isl::ctx ctx, const std::string &str);
1617
  inline isl::multi_union_pw_aff &operator=(isl::multi_union_pw_aff obj);
1618
  inline ~multi_union_pw_aff();
1619
  inline __isl_give isl_multi_union_pw_aff *copy() const &;
1620
  inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
1621
  inline __isl_keep isl_multi_union_pw_aff *get() const;
1622
  inline __isl_give isl_multi_union_pw_aff *release();
1623
  inline bool is_null() const;
1624
  inline explicit operator bool() const;
1625
  inline isl::ctx get_ctx() const;
1626
  inline std::string to_str() const;
1627
  inline void dump() const;
1628
1629
  inline isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const;
1630
  inline isl::multi_union_pw_aff align_params(isl::space model) const;
1631
  inline isl::union_pw_aff apply_aff(isl::aff aff) const;
1632
  inline isl::union_pw_aff apply_pw_aff(isl::pw_aff pa) const;
1633
  inline isl::multi_union_pw_aff apply_pw_multi_aff(isl::pw_multi_aff pma) const;
1634
  inline isl::multi_union_pw_aff coalesce() const;
1635
  inline unsigned int dim(isl::dim type) const;
1636
  inline isl::union_set domain() const;
1637
  inline isl::multi_union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1638
  inline isl::multi_pw_aff extract_multi_pw_aff(isl::space space) const;
1639
  inline isl::multi_union_pw_aff factor_range() const;
1640
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1641
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1642
  inline isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const;
1643
  inline isl::multi_union_pw_aff flatten_range() const;
1644
  inline isl::multi_union_pw_aff floor() const;
1645
  static inline isl::multi_union_pw_aff from_multi_aff(isl::multi_aff ma);
1646
  inline isl::multi_union_pw_aff from_range() const;
1647
  static inline isl::multi_union_pw_aff from_union_map(isl::union_map umap);
1648
  static inline isl::multi_union_pw_aff from_union_pw_aff_list(isl::space space, isl::union_pw_aff_list list);
1649
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1650
  inline isl::space get_domain_space() const;
1651
  inline isl::space get_space() const;
1652
  inline isl::id get_tuple_id(isl::dim type) const;
1653
  inline std::string get_tuple_name(isl::dim type) const;
1654
  inline isl::union_pw_aff get_union_pw_aff(int pos) const;
1655
  inline isl::multi_union_pw_aff gist(isl::union_set context) const;
1656
  inline isl::multi_union_pw_aff gist_params(isl::set context) const;
1657
  inline isl::boolean has_tuple_id(isl::dim type) const;
1658
  inline isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const;
1659
  inline isl::multi_union_pw_aff intersect_params(isl::set params) const;
1660
  inline isl::multi_union_pw_aff intersect_range(isl::set set) const;
1661
  inline isl::boolean involves_nan() const;
1662
  inline isl::multi_union_pw_aff mod_multi_val(isl::multi_val mv) const;
1663
  static inline isl::multi_union_pw_aff multi_aff_on_domain(isl::union_set domain, isl::multi_aff ma);
1664
  static inline isl::multi_union_pw_aff multi_val_on_domain(isl::union_set domain, isl::multi_val mv);
1665
  inline isl::multi_union_pw_aff neg() const;
1666
  inline isl::boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
1667
  inline isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
1668
  static inline isl::multi_union_pw_aff pw_multi_aff_on_domain(isl::union_set domain, isl::pw_multi_aff pma);
1669
  inline isl::multi_union_pw_aff range_factor_domain() const;
1670
  inline isl::multi_union_pw_aff range_factor_range() const;
1671
  inline isl::boolean range_is_wrapping() const;
1672
  inline isl::multi_union_pw_aff range_product(isl::multi_union_pw_aff multi2) const;
1673
  inline isl::multi_union_pw_aff range_splice(unsigned int pos, isl::multi_union_pw_aff multi2) const;
1674
  inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
1675
  inline isl::multi_union_pw_aff reset_user() const;
1676
  inline isl::multi_union_pw_aff scale_down_multi_val(isl::multi_val mv) const;
1677
  inline isl::multi_union_pw_aff scale_down_val(isl::val v) const;
1678
  inline isl::multi_union_pw_aff scale_multi_val(isl::multi_val mv) const;
1679
  inline isl::multi_union_pw_aff scale_val(isl::val v) const;
1680
  inline isl::multi_union_pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1681
  inline isl::multi_union_pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1682
  inline isl::multi_union_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1683
  inline isl::multi_union_pw_aff set_union_pw_aff(int pos, isl::union_pw_aff el) const;
1684
  inline isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const;
1685
  inline isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const;
1686
  static inline isl::multi_union_pw_aff zero(isl::space space);
1687
  inline isl::union_set zero_union_set() const;
1688
};
1689
1690
// declarations for isl::multi_val
1691
inline isl::multi_val manage(__isl_take isl_multi_val *ptr);
1692
inline isl::multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1693
1694
class multi_val {
1695
  friend inline isl::multi_val manage(__isl_take isl_multi_val *ptr);
1696
  friend inline isl::multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1697
1698
  isl_multi_val *ptr = nullptr;
1699
1700
  inline explicit multi_val(__isl_take isl_multi_val *ptr);
1701
1702
public:
1703
  inline /* implicit */ multi_val();
1704
  inline /* implicit */ multi_val(const isl::multi_val &obj);
1705
  inline /* implicit */ multi_val(std::nullptr_t);
1706
  inline explicit multi_val(isl::ctx ctx, const std::string &str);
1707
  inline isl::multi_val &operator=(isl::multi_val obj);
1708
  inline ~multi_val();
1709
  inline __isl_give isl_multi_val *copy() const &;
1710
  inline __isl_give isl_multi_val *copy() && = delete;
1711
  inline __isl_keep isl_multi_val *get() const;
1712
  inline __isl_give isl_multi_val *release();
1713
  inline bool is_null() const;
1714
  inline explicit operator bool() const;
1715
  inline isl::ctx get_ctx() const;
1716
  inline std::string to_str() const;
1717
  inline void dump() const;
1718
1719
  inline isl::multi_val add(isl::multi_val multi2) const;
1720
  inline isl::multi_val add_dims(isl::dim type, unsigned int n) const;
1721
  inline isl::multi_val add_val(isl::val v) const;
1722
  inline isl::multi_val align_params(isl::space model) const;
1723
  inline unsigned int dim(isl::dim type) const;
1724
  inline isl::multi_val drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1725
  inline isl::multi_val factor_range() const;
1726
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1727
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1728
  inline isl::multi_val flat_range_product(isl::multi_val multi2) const;
1729
  inline isl::multi_val flatten_range() const;
1730
  inline isl::multi_val from_range() const;
1731
  static inline isl::multi_val from_val_list(isl::space space, isl::val_list list);
1732
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1733
  inline isl::space get_domain_space() const;
1734
  inline isl::space get_space() const;
1735
  inline isl::id get_tuple_id(isl::dim type) const;
1736
  inline std::string get_tuple_name(isl::dim type) const;
1737
  inline isl::val get_val(int pos) const;
1738
  inline isl::boolean has_tuple_id(isl::dim type) const;
1739
  inline isl::multi_val insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1740
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1741
  inline isl::boolean involves_nan() const;
1742
  inline isl::multi_val mod_multi_val(isl::multi_val mv) const;
1743
  inline isl::multi_val mod_val(isl::val v) const;
1744
  inline isl::multi_val neg() const;
1745
  inline isl::boolean plain_is_equal(const isl::multi_val &multi2) const;
1746
  inline isl::multi_val product(isl::multi_val multi2) const;
1747
  inline isl::multi_val project_domain_on_params() const;
1748
  inline isl::multi_val range_factor_domain() const;
1749
  inline isl::multi_val range_factor_range() const;
1750
  inline isl::boolean range_is_wrapping() const;
1751
  inline isl::multi_val range_product(isl::multi_val multi2) const;
1752
  inline isl::multi_val range_splice(unsigned int pos, isl::multi_val multi2) const;
1753
  inline isl::multi_val reset_tuple_id(isl::dim type) const;
1754
  inline isl::multi_val reset_user() const;
1755
  inline isl::multi_val scale_down_multi_val(isl::multi_val mv) const;
1756
  inline isl::multi_val scale_down_val(isl::val v) const;
1757
  inline isl::multi_val scale_multi_val(isl::multi_val mv) const;
1758
  inline isl::multi_val scale_val(isl::val v) const;
1759
  inline isl::multi_val set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1760
  inline isl::multi_val set_tuple_id(isl::dim type, isl::id id) const;
1761
  inline isl::multi_val set_tuple_name(isl::dim type, const std::string &s) const;
1762
  inline isl::multi_val set_val(int pos, isl::val el) const;
1763
  inline isl::multi_val splice(unsigned int in_pos, unsigned int out_pos, isl::multi_val multi2) const;
1764
  inline isl::multi_val sub(isl::multi_val multi2) const;
1765
  static inline isl::multi_val zero(isl::space space);
1766
};
1767
1768
// declarations for isl::point
1769
inline isl::point manage(__isl_take isl_point *ptr);
1770
inline isl::point manage_copy(__isl_keep isl_point *ptr);
1771
1772
class point {
1773
  friend inline isl::point manage(__isl_take isl_point *ptr);
1774
  friend inline isl::point manage_copy(__isl_keep isl_point *ptr);
1775
1776
  isl_point *ptr = nullptr;
1777
1778
  inline explicit point(__isl_take isl_point *ptr);
1779
1780
public:
1781
  inline /* implicit */ point();
1782
  inline /* implicit */ point(const isl::point &obj);
1783
  inline /* implicit */ point(std::nullptr_t);
1784
  inline explicit point(isl::space dim);
1785
  inline isl::point &operator=(isl::point obj);
1786
  inline ~point();
1787
  inline __isl_give isl_point *copy() const &;
1788
  inline __isl_give isl_point *copy() && = delete;
1789
  inline __isl_keep isl_point *get() const;
1790
  inline __isl_give isl_point *release();
1791
  inline bool is_null() const;
1792
  inline explicit operator bool() const;
1793
  inline isl::ctx get_ctx() const;
1794
  inline std::string to_str() const;
1795
  inline void dump() const;
1796
1797
  inline isl::point add_ui(isl::dim type, int pos, unsigned int val) const;
1798
  inline isl::val get_coordinate_val(isl::dim type, int pos) const;
1799
  inline isl::space get_space() const;
1800
  inline isl::point set_coordinate_val(isl::dim type, int pos, isl::val v) const;
1801
  inline isl::point sub_ui(isl::dim type, int pos, unsigned int val) const;
1802
};
1803
1804
// declarations for isl::pw_aff
1805
inline isl::pw_aff manage(__isl_take isl_pw_aff *ptr);
1806
inline isl::pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1807
1808
class pw_aff {
1809
  friend inline isl::pw_aff manage(__isl_take isl_pw_aff *ptr);
1810
  friend inline isl::pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1811
1812
  isl_pw_aff *ptr = nullptr;
1813
1814
  inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
1815
1816
public:
1817
  inline /* implicit */ pw_aff();
1818
  inline /* implicit */ pw_aff(const isl::pw_aff &obj);
1819
  inline /* implicit */ pw_aff(std::nullptr_t);
1820
  inline /* implicit */ pw_aff(isl::aff aff);
1821
  inline explicit pw_aff(isl::local_space ls);
1822
  inline explicit pw_aff(isl::set domain, isl::val v);
1823
  inline explicit pw_aff(isl::ctx ctx, const std::string &str);
1824
  inline isl::pw_aff &operator=(isl::pw_aff obj);
1825
  inline ~pw_aff();
1826
  inline __isl_give isl_pw_aff *copy() const &;
1827
  inline __isl_give isl_pw_aff *copy() && = delete;
1828
  inline __isl_keep isl_pw_aff *get() const;
1829
  inline __isl_give isl_pw_aff *release();
1830
  inline bool is_null() const;
1831
  inline explicit operator bool() const;
1832
  inline isl::ctx get_ctx() const;
1833
  inline std::string to_str() const;
1834
  inline void dump() const;
1835
1836
  inline isl::pw_aff add(isl::pw_aff pwaff2) const;
1837
  inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
1838
  inline isl::pw_aff align_params(isl::space model) const;
1839
  static inline isl::pw_aff alloc(isl::set set, isl::aff aff);
1840
  inline isl::pw_aff ceil() const;
1841
  inline isl::pw_aff coalesce() const;
1842
  inline isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const;
1843
  inline unsigned int dim(isl::dim type) const;
1844
  inline isl::pw_aff div(isl::pw_aff pa2) const;
1845
  inline isl::set domain() const;
1846
  inline isl::pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1847
  inline isl::pw_aff drop_unused_params() const;
1848
  static inline isl::pw_aff empty(isl::space dim);
1849
  inline isl::map eq_map(isl::pw_aff pa2) const;
1850
  inline isl::set eq_set(isl::pw_aff pwaff2) const;
1851
  inline isl::val eval(isl::point pnt) const;
1852
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1853
  inline isl::pw_aff floor() const;
1854
  inline isl::stat foreach_piece(const std::function<isl::stat(isl::set, isl::aff)> &fn) const;
1855
  inline isl::pw_aff from_range() const;
1856
  inline isl::set ge_set(isl::pw_aff pwaff2) const;
1857
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1858
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1859
  inline isl::space get_domain_space() const;
1860
  inline uint32_t get_hash() const;
1861
  inline isl::space get_space() const;
1862
  inline isl::id get_tuple_id(isl::dim type) const;
1863
  inline isl::pw_aff gist(isl::set context) const;
1864
  inline isl::pw_aff gist_params(isl::set context) const;
1865
  inline isl::map gt_map(isl::pw_aff pa2) const;
1866
  inline isl::set gt_set(isl::pw_aff pwaff2) const;
1867
  inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
1868
  inline isl::boolean has_tuple_id(isl::dim type) const;
1869
  inline isl::pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1870
  inline isl::pw_aff intersect_domain(isl::set set) const;
1871
  inline isl::pw_aff intersect_params(isl::set set) const;
1872
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1873
  inline isl::boolean involves_nan() const;
1874
  inline isl::boolean is_cst() const;
1875
  inline isl::boolean is_empty() const;
1876
  inline isl::boolean is_equal(const isl::pw_aff &pa2) const;
1877
  inline isl::set le_set(isl::pw_aff pwaff2) const;
1878
  inline isl::map lt_map(isl::pw_aff pa2) const;
1879
  inline isl::set lt_set(isl::pw_aff pwaff2) const;
1880
  inline isl::pw_aff max(isl::pw_aff pwaff2) const;
1881
  inline isl::pw_aff min(isl::pw_aff pwaff2) const;
1882
  inline isl::pw_aff mod(isl::val mod) const;
1883
  inline isl::pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1884
  inline isl::pw_aff mul(isl::pw_aff pwaff2) const;
1885
  inline int n_piece() const;
1886
  static inline isl::pw_aff nan_on_domain(isl::local_space ls);
1887
  inline isl::set ne_set(isl::pw_aff pwaff2) const;
1888
  inline isl::pw_aff neg() const;
1889
  inline isl::set non_zero_set() const;
1890
  inline isl::set nonneg_set() const;
1891
  inline isl::set params() const;
1892
  inline int plain_cmp(const isl::pw_aff &pa2) const;
1893
  inline isl::boolean plain_is_equal(const isl::pw_aff &pwaff2) const;
1894
  inline isl::set pos_set() const;
1895
  inline isl::pw_aff project_domain_on_params() const;
1896
  inline isl::pw_aff pullback(isl::multi_aff ma) const;
1897
  inline isl::pw_aff pullback(isl::pw_multi_aff pma) const;
1898
  inline isl::pw_aff pullback(isl::multi_pw_aff mpa) const;
1899
  inline isl::pw_aff reset_tuple_id(isl::dim type) const;
1900
  inline isl::pw_aff reset_user() const;
1901
  inline isl::pw_aff scale(isl::val v) const;
1902
  inline isl::pw_aff scale_down(isl::val f) const;
1903
  inline isl::pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1904
  inline isl::pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1905
  inline isl::pw_aff sub(isl::pw_aff pwaff2) const;
1906
  inline isl::pw_aff subtract_domain(isl::set set) const;
1907
  inline isl::pw_aff tdiv_q(isl::pw_aff pa2) const;
1908
  inline isl::pw_aff tdiv_r(isl::pw_aff pa2) const;
1909
  inline isl::pw_aff union_add(isl::pw_aff pwaff2) const;
1910
  inline isl::pw_aff union_max(isl::pw_aff pwaff2) const;
1911
  inline isl::pw_aff union_min(isl::pw_aff pwaff2) const;
1912
  static inline isl::pw_aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
1913
  inline isl::set zero_set() const;
1914
};
1915
1916
// declarations for isl::pw_aff_list
1917
inline isl::pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
1918
inline isl::pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
1919
1920
class pw_aff_list {
1921
  friend inline isl::pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
1922
  friend inline isl::pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
1923
1924
  isl_pw_aff_list *ptr = nullptr;
1925
1926
  inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
1927
1928
public:
1929
  inline /* implicit */ pw_aff_list();
1930
  inline /* implicit */ pw_aff_list(const isl::pw_aff_list &obj);
1931
  inline /* implicit */ pw_aff_list(std::nullptr_t);
1932
  inline isl::pw_aff_list &operator=(isl::pw_aff_list obj);
1933
  inline ~pw_aff_list();
1934
  inline __isl_give isl_pw_aff_list *copy() const &;
1935
  inline __isl_give isl_pw_aff_list *copy() && = delete;
1936
  inline __isl_keep isl_pw_aff_list *get() const;
1937
  inline __isl_give isl_pw_aff_list *release();
1938
  inline bool is_null() const;
1939
  inline explicit operator bool() const;
1940
  inline isl::ctx get_ctx() const;
1941
  inline void dump() const;
1942
1943
  inline isl::pw_aff_list add(isl::pw_aff el) const;
1944
  static inline isl::pw_aff_list alloc(isl::ctx ctx, int n);
1945
  inline isl::pw_aff_list concat(isl::pw_aff_list list2) const;
1946
  inline isl::pw_aff_list drop(unsigned int first, unsigned int n) const;
1947
  inline isl::set eq_set(isl::pw_aff_list list2) const;
1948
  inline isl::stat foreach(const std::function<isl::stat(isl::pw_aff)> &fn) const;
1949
  static inline isl::pw_aff_list from_pw_aff(isl::pw_aff el);
1950
  inline isl::set ge_set(isl::pw_aff_list list2) const;
1951
  inline isl::pw_aff get_pw_aff(int index) const;
1952
  inline isl::set gt_set(isl::pw_aff_list list2) const;
1953
  inline isl::pw_aff_list insert(unsigned int pos, isl::pw_aff el) const;
1954
  inline isl::set le_set(isl::pw_aff_list list2) const;
1955
  inline isl::set lt_set(isl::pw_aff_list list2) const;
1956
  inline isl::pw_aff max() const;
1957
  inline isl::pw_aff min() const;
1958
  inline int n_pw_aff() const;
1959
  inline isl::set ne_set(isl::pw_aff_list list2) const;
1960
  inline isl::pw_aff_list set_pw_aff(int index, isl::pw_aff el) const;
1961
};
1962
1963
// declarations for isl::pw_multi_aff
1964
inline isl::pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
1965
inline isl::pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
1966
1967
class pw_multi_aff {
1968
  friend inline isl::pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
1969
  friend inline isl::pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
1970
1971
  isl_pw_multi_aff *ptr = nullptr;
1972
1973
  inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
1974
1975
public:
1976
  inline /* implicit */ pw_multi_aff();
1977
  inline /* implicit */ pw_multi_aff(const isl::pw_multi_aff &obj);
1978
  inline /* implicit */ pw_multi_aff(std::nullptr_t);
1979
  inline /* implicit */ pw_multi_aff(isl::multi_aff ma);
1980
  inline /* implicit */ pw_multi_aff(isl::pw_aff pa);
1981
  inline explicit pw_multi_aff(isl::ctx ctx, const std::string &str);
1982
  inline isl::pw_multi_aff &operator=(isl::pw_multi_aff obj);
1983
  inline ~pw_multi_aff();
1984
  inline __isl_give isl_pw_multi_aff *copy() const &;
1985
  inline __isl_give isl_pw_multi_aff *copy() && = delete;
1986
  inline __isl_keep isl_pw_multi_aff *get() const;
1987
  inline __isl_give isl_pw_multi_aff *release();
1988
  inline bool is_null() const;
1989
  inline explicit operator bool() const;
1990
  inline isl::ctx get_ctx() const;
1991
  inline std::string to_str() const;
1992
  inline void dump() const;
1993
1994
  inline isl::pw_multi_aff add(isl::pw_multi_aff pma2) const;
1995
  inline isl::pw_multi_aff align_params(isl::space model) const;
1996
  static inline isl::pw_multi_aff alloc(isl::set set, isl::multi_aff maff);
1997
  inline isl::pw_multi_aff coalesce() const;
1998
  inline unsigned int dim(isl::dim type) const;
1999
  inline isl::set domain() const;
2000
  inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2001
  inline isl::pw_multi_aff drop_unused_params() const;
2002
  static inline isl::pw_multi_aff empty(isl::space space);
2003
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2004
  inline isl::pw_multi_aff fix_si(isl::dim type, unsigned int pos, int value) const;
2005
  inline isl::pw_multi_aff flat_range_product(isl::pw_multi_aff pma2) const;
2006
  inline isl::stat foreach_piece(const std::function<isl::stat(isl::set, isl::multi_aff)> &fn) const;
2007
  static inline isl::pw_multi_aff from_domain(isl::set set);
2008
  static inline isl::pw_multi_aff from_map(isl::map map);
2009
  static inline isl::pw_multi_aff from_multi_pw_aff(isl::multi_pw_aff mpa);
2010
  static inline isl::pw_multi_aff from_set(isl::set set);
2011
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2012
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2013
  inline isl::space get_domain_space() const;
2014
  inline isl::pw_aff get_pw_aff(int pos) const;
2015
  inline isl::space get_space() const;
2016
  inline isl::id get_tuple_id(isl::dim type) const;
2017
  inline std::string get_tuple_name(isl::dim type) const;
2018
  inline isl::pw_multi_aff gist(isl::set set) const;
2019
  inline isl::pw_multi_aff gist_params(isl::set set) const;
2020
  inline isl::boolean has_tuple_id(isl::dim type) const;
2021
  inline isl::boolean has_tuple_name(isl::dim type) const;
2022
  static inline isl::pw_multi_aff identity(isl::space space);
2023
  inline isl::pw_multi_aff intersect_domain(isl::set set) const;
2024
  inline isl::pw_multi_aff intersect_params(isl::set set) const;
2025
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2026
  inline isl::boolean involves_nan() const;
2027
  inline isl::boolean is_equal(const isl::pw_multi_aff &pma2) const;
2028
  static inline isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv);
2029
  inline int n_piece() const;
2030
  inline isl::pw_multi_aff neg() const;
2031
  inline isl::boolean plain_is_equal(const isl::pw_multi_aff &pma2) const;
2032
  inline isl::pw_multi_aff product(isl::pw_multi_aff pma2) const;
2033
  inline isl::pw_multi_aff project_domain_on_params() const;
2034
  static inline isl::pw_multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
2035
  inline isl::pw_multi_aff pullback(isl::multi_aff ma) const;
2036
  inline isl::pw_multi_aff pullback(isl::pw_multi_aff pma2) const;
2037
  static inline isl::pw_multi_aff range_map(isl::space space);
2038
  inline isl::pw_multi_aff range_product(isl::pw_multi_aff pma2) const;
2039
  inline isl::pw_multi_aff reset_tuple_id(isl::dim type) const;
2040
  inline isl::pw_multi_aff reset_user() const;
2041
  inline isl::pw_multi_aff scale_down_val(isl::val v) const;
2042
  inline isl::pw_multi_aff scale_multi_val(isl::multi_val mv) const;
2043
  inline isl::pw_multi_aff scale_val(isl::val v) const;
2044
  inline isl::pw_multi_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2045
  inline isl::pw_multi_aff set_pw_aff(unsigned int pos, isl::pw_aff pa) const;
2046
  inline isl::pw_multi_aff set_tuple_id(isl::dim type, isl::id id) const;
2047
  inline isl::pw_multi_aff sub(isl::pw_multi_aff pma2) const;
2048
  inline isl::pw_multi_aff subtract_domain(isl::set set) const;
2049
  inline isl::pw_multi_aff union_add(isl::pw_multi_aff pma2) const;
2050
  inline isl::pw_multi_aff union_lexmax(isl::pw_multi_aff pma2) const;
2051
  inline isl::pw_multi_aff union_lexmin(isl::pw_multi_aff pma2) const;
2052
  static inline isl::pw_multi_aff zero(isl::space space);
2053
};
2054
2055
// declarations for isl::pw_qpolynomial
2056
inline isl::pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2057
inline isl::pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2058
2059
class pw_qpolynomial {
2060
  friend inline isl::pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2061
  friend inline isl::pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2062
2063
  isl_pw_qpolynomial *ptr = nullptr;
2064
2065
  inline explicit pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr);
2066
2067
public:
2068
  inline /* implicit */ pw_qpolynomial();
2069
  inline /* implicit */ pw_qpolynomial(const isl::pw_qpolynomial &obj);
2070
  inline /* implicit */ pw_qpolynomial(std::nullptr_t);
2071
  inline explicit pw_qpolynomial(isl::ctx ctx, const std::string &str);
2072
  inline isl::pw_qpolynomial &operator=(isl::pw_qpolynomial obj);
2073
  inline ~pw_qpolynomial();
2074
  inline __isl_give isl_pw_qpolynomial *copy() const &;
2075
  inline __isl_give isl_pw_qpolynomial *copy() && = delete;
2076
  inline __isl_keep isl_pw_qpolynomial *get() const;
2077
  inline __isl_give isl_pw_qpolynomial *release();
2078
  inline bool is_null() const;
2079
  inline explicit operator bool() const;
2080
  inline isl::ctx get_ctx() const;
2081
  inline std::string to_str() const;
2082
  inline void dump() const;
2083
2084
  inline isl::pw_qpolynomial add(isl::pw_qpolynomial pwqp2) const;
2085
  inline isl::pw_qpolynomial add_dims(isl::dim type, unsigned int n) const;
2086
  static inline isl::pw_qpolynomial alloc(isl::set set, isl::qpolynomial qp);
2087
  inline isl::pw_qpolynomial coalesce() const;
2088
  inline unsigned int dim(isl::dim type) const;
2089
  inline isl::set domain() const;
2090
  inline isl::pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2091
  inline isl::pw_qpolynomial drop_unused_params() const;
2092
  inline isl::val eval(isl::point pnt) const;
2093
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2094
  inline isl::pw_qpolynomial fix_val(isl::dim type, unsigned int n, isl::val v) const;
2095
  inline isl::stat foreach_piece(const std::function<isl::stat(isl::set, isl::qpolynomial)> &fn) const;
2096
  static inline isl::pw_qpolynomial from_pw_aff(isl::pw_aff pwaff);
2097
  static inline isl::pw_qpolynomial from_qpolynomial(isl::qpolynomial qp);
2098
  inline isl::pw_qpolynomial from_range() const;
2099
  inline isl::space get_domain_space() const;
2100
  inline isl::space get_space() const;
2101
  inline isl::pw_qpolynomial gist(isl::set context) const;
2102
  inline isl::pw_qpolynomial gist_params(isl::set context) const;
2103
  inline isl::boolean has_equal_space(const isl::pw_qpolynomial &pwqp2) const;
2104
  inline isl::pw_qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2105
  inline isl::pw_qpolynomial intersect_domain(isl::set set) const;
2106
  inline isl::pw_qpolynomial intersect_params(isl::set set) const;
2107
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2108
  inline isl::boolean involves_nan() const;
2109
  inline isl::boolean is_zero() const;
2110
  inline isl::val max() const;
2111
  inline isl::val min() const;
2112
  inline isl::pw_qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2113
  inline isl::pw_qpolynomial mul(isl::pw_qpolynomial pwqp2) const;
2114
  inline int n_piece() const;
2115
  inline isl::pw_qpolynomial neg() const;
2116
  inline isl::boolean plain_is_equal(const isl::pw_qpolynomial &pwqp2) const;
2117
  inline isl::pw_qpolynomial pow(unsigned int exponent) const;
2118
  inline isl::pw_qpolynomial project_domain_on_params() const;
2119
  inline isl::pw_qpolynomial reset_domain_space(isl::space dim) const;
2120
  inline isl::pw_qpolynomial reset_user() const;
2121
  inline isl::pw_qpolynomial scale_down_val(isl::val v) const;
2122
  inline isl::pw_qpolynomial scale_val(isl::val v) const;
2123
  inline isl::pw_qpolynomial split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2124
  inline isl::pw_qpolynomial split_periods(int max_periods) const;
2125
  inline isl::pw_qpolynomial sub(isl::pw_qpolynomial pwqp2) const;
2126
  inline isl::pw_qpolynomial subtract_domain(isl::set set) const;
2127
  inline isl::pw_qpolynomial to_polynomial(int sign) const;
2128
  static inline isl::pw_qpolynomial zero(isl::space dim);
2129
};
2130
2131
// declarations for isl::qpolynomial
2132
inline isl::qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2133
inline isl::qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2134
2135
class qpolynomial {
2136
  friend inline isl::qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2137
  friend inline isl::qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2138
2139
  isl_qpolynomial *ptr = nullptr;
2140
2141
  inline explicit qpolynomial(__isl_take isl_qpolynomial *ptr);
2142
2143
public:
2144
  inline /* implicit */ qpolynomial();
2145
  inline /* implicit */ qpolynomial(const isl::qpolynomial &obj);
2146
  inline /* implicit */ qpolynomial(std::nullptr_t);
2147
  inline isl::qpolynomial &operator=(isl::qpolynomial obj);
2148
  inline ~qpolynomial();
2149
  inline __isl_give isl_qpolynomial *copy() const &;
2150
  inline __isl_give isl_qpolynomial *copy() && = delete;
2151
  inline __isl_keep isl_qpolynomial *get() const;
2152
  inline __isl_give isl_qpolynomial *release();
2153
  inline bool is_null() const;
2154
  inline explicit operator bool() const;
2155
  inline isl::ctx get_ctx() const;
2156
  inline void dump() const;
2157
2158
  inline isl::qpolynomial add(isl::qpolynomial qp2) const;
2159
  inline isl::qpolynomial add_dims(isl::dim type, unsigned int n) const;
2160
  inline isl::qpolynomial align_params(isl::space model) const;
2161
  inline isl::stat as_polynomial_on_domain(const isl::basic_set &bset, const std::function<isl::stat(isl::basic_set, isl::qpolynomial)> &fn) const;
2162
  inline unsigned int dim(isl::dim type) const;
2163
  inline isl::qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2164
  inline isl::val eval(isl::point pnt) const;
2165
  inline isl::stat foreach_term(const std::function<isl::stat(isl::term)> &fn) const;
2166
  static inline isl::qpolynomial from_aff(isl::aff aff);
2167
  static inline isl::qpolynomial from_constraint(isl::constraint c, isl::dim type, unsigned int pos);
2168
  static inline isl::qpolynomial from_term(isl::term term);
2169
  inline isl::val get_constant_val() const;
2170
  inline isl::space get_domain_space() const;
2171
  inline isl::space get_space() const;
2172
  inline isl::qpolynomial gist(isl::set context) const;
2173
  inline isl::qpolynomial gist_params(isl::set context) const;
2174
  inline isl::qpolynomial homogenize() const;
2175
  static inline isl::qpolynomial infty_on_domain(isl::space dim);
2176
  inline isl::qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2177
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2178
  inline isl::boolean is_infty() const;
2179
  inline isl::boolean is_nan() const;
2180
  inline isl::boolean is_neginfty() const;
2181
  inline isl::boolean is_zero() const;
2182
  inline isl::qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2183
  inline isl::qpolynomial mul(isl::qpolynomial qp2) const;
2184
  static inline isl::qpolynomial nan_on_domain(isl::space dim);
2185
  inline isl::qpolynomial neg() const;
2186
  static inline isl::qpolynomial neginfty_on_domain(isl::space dim);
2187
  static inline isl::qpolynomial one_on_domain(isl::space dim);
2188
  inline isl::boolean plain_is_equal(const isl::qpolynomial &qp2) const;
2189
  inline isl::qpolynomial pow(unsigned int power) const;
2190
  inline isl::qpolynomial project_domain_on_params() const;
2191
  inline isl::qpolynomial scale_down_val(isl::val v) const;
2192
  inline isl::qpolynomial scale_val(isl::val v) const;
2193
  inline int sgn() const;
2194
  inline isl::qpolynomial sub(isl::qpolynomial qp2) const;
2195
  static inline isl::qpolynomial val_on_domain(isl::space space, isl::val val);
2196
  static inline isl::qpolynomial var_on_domain(isl::space dim, isl::dim type, unsigned int pos);
2197
  static inline isl::qpolynomial zero_on_domain(isl::space dim);
2198
};
2199
2200
// declarations for isl::schedule
2201
inline isl::schedule manage(__isl_take isl_schedule *ptr);
2202
inline isl::schedule manage_copy(__isl_keep isl_schedule *ptr);
2203
2204
class schedule {
2205
  friend inline isl::schedule manage(__isl_take isl_schedule *ptr);
2206
  friend inline isl::schedule manage_copy(__isl_keep isl_schedule *ptr);
2207
2208
  isl_schedule *ptr = nullptr;
2209
2210
  inline explicit schedule(__isl_take isl_schedule *ptr);
2211
2212
public:
2213
  inline /* implicit */ schedule();
2214
  inline /* implicit */ schedule(const isl::schedule &obj);
2215
  inline /* implicit */ schedule(std::nullptr_t);
2216
  inline explicit schedule(isl::ctx ctx, const std::string &str);
2217
  inline isl::schedule &operator=(isl::schedule obj);
2218
  inline ~schedule();
2219
  inline __isl_give isl_schedule *copy() const &;
2220
  inline __isl_give isl_schedule *copy() && = delete;
2221
  inline __isl_keep isl_schedule *get() const;
2222
  inline __isl_give isl_schedule *release();
2223
  inline bool is_null() const;
2224
  inline explicit operator bool() const;
2225
  inline isl::ctx get_ctx() const;
2226
  inline std::string to_str() const;
2227
  inline void dump() const;
2228
2229
  inline isl::schedule align_params(isl::space space) const;
2230
  static inline isl::schedule empty(isl::space space);
2231
  static inline isl::schedule from_domain(isl::union_set domain);
2232
  inline isl::union_set get_domain() const;
2233
  inline isl::union_map get_map() const;
2234
  inline isl::schedule_node get_root() const;
2235
  inline isl::schedule gist_domain_params(isl::set context) const;
2236
  inline isl::schedule insert_context(isl::set context) const;
2237
  inline isl::schedule insert_guard(isl::set guard) const;
2238
  inline isl::schedule insert_partial_schedule(isl::multi_union_pw_aff partial) const;
2239
  inline isl::schedule intersect_domain(isl::union_set domain) const;
2240
  inline isl::boolean plain_is_equal(const isl::schedule &schedule2) const;
2241
  inline isl::schedule pullback(isl::union_pw_multi_aff upma) const;
2242
  inline isl::schedule reset_user() const;
2243
  inline isl::schedule sequence(isl::schedule schedule2) const;
2244
  inline isl::schedule set(isl::schedule schedule2) const;
2245
};
2246
2247
// declarations for isl::schedule_constraints
2248
inline isl::schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2249
inline isl::schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2250
2251
class schedule_constraints {
2252
  friend inline isl::schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2253
  friend inline isl::schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2254
2255
  isl_schedule_constraints *ptr = nullptr;
2256
2257
  inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
2258
2259
public:
2260
  inline /* implicit */ schedule_constraints();
2261
  inline /* implicit */ schedule_constraints(const isl::schedule_constraints &obj);
2262
  inline /* implicit */ schedule_constraints(std::nullptr_t);
2263
  inline explicit schedule_constraints(isl::ctx ctx, const std::string &str);
2264
  inline isl::schedule_constraints &operator=(isl::schedule_constraints obj);
2265
  inline ~schedule_constraints();
2266
  inline __isl_give isl_schedule_constraints *copy() const &;
2267
  inline __isl_give isl_schedule_constraints *copy() && = delete;
2268
  inline __isl_keep isl_schedule_constraints *get() const;
2269
  inline __isl_give isl_schedule_constraints *release();
2270
  inline bool is_null() const;
2271
  inline explicit operator bool() const;
2272
  inline isl::ctx get_ctx() const;
2273
  inline std::string to_str() const;
2274
  inline void dump() const;
2275
2276
  inline isl::schedule_constraints apply(isl::union_map umap) const;
2277
  inline isl::schedule compute_schedule() const;
2278
  inline isl::union_map get_coincidence() const;
2279
  inline isl::union_map get_conditional_validity() const;
2280
  inline isl::union_map get_conditional_validity_condition() const;
2281
  inline isl::set get_context() const;
2282
  inline isl::union_set get_domain() const;
2283
  inline isl::union_map get_proximity() const;
2284
  inline isl::union_map get_validity() const;
2285
  static inline isl::schedule_constraints on_domain(isl::union_set domain);
2286
  inline isl::schedule_constraints set_coincidence(isl::union_map coincidence) const;
2287
  inline isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const;
2288
  inline isl::schedule_constraints set_context(isl::set context) const;
2289
  inline isl::schedule_constraints set_proximity(isl::union_map proximity) const;
2290
  inline isl::schedule_constraints set_validity(isl::union_map validity) const;
2291
};
2292
2293
// declarations for isl::schedule_node
2294
inline isl::schedule_node manage(__isl_take isl_schedule_node *ptr);
2295
inline isl::schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2296
2297
class schedule_node {
2298
  friend inline isl::schedule_node manage(__isl_take isl_schedule_node *ptr);
2299
  friend inline isl::schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2300
2301
  isl_schedule_node *ptr = nullptr;
2302
2303
  inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
2304
2305
public:
2306
  inline /* implicit */ schedule_node();
2307
  inline /* implicit */ schedule_node(const isl::schedule_node &obj);
2308
  inline /* implicit */ schedule_node(std::nullptr_t);
2309
  inline isl::schedule_node &operator=(isl::schedule_node obj);
2310
  inline ~schedule_node();
2311
  inline __isl_give isl_schedule_node *copy() const &;
2312
  inline __isl_give isl_schedule_node *copy() && = delete;
2313
  inline __isl_keep isl_schedule_node *get() const;
2314
  inline __isl_give isl_schedule_node *release();
2315
  inline bool is_null() const;
2316
  inline explicit operator bool() const;
2317
  inline isl::ctx get_ctx() const;
2318
  inline std::string to_str() const;
2319
  inline void dump() const;
2320
2321
  inline isl::schedule_node align_params(isl::space space) const;
2322
  inline isl::schedule_node ancestor(int generation) const;
2323
  inline isl::boolean band_member_get_coincident(int pos) const;
2324
  inline isl::schedule_node band_member_set_coincident(int pos, int coincident) const;
2325
  inline isl::schedule_node band_set_ast_build_options(isl::union_set options) const;
2326
  inline isl::schedule_node child(int pos) const;
2327
  inline isl::set context_get_context() const;
2328
  inline isl::schedule_node cut() const;
2329
  inline isl::union_set domain_get_domain() const;
2330
  inline isl::union_pw_multi_aff expansion_get_contraction() const;
2331
  inline isl::union_map expansion_get_expansion() const;
2332
  inline isl::union_map extension_get_extension() const;
2333
  inline isl::union_set filter_get_filter() const;
2334
  inline isl::schedule_node first_child() const;
2335
  inline isl::stat foreach_ancestor_top_down(const std::function<isl::stat(isl::schedule_node)> &fn) const;
2336
  static inline isl::schedule_node from_domain(isl::union_set domain);
2337
  static inline isl::schedule_node from_extension(isl::union_map extension);
2338
  inline int get_ancestor_child_position(const isl::schedule_node &ancestor) const;
2339
  inline isl::schedule_node get_child(int pos) const;
2340
  inline int get_child_position() const;
2341
  inline isl::union_set get_domain() const;
2342
  inline isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
2343
  inline isl::union_map get_prefix_schedule_relation() const;
2344
  inline isl::union_map get_prefix_schedule_union_map() const;
2345
  inline isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
2346
  inline isl::schedule get_schedule() const;
2347
  inline int get_schedule_depth() const;
2348
  inline isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const;
2349
  inline isl::union_pw_multi_aff get_subtree_contraction() const;
2350
  inline isl::union_map get_subtree_expansion() const;
2351
  inline isl::union_map get_subtree_schedule_union_map() const;
2352
  inline int get_tree_depth() const;
2353
  inline isl::union_set get_universe_domain() const;
2354
  inline isl::schedule_node graft_after(isl::schedule_node graft) const;
2355
  inline isl::schedule_node graft_before(isl::schedule_node graft) const;
2356
  inline isl::schedule_node group(isl::id group_id) const;
2357
  inline isl::set guard_get_guard() const;
2358
  inline isl::boolean has_children() const;
2359
  inline isl::boolean has_next_sibling() const;
2360
  inline isl::boolean has_parent() const;
2361
  inline isl::boolean has_previous_sibling() const;
2362
  inline isl::schedule_node insert_context(isl::set context) const;
2363
  inline isl::schedule_node insert_filter(isl::union_set filter) const;
2364
  inline isl::schedule_node insert_guard(isl::set context) const;
2365
  inline isl::schedule_node insert_mark(isl::id mark) const;
2366
  inline isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const;
2367
  inline isl::schedule_node insert_sequence(isl::union_set_list filters) const;
2368
  inline isl::schedule_node insert_set(isl::union_set_list filters) const;
2369
  inline isl::boolean is_equal(const isl::schedule_node &node2) const;
2370
  inline isl::boolean is_subtree_anchored() const;
2371
  inline isl::id mark_get_id() const;
2372
  inline int n_children() const;
2373
  inline isl::schedule_node next_sibling() const;
2374
  inline isl::schedule_node order_after(isl::union_set filter) const;
2375
  inline isl::schedule_node order_before(isl::union_set filter) const;
2376
  inline isl::schedule_node parent() const;
2377
  inline isl::schedule_node previous_sibling() const;
2378
  inline isl::schedule_node reset_user() const;
2379
  inline isl::schedule_node root() const;
2380
  inline isl::schedule_node sequence_splice_child(int pos) const;
2381
};
2382
2383
// declarations for isl::set
2384
inline isl::set manage(__isl_take isl_set *ptr);
2385
inline isl::set manage_copy(__isl_keep isl_set *ptr);
2386
2387
class set {
2388
  friend inline isl::set manage(__isl_take isl_set *ptr);
2389
  friend inline isl::set manage_copy(__isl_keep isl_set *ptr);
2390
2391
  isl_set *ptr = nullptr;
2392
2393
  inline explicit set(__isl_take isl_set *ptr);
2394
2395
public:
2396
  inline /* implicit */ set();
2397
  inline /* implicit */ set(const isl::set &obj);
2398
  inline /* implicit */ set(std::nullptr_t);
2399
  inline explicit set(isl::ctx ctx, const std::string &str);
2400
  inline /* implicit */ set(isl::basic_set bset);
2401
  inline /* implicit */ set(isl::point pnt);
2402
  inline explicit set(isl::union_set uset);
2403
  inline isl::set &operator=(isl::set obj);
2404
  inline ~set();
2405
  inline __isl_give isl_set *copy() const &;
2406
  inline __isl_give isl_set *copy() && = delete;
2407
  inline __isl_keep isl_set *get() const;
2408
  inline __isl_give isl_set *release();
2409
  inline bool is_null() const;
2410
  inline explicit operator bool() const;
2411
  inline isl::ctx get_ctx() const;
2412
  inline std::string to_str() const;
2413
  inline void dump() const;
2414
2415
  inline isl::set add_constraint(isl::constraint constraint) const;
2416
  inline isl::set add_dims(isl::dim type, unsigned int n) const;
2417
  inline isl::basic_set affine_hull() const;
2418
  inline isl::set align_params(isl::space model) const;
2419
  inline isl::set apply(isl::map map) const;
2420
  inline isl::basic_set bounded_simple_hull() const;
2421
  static inline isl::set box_from_points(isl::point pnt1, isl::point pnt2);
2422
  inline isl::set coalesce() const;
2423
  inline isl::basic_set coefficients() const;
2424
  inline isl::set complement() const;
2425
  inline isl::basic_set convex_hull() const;
2426
  inline isl::val count_val() const;
2427
  inline isl::set detect_equalities() const;
2428
  inline unsigned int dim(isl::dim type) const;
2429
  inline isl::boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2430
  inline isl::boolean dim_has_any_upper_bound(isl::dim type, unsigned int pos) const;
2431
  inline isl::boolean dim_has_lower_bound(isl::dim type, unsigned int pos) const;
2432
  inline isl::boolean dim_has_upper_bound(isl::dim type, unsigned int pos) const;
2433
  inline isl::boolean dim_is_bounded(isl::dim type, unsigned int pos) const;
2434
  inline isl::pw_aff dim_max(int pos) const;
2435
  inline isl::pw_aff dim_min(int pos) const;
2436
  inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2437
  inline isl::set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2438
  inline isl::set drop_unused_params() const;
2439
  inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2440
  static inline isl::set empty(isl::space space);
2441
  inline isl::set equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2442
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2443
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2444
  inline isl::set fix_si(isl::dim type, unsigned int pos, int value) const;
2445
  inline isl::set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
2446
  inline isl::set flat_product(isl::set set2) const;
2447
  inline isl::set flatten() const;
2448
  inline isl::map flatten_map() const;
2449
  inline int follows_at(const isl::set &set2, int pos) const;
2450
  inline isl::stat foreach_basic_set(const std::function<isl::stat(isl::basic_set)> &fn) const;
2451
  inline isl::stat foreach_point(const std::function<isl::stat(isl::point)> &fn) const;
2452
  static inline isl::set from_multi_pw_aff(isl::multi_pw_aff mpa);
2453
  inline isl::set from_params() const;
2454
  static inline isl::set from_pw_aff(isl::pw_aff pwaff);
2455
  static inline isl::set from_pw_multi_aff(isl::pw_multi_aff pma);
2456
  inline isl::basic_set_list get_basic_set_list() const;
2457
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2458
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2459
  inline isl::space get_space() const;
2460
  inline isl::val get_stride(int pos) const;
2461
  inline isl::id get_tuple_id() const;
2462
  inline std::string get_tuple_name() const;
2463
  inline isl::set gist(isl::set context) const;
2464
  inline isl::set gist_basic_set(isl::basic_set context) const;
2465
  inline isl::set gist_params(isl::set context) const;
2466
  inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
2467
  inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
2468
  inline isl::boolean has_equal_space(const isl::set &set2) const;
2469
  inline isl::boolean has_tuple_id() const;
2470
  inline isl::boolean has_tuple_name() const;
2471
  inline isl::map identity() const;
2472
  inline isl::pw_aff indicator_function() const;
2473
  inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2474
  inline isl::set intersect(isl::set set2) const;
2475
  inline isl::set intersect_params(isl::set params) const;
2476
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2477
  inline isl::boolean is_bounded() const;
2478
  inline isl::boolean is_box() const;
2479
  inline isl::boolean is_disjoint(const isl::set &set2) const;
2480
  inline isl::boolean is_empty() const;
2481
  inline isl::boolean is_equal(const isl::set &set2) const;
2482
  inline isl::boolean is_params() const;
2483
  inline isl::boolean is_singleton() const;
2484
  inline isl::boolean is_strict_subset(const isl::set &set2) const;
2485
  inline isl::boolean is_subset(const isl::set &set2) const;
2486
  inline isl::boolean is_wrapping() const;
2487
  inline isl::map lex_ge_set(isl::set set2) const;
2488
  inline isl::map lex_gt_set(isl::set set2) const;
2489
  inline isl::map lex_le_set(isl::set set2) const;
2490
  inline isl::map lex_lt_set(isl::set set2) const;
2491
  inline isl::set lexmax() const;
2492
  inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2493
  inline isl::set lexmin() const;
2494
  inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2495
  inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2496
  inline isl::set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
2497
  inline isl::val max_val(const isl::aff &obj) const;
2498
  inline isl::val min_val(const isl::aff &obj) const;
2499
  inline isl::set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2500
  inline int n_basic_set() const;
2501
  inline unsigned int n_dim() const;
2502
  static inline isl::set nat_universe(isl::space dim);
2503
  inline isl::set neg() const;
2504
  inline isl::set params() const;
2505
  inline int plain_cmp(const isl::set &set2) const;
2506
  inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2507
  inline isl::boolean plain_is_disjoint(const isl::set &set2) const;
2508
  inline isl::boolean plain_is_empty() const;
2509
  inline isl::boolean plain_is_equal(const isl::set &set2) const;
2510
  inline isl::boolean plain_is_universe() const;
2511
  inline isl::basic_set plain_unshifted_simple_hull() const;
2512
  inline isl::basic_set polyhedral_hull() const;
2513
  inline isl::set preimage_multi_aff(isl::multi_aff ma) const;
2514
  inline isl::set preimage_multi_pw_aff(isl::multi_pw_aff mpa) const;
2515
  inline isl::set preimage_pw_multi_aff(isl::pw_multi_aff pma) const;
2516
  inline isl::set product(isl::set set2) const;
2517
  inline isl::map project_onto_map(isl::dim type, unsigned int first, unsigned int n) const;
2518
  inline isl::set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2519
  inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2520
  inline isl::set remove_divs() const;
2521
  inline isl::set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2522
  inline isl::set remove_redundancies() const;
2523
  inline isl::set remove_unknown_divs() const;
2524
  inline isl::set reset_space(isl::space dim) const;
2525
  inline isl::set reset_tuple_id() const;
2526
  inline isl::set reset_user() const;
2527
  inline isl::basic_set sample() const;
2528
  inline isl::point sample_point() const;
2529
  inline isl::set set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2530
  inline isl::set set_tuple_id(isl::id id) const;
2531
  inline isl::set set_tuple_name(const std::string &s) const;
2532
  inline isl::basic_set simple_hull() const;
2533
  inline int size() const;
2534
  inline isl::basic_set solutions() const;
2535
  inline isl::set split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2536
  inline isl::set subtract(isl::set set2) const;
2537
  inline isl::set sum(isl::set set2) const;
2538
  inline isl::set unite(isl::set set2) const;
2539
  static inline isl::set universe(isl::space space);
2540
  inline isl::basic_set unshifted_simple_hull() const;
2541
  inline isl::basic_set unshifted_simple_hull_from_set_list(isl::set_list list) const;
2542
  inline isl::map unwrap() const;
2543
  inline isl::set upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2544
  inline isl::set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
2545
  inline isl::map wrapped_domain_map() const;
2546
};
2547
2548
// declarations for isl::set_list
2549
inline isl::set_list manage(__isl_take isl_set_list *ptr);
2550
inline isl::set_list manage_copy(__isl_keep isl_set_list *ptr);
2551
2552
class set_list {
2553
  friend inline isl::set_list manage(__isl_take isl_set_list *ptr);
2554
  friend inline isl::set_list manage_copy(__isl_keep isl_set_list *ptr);
2555
2556
  isl_set_list *ptr = nullptr;
2557
2558
  inline explicit set_list(__isl_take isl_set_list *ptr);
2559
2560
public:
2561
  inline /* implicit */ set_list();
2562
  inline /* implicit */ set_list(const isl::set_list &obj);
2563
  inline /* implicit */ set_list(std::nullptr_t);
2564
  inline isl::set_list &operator=(isl::set_list obj);
2565
  inline ~set_list();
2566
  inline __isl_give isl_set_list *copy() const &;
2567
  inline __isl_give isl_set_list *copy() && = delete;
2568
  inline __isl_keep isl_set_list *get() const;
2569
  inline __isl_give isl_set_list *release();
2570
  inline bool is_null() const;
2571
  inline explicit operator bool() const;
2572
  inline isl::ctx get_ctx() const;
2573
  inline void dump() const;
2574
2575
  inline isl::set_list add(isl::set el) const;
2576
  static inline isl::set_list alloc(isl::ctx ctx, int n);
2577
  inline isl::set_list concat(isl::set_list list2) const;
2578
  inline isl::set_list drop(unsigned int first, unsigned int n) const;
2579
  inline isl::stat foreach(const std::function<isl::stat(isl::set)> &fn) const;
2580
  static inline isl::set_list from_set(isl::set el);
2581
  inline isl::set get_set(int index) const;
2582
  inline isl::set_list insert(unsigned int pos, isl::set el) const;
2583
  inline int n_set() const;
2584
  inline isl::set_list set_set(int index, isl::set el) const;
2585
  inline isl::set unite() const;
2586
};
2587
2588
// declarations for isl::space
2589
inline isl::space manage(__isl_take isl_space *ptr);
2590
inline isl::space manage_copy(__isl_keep isl_space *ptr);
2591
2592
class space {
2593
  friend inline isl::space manage(__isl_take isl_space *ptr);
2594
  friend inline isl::space manage_copy(__isl_keep isl_space *ptr);
2595
2596
  isl_space *ptr = nullptr;
2597
2598
  inline explicit space(__isl_take isl_space *ptr);
2599
2600
public:
2601
  inline /* implicit */ space();
2602
  inline /* implicit */ space(const isl::space &obj);
2603
  inline /* implicit */ space(std::nullptr_t);
2604
  inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
2605
  inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int dim);
2606
  inline isl::space &operator=(isl::space obj);
2607
  inline ~space();
2608
  inline __isl_give isl_space *copy() const &;
2609
  inline __isl_give isl_space *copy() && = delete;
2610
  inline __isl_keep isl_space *get() const;
2611
  inline __isl_give isl_space *release();
2612
  inline bool is_null() const;
2613
  inline explicit operator bool() const;
2614
  inline isl::ctx get_ctx() const;
2615
  inline std::string to_str() const;
2616
  inline void dump() const;
2617
2618
  inline isl::space add_dims(isl::dim type, unsigned int n) const;
2619
  inline isl::space add_param_id(isl::id id) const;
2620
  inline isl::space align_params(isl::space dim2) const;
2621
  inline isl::boolean can_curry() const;
2622
  inline isl::boolean can_range_curry() const;
2623
  inline isl::boolean can_uncurry() const;
2624
  inline isl::boolean can_zip() const;
2625
  inline isl::space curry() const;
2626
  inline unsigned int dim(isl::dim type) const;
2627
  inline isl::space domain() const;
2628
  inline isl::space domain_factor_domain() const;
2629
  inline isl::space domain_factor_range() const;
2630
  inline isl::boolean domain_is_wrapping() const;
2631
  inline isl::space domain_map() const;
2632
  inline isl::space domain_product(isl::space right) const;
2633
  inline isl::space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
2634
  inline isl::space factor_domain() const;
2635
  inline isl::space factor_range() const;
2636
  inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2637
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2638
  inline isl::space flatten_domain() const;
2639
  inline isl::space flatten_range() const;
2640
  inline isl::space from_domain() const;
2641
  inline isl::space from_range() const;
2642
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2643
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2644
  inline isl::id get_tuple_id(isl::dim type) const;
2645
  inline std::string get_tuple_name(isl::dim type) const;
2646
  inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
2647
  inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
2648
  inline isl::boolean has_equal_params(const isl::space &space2) const;
2649
  inline isl::boolean has_equal_tuples(const isl::space &space2) const;
2650
  inline isl::boolean has_tuple_id(isl::dim type) const;
2651
  inline isl::boolean has_tuple_name(isl::dim type) const;
2652
  inline isl::space insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2653
  inline isl::boolean is_domain(const isl::space &space2) const;
2654
  inline isl::boolean is_equal(const isl::space &space2) const;
2655
  inline isl::boolean is_map() const;
2656
  inline isl::boolean is_params() const;
2657
  inline isl::boolean is_product() const;
2658
  inline isl::boolean is_range(const isl::space &space2) const;
2659
  inline isl::boolean is_set() const;
2660
  inline isl::boolean is_wrapping() const;
2661
  inline isl::space join(isl::space right) const;
2662
  inline isl::space map_from_domain_and_range(isl::space range) const;
2663
  inline isl::space map_from_set() const;
2664
  inline isl::space move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2665
  inline isl::space params() const;
2666
  static inline isl::space params_alloc(isl::ctx ctx, unsigned int nparam);
2667
  inline isl::space product(isl::space right) const;
2668
  inline isl::space range() const;
2669
  inline isl::space range_curry() const;
2670
  inline isl::space range_factor_domain() const;
2671
  inline isl::space range_factor_range() const;
2672
  inline isl::boolean range_is_wrapping() const;
2673
  inline isl::space range_map() const;
2674
  inline isl::space range_product(isl::space right) const;
2675
  inline isl::space reset_tuple_id(isl::dim type) const;
2676
  inline isl::space reset_user() const;
2677
  inline isl::space reverse() const;
2678
  inline isl::space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2679
  inline isl::space set_from_params() const;
2680
  inline isl::space set_tuple_id(isl::dim type, isl::id id) const;
2681
  inline isl::space set_tuple_name(isl::dim type, const std::string &s) const;
2682
  inline isl::boolean tuple_is_equal(isl::dim type1, const isl::space &space2, isl::dim type2) const;
2683
  inline isl::space uncurry() const;
2684
  inline isl::space unwrap() const;
2685
  inline isl::space wrap() const;
2686
  inline isl::space zip() const;
2687
};
2688
2689
// declarations for isl::term
2690
inline isl::term manage(__isl_take isl_term *ptr);
2691
inline isl::term manage_copy(__isl_keep isl_term *ptr);
2692
2693
class term {
2694
  friend inline isl::term manage(__isl_take isl_term *ptr);
2695
  friend inline isl::term manage_copy(__isl_keep isl_term *ptr);
2696
2697
  isl_term *ptr = nullptr;
2698
2699
  inline explicit term(__isl_take isl_term *ptr);
2700
2701
public:
2702
  inline /* implicit */ term();
2703
  inline /* implicit */ term(const isl::term &obj);
2704
  inline /* implicit */ term(std::nullptr_t);
2705
  inline isl::term &operator=(isl::term obj);
2706
  inline ~term();
2707
  inline __isl_give isl_term *copy() const &;
2708
  inline __isl_give isl_term *copy() && = delete;
2709
  inline __isl_keep isl_term *get() const;
2710
  inline __isl_give isl_term *release();
2711
  inline bool is_null() const;
2712
  inline explicit operator bool() const;
2713
  inline isl::ctx get_ctx() const;
2714
2715
  inline unsigned int dim(isl::dim type) const;
2716
  inline isl::val get_coefficient_val() const;
2717
  inline isl::aff get_div(unsigned int pos) const;
2718
  inline int get_exp(isl::dim type, unsigned int pos) const;
2719
};
2720
2721
// declarations for isl::union_access_info
2722
inline isl::union_access_info manage(__isl_take isl_union_access_info *ptr);
2723
inline isl::union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2724
2725
class union_access_info {
2726
  friend inline isl::union_access_info manage(__isl_take isl_union_access_info *ptr);
2727
  friend inline isl::union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2728
2729
  isl_union_access_info *ptr = nullptr;
2730
2731
  inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
2732
2733
public:
2734
  inline /* implicit */ union_access_info();
2735
  inline /* implicit */ union_access_info(const isl::union_access_info &obj);
2736
  inline /* implicit */ union_access_info(std::nullptr_t);
2737
  inline explicit union_access_info(isl::union_map sink);
2738
  inline isl::union_access_info &operator=(isl::union_access_info obj);
2739
  inline ~union_access_info();
2740
  inline __isl_give isl_union_access_info *copy() const &;
2741
  inline __isl_give isl_union_access_info *copy() && = delete;
2742
  inline __isl_keep isl_union_access_info *get() const;
2743
  inline __isl_give isl_union_access_info *release();
2744
  inline bool is_null() const;
2745
  inline explicit operator bool() const;
2746
  inline isl::ctx get_ctx() const;
2747
  inline std::string to_str() const;
2748
2749
  inline isl::union_flow compute_flow() const;
2750
  inline isl::union_access_info set_kill(isl::union_map kill) const;
2751
  inline isl::union_access_info set_may_source(isl::union_map may_source) const;
2752
  inline isl::union_access_info set_must_source(isl::union_map must_source) const;
2753
  inline isl::union_access_info set_schedule(isl::schedule schedule) const;
2754
  inline isl::union_access_info set_schedule_map(isl::union_map schedule_map) const;
2755
};
2756
2757
// declarations for isl::union_flow
2758
inline isl::union_flow manage(__isl_take isl_union_flow *ptr);
2759
inline isl::union_flow manage_copy(__isl_keep isl_union_flow *ptr);
2760
2761
class union_flow {
2762
  friend inline isl::union_flow manage(__isl_take isl_union_flow *ptr);
2763
  friend inline isl::union_flow manage_copy(__isl_keep isl_union_flow *ptr);
2764
2765
  isl_union_flow *ptr = nullptr;
2766
2767
  inline explicit union_flow(__isl_take isl_union_flow *ptr);
2768
2769
public:
2770
  inline /* implicit */ union_flow();
2771
  inline /* implicit */ union_flow(const isl::union_flow &obj);
2772
  inline /* implicit */ union_flow(std::nullptr_t);
2773
  inline isl::union_flow &operator=(isl::union_flow obj);
2774
  inline ~union_flow();
2775
  inline __isl_give isl_union_flow *copy() const &;
2776
  inline __isl_give isl_union_flow *copy() && = delete;
2777
  inline __isl_keep isl_union_flow *get() const;
2778
  inline __isl_give isl_union_flow *release();
2779
  inline bool is_null() const;
2780
  inline explicit operator bool() const;
2781
  inline isl::ctx get_ctx() const;
2782
  inline std::string to_str() const;
2783
2784
  inline isl::union_map get_full_may_dependence() const;
2785
  inline isl::union_map get_full_must_dependence() const;
2786
  inline isl::union_map get_may_dependence() const;
2787
  inline isl::union_map get_may_no_source() const;
2788
  inline isl::union_map get_must_dependence() const;
2789
  inline isl::union_map get_must_no_source() const;
2790
};
2791
2792
// declarations for isl::union_map
2793
inline isl::union_map manage(__isl_take isl_union_map *ptr);
2794
inline isl::union_map manage_copy(__isl_keep isl_union_map *ptr);
2795
2796
class union_map {
2797
  friend inline isl::union_map manage(__isl_take isl_union_map *ptr);
2798
  friend inline isl::union_map manage_copy(__isl_keep isl_union_map *ptr);
2799
2800
  isl_union_map *ptr = nullptr;
2801
2802
  inline explicit union_map(__isl_take isl_union_map *ptr);
2803
2804
public:
2805
  inline /* implicit */ union_map();
2806
  inline /* implicit */ union_map(const isl::union_map &obj);
2807
  inline /* implicit */ union_map(std::nullptr_t);
2808
  inline explicit union_map(isl::union_pw_aff upa);
2809
  inline /* implicit */ union_map(isl::basic_map bmap);
2810
  inline /* implicit */ union_map(isl::map map);
2811
  inline explicit union_map(isl::ctx ctx, const std::string &str);
2812
  inline isl::union_map &operator=(isl::union_map obj);
2813
  inline ~union_map();
2814
  inline __isl_give isl_union_map *copy() const &;
2815
  inline __isl_give isl_union_map *copy() && = delete;
2816
  inline __isl_keep isl_union_map *get() const;
2817
  inline __isl_give isl_union_map *release();
2818
  inline bool is_null() const;
2819
  inline explicit operator bool() const;
2820
  inline isl::ctx get_ctx() const;
2821
  inline std::string to_str() const;
2822
  inline void dump() const;
2823
2824
  inline isl::union_map add_map(isl::map map) const;
2825
  inline isl::union_map affine_hull() const;
2826
  inline isl::union_map align_params(isl::space model) const;
2827
  inline isl::union_map apply_domain(isl::union_map umap2) const;
2828
  inline isl::union_map apply_range(isl::union_map umap2) const;
2829
  inline isl::union_map coalesce() const;
2830
  inline isl::boolean contains(const isl::space &space) const;
2831
  inline isl::union_map curry() const;
2832
  inline isl::union_set deltas() const;
2833
  inline isl::union_map deltas_map() const;
2834
  inline isl::union_map detect_equalities() const;
2835
  inline unsigned int dim(isl::dim type) const;
2836
  inline isl::union_set domain() const;
2837
  inline isl::union_map domain_factor_domain() const;
2838
  inline isl::union_map domain_factor_range() const;
2839
  inline isl::union_map domain_map() const;
2840
  inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
2841
  inline isl::union_map domain_product(isl::union_map umap2) const;
2842
  static inline isl::union_map empty(isl::space space);
2843
  inline isl::union_map eq_at(isl::multi_union_pw_aff mupa) const;
2844
  inline isl::map extract_map(isl::space dim) const;
2845
  inline isl::union_map factor_domain() const;
2846
  inline isl::union_map factor_range() const;
2847
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2848
  inline isl::union_map fixed_power(isl::val exp) const;
2849
  inline isl::union_map flat_domain_product(isl::union_map umap2) const;
2850
  inline isl::union_map flat_range_product(isl::union_map umap2) const;
2851
  inline isl::stat foreach_map(const std::function<isl::stat(isl::map)> &fn) const;
2852
  static inline isl::union_map from(isl::union_pw_multi_aff upma);
2853
  static inline isl::union_map from(isl::multi_union_pw_aff mupa);
2854
  static inline isl::union_map from_domain(isl::union_set uset);
2855
  static inline isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range);
2856
  static inline isl::union_map from_range(isl::union_set uset);
2857
  inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2858
  inline uint32_t get_hash() const;
2859
  inline isl::map_list get_map_list() const;
2860
  inline isl::space get_space() const;
2861
  inline isl::union_map gist(isl::union_map context) const;
2862
  inline isl::union_map gist_domain(isl::union_set uset) const;
2863
  inline isl::union_map gist_params(isl::set set) const;
2864
  inline isl::union_map gist_range(isl::union_set uset) const;
2865
  inline isl::union_map intersect(isl::union_map umap2) const;
2866
  inline isl::union_map intersect_domain(isl::union_set uset) const;
2867
  inline isl::union_map intersect_params(isl::set set) const;
2868
  inline isl::union_map intersect_range(isl::union_set uset) const;
2869
  inline isl::union_map intersect_range_factor_range(isl::union_map factor) const;
2870
  inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2871
  inline isl::boolean is_bijective() const;
2872
  inline isl::boolean is_disjoint(const isl::union_map &umap2) const;
2873
  inline isl::boolean is_empty() const;
2874
  inline isl::boolean is_equal(const isl::union_map &umap2) const;
2875
  inline isl::boolean is_identity() const;
2876
  inline isl::boolean is_injective() const;
2877
  inline isl::boolean is_single_valued() const;
2878
  inline isl::boolean is_strict_subset(const isl::union_map &umap2) const;
2879
  inline isl::boolean is_subset(const isl::union_map &umap2) const;
2880
  inline isl::union_map lex_ge_union_map(isl::union_map umap2) const;
2881
  inline isl::union_map lex_gt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
2882
  inline isl::union_map lex_gt_union_map(isl::union_map umap2) const;
2883
  inline isl::union_map lex_le_union_map(isl::union_map umap2) const;
2884
  inline isl::union_map lex_lt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
2885
  inline isl::union_map lex_lt_union_map(isl::union_map umap2) const;
2886
  inline isl::union_map lexmax() const;
2887
  inline isl::union_map lexmin() const;
2888
  inline int n_map() const;
2889
  inline isl::set params() const;
2890
  inline isl::boolean plain_is_empty() const;
2891
  inline isl::boolean plain_is_injective() const;
2892
  inline isl::union_map polyhedral_hull() const;
2893
  inline isl::union_map preimage_domain_multi_aff(isl::multi_aff ma) const;
2894
  inline isl::union_map preimage_domain_multi_pw_aff(isl::multi_pw_aff mpa) const;
2895
  inline isl::union_map preimage_domain_pw_multi_aff(isl::pw_multi_aff pma) const;
2896
  inline isl::union_map preimage_domain_union_pw_multi_aff(isl::union_pw_multi_aff upma) const;
2897
  inline isl::union_map preimage_range_multi_aff(isl::multi_aff ma) const;
2898
  inline isl::union_map preimage_range_pw_multi_aff(isl::pw_multi_aff pma) const;
2899
  inline isl::union_map preimage_range_union_pw_multi_aff(isl::union_pw_multi_aff upma) const;
2900
  inline isl::union_map product(isl::union_map umap2) const;
2901
  inline isl::union_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
2902
  inline isl::union_map project_out_all_params() const;
2903
  inline isl::union_set range() const;
2904
  inline isl::union_map range_curry() const;
2905
  inline isl::union_map range_factor_domain() const;
2906
  inline isl::union_map range_factor_range() const;
2907
  inline isl::union_map range_map() const;
2908
  inline isl::union_map range_product(isl::union_map umap2) const;
2909
  inline isl::union_map remove_divs() const;
2910
  inline isl::union_map remove_redundancies() const;
2911
  inline isl::union_map reset_user() const;
2912
  inline isl::union_map reverse() const;
2913
  inline isl::basic_map sample() const;
2914
  inline isl::union_map simple_hull() const;
2915
  inline isl::union_map subtract(isl::union_map umap2) const;
2916
  inline isl::union_map subtract_domain(isl::union_set dom) const;
2917
  inline isl::union_map subtract_range(isl::union_set dom) const;
2918
  inline isl::union_map uncurry() const;
2919
  inline isl::union_map unite(isl::union_map umap2) const;
2920
  inline isl::union_map universe() const;
2921
  inline isl::union_set wrap() const;
2922
  inline isl::union_map zip() const;
2923
};
2924
2925
// declarations for isl::union_map_list
2926
inline isl::union_map_list manage(__isl_take isl_union_map_list *ptr);
2927
inline isl::union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
2928
2929
class union_map_list {
2930
  friend inline isl::union_map_list manage(__isl_take isl_union_map_list *ptr);
2931
  friend inline isl::union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
2932
2933
  isl_union_map_list *ptr = nullptr;
2934
2935
  inline explicit union_map_list(__isl_take isl_union_map_list *ptr);
2936
2937
public:
2938
  inline /* implicit */ union_map_list();
2939
  inline /* implicit */ union_map_list(const isl::union_map_list &obj);
2940
  inline /* implicit */ union_map_list(std::nullptr_t);
2941
  inline isl::union_map_list &operator=(isl::union_map_list obj);
2942
  inline ~union_map_list();
2943
  inline __isl_give isl_union_map_list *copy() const &;
2944
  inline __isl_give isl_union_map_list *copy() && = delete;
2945
  inline __isl_keep isl_union_map_list *get() const;
2946
  inline __isl_give isl_union_map_list *release();
2947
  inline bool is_null() const;
2948
  inline explicit operator bool() const;
2949
  inline isl::ctx get_ctx() const;
2950
  inline void dump() const;
2951
2952
  inline isl::union_map_list add(isl::union_map el) const;
2953
  static inline isl::union_map_list alloc(isl::ctx ctx, int n);
2954
  inline isl::union_map_list concat(isl::union_map_list list2) const;
2955
  inline isl::union_map_list drop(unsigned int first, unsigned int n) const;
2956
  inline isl::stat foreach(const std::function<isl::stat(isl::union_map)> &fn) const;
2957
  static inline isl::union_map_list from_union_map(isl::union_map el);
2958
  inline isl::union_map get_union_map(int index) const;
2959
  inline isl::union_map_list insert(unsigned int pos, isl::union_map el) const;
2960
  inline int n_union_map() const;
2961
  inline isl::union_map_list set_union_map(int index, isl::union_map el) const;
2962
};
2963
2964
// declarations for isl::union_pw_aff
2965
inline isl::union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
2966
inline isl::union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
2967
2968
class union_pw_aff {
2969
  friend inline isl::union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
2970
  friend inline isl::union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
2971
2972
  isl_union_pw_aff *ptr = nullptr;
2973
2974
  inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
2975
2976
public:
2977
  inline /* implicit */ union_pw_aff();
2978
  inline /* implicit */ union_pw_aff(const isl::union_pw_aff &obj);
2979
  inline /* implicit */ union_pw_aff(std::nullptr_t);
2980
  inline /* implicit */ union_pw_aff(isl::pw_aff pa);
2981
  inline explicit union_pw_aff(isl::union_set domain, isl::val v);
2982
  inline explicit union_pw_aff(isl::ctx ctx, const std::string &str);
2983
  inline isl::union_pw_aff &operator=(isl::union_pw_aff obj);
2984
  inline ~union_pw_aff();
2985
  inline __isl_give isl_union_pw_aff *copy() const &;
2986
  inline __isl_give isl_union_pw_aff *copy() && = delete;
2987
  inline __isl_keep isl_union_pw_aff *get() const;
2988
  inline __isl_give isl_union_pw_aff *release();
2989
  inline bool is_null() const;
2990
  inline explicit operator bool() const;
2991
  inline isl::ctx get_ctx() const;
2992
  inline std::string to_str() const;
2993
  inline void dump() const;
2994
2995
  inline isl::union_pw_aff add(isl::union_pw_aff upa2) const;
2996
  inline isl::union_pw_aff add_pw_aff(isl::pw_aff pa) const;
2997
  static inline isl::union_pw_aff aff_on_domain(isl::union_set domain, isl::aff aff);
2998
  inline isl::union_pw_aff align_params(isl::space model) const;
2999
  inline isl::union_pw_aff coalesce() const;
3000
  inline unsigned int dim(isl::dim type) const;
3001
  inline isl::union_set domain() const;
3002
  inline isl::union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3003
  static inline isl::union_pw_aff empty(isl::space space);
3004
  inline isl::pw_aff extract_pw_aff(isl::space space) const;
3005
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3006
  inline isl::union_pw_aff floor() const;
3007
  inline isl::stat foreach_pw_aff(const std::function<isl::stat(isl::pw_aff)> &fn) const;
3008
  inline isl::space get_space() const;
3009
  inline isl::union_pw_aff gist(isl::union_set context) const;
3010
  inline isl::union_pw_aff gist_params(isl::set context) const;
3011
  inline isl::union_pw_aff intersect_domain(isl::union_set uset) const;
3012
  inline isl::union_pw_aff intersect_params(isl::set set) const;
3013
  inline isl::boolean involves_nan() const;
3014
  inline isl::union_pw_aff mod_val(isl::val f) const;
3015
  inline int n_pw_aff() const;
3016
  inline isl::union_pw_aff neg() const;
3017
  static inline isl::union_pw_aff param_on_domain_id(isl::union_set domain, isl::id id);
3018
  inline isl::boolean plain_is_equal(const isl::union_pw_aff &upa2) const;
3019
  inline isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
3020
  static inline isl::union_pw_aff pw_aff_on_domain(isl::union_set domain, isl::pw_aff pa);
3021
  inline isl::union_pw_aff reset_user() const;
3022
  inline isl::union_pw_aff scale_down_val(isl::val v) const;
3023
  inline isl::union_pw_aff scale_val(isl::val v) const;
3024
  inline isl::union_pw_aff sub(isl::union_pw_aff upa2) const;
3025
  inline isl::union_pw_aff subtract_domain(isl::union_set uset) const;
3026
  inline isl::union_pw_aff union_add(isl::union_pw_aff upa2) const;
3027
  inline isl::union_set zero_union_set() const;
3028
};
3029
3030
// declarations for isl::union_pw_aff_list
3031
inline isl::union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3032
inline isl::union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3033
3034
class union_pw_aff_list {
3035
  friend inline isl::union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3036
  friend inline isl::union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3037
3038
  isl_union_pw_aff_list *ptr = nullptr;
3039
3040
  inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3041
3042
public:
3043
  inline /* implicit */ union_pw_aff_list();
3044
  inline /* implicit */ union_pw_aff_list(const isl::union_pw_aff_list &obj);
3045
  inline /* implicit */ union_pw_aff_list(std::nullptr_t);
3046
  inline isl::union_pw_aff_list &operator=(isl::union_pw_aff_list obj);
3047
  inline ~union_pw_aff_list();
3048
  inline __isl_give isl_union_pw_aff_list *copy() const &;
3049
  inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3050
  inline __isl_keep isl_union_pw_aff_list *get() const;
3051
  inline __isl_give isl_union_pw_aff_list *release();
3052
  inline bool is_null() const;
3053
  inline explicit operator bool() const;
3054
  inline isl::ctx get_ctx() const;
3055
  inline void dump() const;
3056
3057
  inline isl::union_pw_aff_list add(isl::union_pw_aff el) const;
3058
  static inline isl::union_pw_aff_list alloc(isl::ctx ctx, int n);
3059
  inline isl::union_pw_aff_list concat(isl::union_pw_aff_list list2) const;
3060
  inline isl::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
3061
  inline isl::stat foreach(const std::function<isl::stat(isl::union_pw_aff)> &fn) const;
3062
  static inline isl::union_pw_aff_list from_union_pw_aff(isl::union_pw_aff el);
3063
  inline isl::union_pw_aff get_union_pw_aff(int index) const;
3064
  inline isl::union_pw_aff_list insert(unsigned int pos, isl::union_pw_aff el) const;
3065
  inline int n_union_pw_aff() const;
3066
  inline isl::union_pw_aff_list set_union_pw_aff(int index, isl::union_pw_aff el) const;
3067
};
3068
3069
// declarations for isl::union_pw_multi_aff
3070
inline isl::union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3071
inline isl::union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3072
3073
class union_pw_multi_aff {
3074
  friend inline isl::union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3075
  friend inline isl::union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3076
3077
  isl_union_pw_multi_aff *ptr = nullptr;
3078
3079
  inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3080
3081
public:
3082
  inline /* implicit */ union_pw_multi_aff();
3083
  inline /* implicit */ union_pw_multi_aff(const isl::union_pw_multi_aff &obj);
3084
  inline /* implicit */ union_pw_multi_aff(std::nullptr_t);
3085
  inline /* implicit */ union_pw_multi_aff(isl::pw_multi_aff pma);
3086
  inline explicit union_pw_multi_aff(isl::union_set uset);
3087
  inline explicit union_pw_multi_aff(isl::union_map umap);
3088
  inline explicit union_pw_multi_aff(isl::ctx ctx, const std::string &str);
3089
  inline /* implicit */ union_pw_multi_aff(isl::union_pw_aff upa);
3090
  inline isl::union_pw_multi_aff &operator=(isl::union_pw_multi_aff obj);
3091
  inline ~union_pw_multi_aff();
3092
  inline __isl_give isl_union_pw_multi_aff *copy() const &;
3093
  inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
3094
  inline __isl_keep isl_union_pw_multi_aff *get() const;
3095
  inline __isl_give isl_union_pw_multi_aff *release();
3096
  inline bool is_null() const;
3097
  inline explicit operator bool() const;
3098
  inline isl::ctx get_ctx() const;
3099
  inline std::string to_str() const;
3100
  inline void dump() const;
3101
3102
  inline isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const;
3103
  inline isl::union_pw_multi_aff add_pw_multi_aff(isl::pw_multi_aff pma) const;
3104
  inline isl::union_pw_multi_aff align_params(isl::space model) const;
3105
  inline isl::union_pw_multi_aff coalesce() const;
3106
  inline unsigned int dim(isl::dim type) const;
3107
  inline isl::union_set domain() const;
3108
  inline isl::union_pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3109
  static inline isl::union_pw_multi_aff empty(isl::space space);
3110
  inline isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const;
3111
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3112
  inline isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const;
3113
  inline isl::stat foreach_pw_multi_aff(const std::function<isl::stat(isl::pw_multi_aff)> &fn) const;
3114
  static inline isl::union_pw_multi_aff from_aff(isl::aff aff);
3115
  static inline isl::union_pw_multi_aff from_multi_union_pw_aff(isl::multi_union_pw_aff mupa);
3116
  static inline isl::union_pw_multi_aff from_union_set(isl::union_set uset);
3117
  inline isl::space get_space() const;
3118
  inline isl::union_pw_aff get_union_pw_aff(int pos) const;
3119
  inline isl::union_pw_multi_aff gist(isl::union_set context) const;
3120
  inline isl::union_pw_multi_aff gist_params(isl::set context) const;
3121
  inline isl::union_pw_multi_aff intersect_domain(isl::union_set uset) const;
3122
  inline isl::union_pw_multi_aff intersect_params(isl::set set) const;
3123
  inline isl::boolean involves_nan() const;
3124
  static inline isl::union_pw_multi_aff multi_val_on_domain(isl::union_set domain, isl::multi_val mv);
3125
  inline int n_pw_multi_aff() const;
3126
  inline isl::union_pw_multi_aff neg() const;
3127
  inline isl::boolean plain_is_equal(const isl::union_pw_multi_aff &upma2) const;
3128
  inline isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const;
3129
  inline isl::union_pw_multi_aff reset_user() const;
3130
  inline isl::union_pw_multi_aff scale_down_val(isl::val val) const;
3131
  inline isl::union_pw_multi_aff scale_multi_val(isl::multi_val mv) const;
3132
  inline isl::union_pw_multi_aff scale_val(isl::val val) const;
3133
  inline isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const;
3134
  inline isl::union_pw_multi_aff subtract_domain(isl::union_set uset) const;
3135
  inline isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const;
3136
};
3137
3138
// declarations for isl::union_pw_multi_aff_list
3139
inline isl::union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3140
inline isl::union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3141
3142
class union_pw_multi_aff_list {
3143
  friend inline isl::union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3144
  friend inline isl::union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3145
3146
  isl_union_pw_multi_aff_list *ptr = nullptr;
3147
3148
  inline explicit union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr);
3149
3150
public:
3151
  inline /* implicit */ union_pw_multi_aff_list();
3152
  inline /* implicit */ union_pw_multi_aff_list(const isl::union_pw_multi_aff_list &obj);
3153
  inline /* implicit */ union_pw_multi_aff_list(std::nullptr_t);
3154
  inline isl::union_pw_multi_aff_list &operator=(isl::union_pw_multi_aff_list obj);
3155
  inline ~union_pw_multi_aff_list();
3156
  inline __isl_give isl_union_pw_multi_aff_list *copy() const &;
3157
  inline __isl_give isl_union_pw_multi_aff_list *copy() && = delete;
3158
  inline __isl_keep isl_union_pw_multi_aff_list *get() const;
3159
  inline __isl_give isl_union_pw_multi_aff_list *release();
3160
  inline bool is_null() const;
3161
  inline explicit operator bool() const;
3162
  inline isl::ctx get_ctx() const;
3163
  inline void dump() const;
3164
3165
  inline isl::union_pw_multi_aff_list add(isl::union_pw_multi_aff el) const;
3166
  static inline isl::union_pw_multi_aff_list alloc(isl::ctx ctx, int n);
3167
  inline isl::union_pw_multi_aff_list concat(isl::union_pw_multi_aff_list list2) const;
3168
  inline isl::union_pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3169
  inline isl::stat foreach(const std::function<isl::stat(isl::union_pw_multi_aff)> &fn) const;
3170
  static inline isl::union_pw_multi_aff_list from_union_pw_multi_aff(isl::union_pw_multi_aff el);
3171
  inline isl::union_pw_multi_aff get_union_pw_multi_aff(int index) const;
3172
  inline isl::union_pw_multi_aff_list insert(unsigned int pos, isl::union_pw_multi_aff el) const;
3173
  inline int n_union_pw_multi_aff() const;
3174
  inline isl::union_pw_multi_aff_list set_union_pw_multi_aff(int index, isl::union_pw_multi_aff el) const;
3175
};
3176
3177
// declarations for isl::union_pw_qpolynomial
3178
inline isl::union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3179
inline isl::union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3180
3181
class union_pw_qpolynomial {
3182
  friend inline isl::union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3183
  friend inline isl::union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3184
3185
  isl_union_pw_qpolynomial *ptr = nullptr;
3186
3187
  inline explicit union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr);
3188
3189
public:
3190
  inline /* implicit */ union_pw_qpolynomial();
3191
  inline /* implicit */ union_pw_qpolynomial(const isl::union_pw_qpolynomial &obj);
3192
  inline /* implicit */ union_pw_qpolynomial(std::nullptr_t);
3193
  inline explicit union_pw_qpolynomial(isl::ctx ctx, const std::string &str);
3194
  inline isl::union_pw_qpolynomial &operator=(isl::union_pw_qpolynomial obj);
3195
  inline ~union_pw_qpolynomial();
3196
  inline __isl_give isl_union_pw_qpolynomial *copy() const &;
3197
  inline __isl_give isl_union_pw_qpolynomial *copy() && = delete;
3198
  inline __isl_keep isl_union_pw_qpolynomial *get() const;
3199
  inline __isl_give isl_union_pw_qpolynomial *release();
3200
  inline bool is_null() const;
3201
  inline explicit operator bool() const;
3202
  inline isl::ctx get_ctx() const;
3203
  inline std::string to_str() const;
3204
3205
  inline isl::union_pw_qpolynomial add(isl::union_pw_qpolynomial upwqp2) const;
3206
  inline isl::union_pw_qpolynomial add_pw_qpolynomial(isl::pw_qpolynomial pwqp) const;
3207
  inline isl::union_pw_qpolynomial align_params(isl::space model) const;
3208
  inline isl::union_pw_qpolynomial coalesce() const;
3209
  inline unsigned int dim(isl::dim type) const;
3210
  inline isl::union_set domain() const;
3211
  inline isl::union_pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3212
  inline isl::val eval(isl::point pnt) const;
3213
  inline isl::pw_qpolynomial extract_pw_qpolynomial(isl::space dim) const;
3214
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3215
  inline isl::stat foreach_pw_qpolynomial(const std::function<isl::stat(isl::pw_qpolynomial)> &fn) const;
3216
  static inline isl::union_pw_qpolynomial from_pw_qpolynomial(isl::pw_qpolynomial pwqp);
3217
  inline isl::space get_space() const;
3218
  inline isl::union_pw_qpolynomial gist(isl::union_set context) const;
3219
  inline isl::union_pw_qpolynomial gist_params(isl::set context) const;
3220
  inline isl::union_pw_qpolynomial intersect_domain(isl::union_set uset) const;
3221
  inline isl::union_pw_qpolynomial intersect_params(isl::set set) const;
3222
  inline isl::boolean involves_nan() const;
3223
  inline isl::union_pw_qpolynomial mul(isl::union_pw_qpolynomial upwqp2) const;
3224
  inline int n_pw_qpolynomial() const;
3225
  inline isl::union_pw_qpolynomial neg() const;
3226
  inline isl::boolean plain_is_equal(const isl::union_pw_qpolynomial &upwqp2) const;
3227
  inline isl::union_pw_qpolynomial reset_user() const;
3228
  inline isl::union_pw_qpolynomial scale_down_val(isl::val v) const;
3229
  inline isl::union_pw_qpolynomial scale_val(isl::val v) const;
3230
  inline isl::union_pw_qpolynomial sub(isl::union_pw_qpolynomial upwqp2) const;
3231
  inline isl::union_pw_qpolynomial subtract_domain(isl::union_set uset) const;
3232
  inline isl::union_pw_qpolynomial to_polynomial(int sign) const;
3233
  static inline isl::union_pw_qpolynomial zero(isl::space dim);
3234
};
3235
3236
// declarations for isl::union_set
3237
inline isl::union_set manage(__isl_take isl_union_set *ptr);
3238
inline isl::union_set manage_copy(__isl_keep isl_union_set *ptr);
3239
3240
class union_set {
3241
  friend inline isl::union_set manage(__isl_take isl_union_set *ptr);
3242
  friend inline isl::union_set manage_copy(__isl_keep isl_union_set *ptr);
3243
3244
  isl_union_set *ptr = nullptr;
3245
3246
  inline explicit union_set(__isl_take isl_union_set *ptr);
3247
3248
public:
3249
  inline /* implicit */ union_set();
3250
  inline /* implicit */ union_set(const isl::union_set &obj);
3251
  inline /* implicit */ union_set(std::nullptr_t);
3252
  inline /* implicit */ union_set(isl::basic_set bset);
3253
  inline /* implicit */ union_set(isl::set set);
3254
  inline /* implicit */ union_set(isl::point pnt);
3255
  inline explicit union_set(isl::ctx ctx, const std::string &str);
3256
  inline isl::union_set &operator=(isl::union_set obj);
3257
  inline ~union_set();
3258
  inline __isl_give isl_union_set *copy() const &;
3259
  inline __isl_give isl_union_set *copy() && = delete;
3260
  inline __isl_keep isl_union_set *get() const;
3261
  inline __isl_give isl_union_set *release();
3262
  inline bool is_null() const;
3263
  inline explicit operator bool() const;
3264
  inline isl::ctx get_ctx() const;
3265
  inline std::string to_str() const;
3266
  inline void dump() const;
3267
3268
  inline isl::union_set add_set(isl::set set) const;
3269
  inline isl::union_set affine_hull() const;
3270
  inline isl::union_set align_params(isl::space model) const;
3271
  inline isl::union_set apply(isl::union_map umap) const;
3272
  inline isl::union_set coalesce() const;
3273
  inline isl::union_set coefficients() const;
3274
  inline isl::schedule compute_schedule(isl::union_map validity, isl::union_map proximity) const;
3275
  inline isl::boolean contains(const isl::space &space) const;
3276
  inline isl::union_set detect_equalities() const;
3277
  inline unsigned int dim(isl::dim type) const;
3278
  static inline isl::union_set empty(isl::space space);
3279
  inline isl::set extract_set(isl::space dim) const;
3280
  inline isl::stat foreach_point(const std::function<isl::stat(isl::point)> &fn) const;
3281
  inline isl::stat foreach_set(const std::function<isl::stat(isl::set)> &fn) const;
3282
  inline isl::basic_set_list get_basic_set_list() const;
3283
  inline uint32_t get_hash() const;
3284
  inline isl::set_list get_set_list() const;
3285
  inline isl::space get_space() const;
3286
  inline isl::union_set gist(isl::union_set context) const;
3287
  inline isl::union_set gist_params(isl::set set) const;
3288
  inline isl::union_map identity() const;
3289
  inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
3290
  inline isl::union_set intersect(isl::union_set uset2) const;
3291
  inline isl::union_set intersect_params(isl::set set) const;
3292
  inline isl::boolean is_disjoint(const isl::union_set &uset2) const;
3293
  inline isl::boolean is_empty() const;
3294
  inline isl::boolean is_equal(const isl::union_set &uset2) const;
3295
  inline isl::boolean is_params() const;
3296
  inline isl::boolean is_strict_subset(const isl::union_set &uset2) const;
3297
  inline isl::boolean is_subset(const isl::union_set &uset2) const;
3298
  inline isl::union_map lex_ge_union_set(isl::union_set uset2) const;
3299
  inline isl::union_map lex_gt_union_set(isl::union_set uset2) const;
3300
  inline isl::union_map lex_le_union_set(isl::union_set uset2) const;
3301
  inline isl::union_map lex_lt_union_set(isl::union_set uset2) const;
3302
  inline isl::union_set lexmax() const;
3303
  inline isl::union_set lexmin() const;
3304
  inline isl::multi_val min_multi_union_pw_aff(const isl::multi_union_pw_aff &obj) const;
3305
  inline int n_set() const;
3306
  inline isl::set params() const;
3307
  inline isl::union_set polyhedral_hull() const;
3308
  inline isl::union_set preimage(isl::multi_aff ma) const;
3309
  inline isl::union_set preimage(isl::pw_multi_aff pma) const;
3310
  inline isl::union_set preimage(isl::union_pw_multi_aff upma) const;
3311
  inline isl::union_set product(isl::union_set uset2) const;
3312
  inline isl::union_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
3313
  inline isl::union_set remove_divs() const;
3314
  inline isl::union_set remove_redundancies() const;
3315
  inline isl::union_set reset_user() const;
3316
  inline isl::basic_set sample() const;
3317
  inline isl::point sample_point() const;
3318
  inline isl::union_set simple_hull() const;
3319
  inline isl::union_set solutions() const;
3320
  inline isl::union_set subtract(isl::union_set uset2) const;
3321
  inline isl::union_set unite(isl::union_set uset2) const;
3322
  inline isl::union_set universe() const;
3323
  inline isl::union_map unwrap() const;
3324
  inline isl::union_map wrapped_domain_map() const;
3325
};
3326
3327
// declarations for isl::union_set_list
3328
inline isl::union_set_list manage(__isl_take isl_union_set_list *ptr);
3329
inline isl::union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3330
3331
class union_set_list {
3332
  friend inline isl::union_set_list manage(__isl_take isl_union_set_list *ptr);
3333
  friend inline isl::union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3334
3335
  isl_union_set_list *ptr = nullptr;
3336
3337
  inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
3338
3339
public:
3340
  inline /* implicit */ union_set_list();
3341
  inline /* implicit */ union_set_list(const isl::union_set_list &obj);
3342
  inline /* implicit */ union_set_list(std::nullptr_t);
3343
  inline isl::union_set_list &operator=(isl::union_set_list obj);
3344
  inline ~union_set_list();
3345
  inline __isl_give isl_union_set_list *copy() const &;
3346
  inline __isl_give isl_union_set_list *copy() && = delete;
3347
  inline __isl_keep isl_union_set_list *get() const;
3348
  inline __isl_give isl_union_set_list *release();
3349
  inline bool is_null() const;
3350
  inline explicit operator bool() const;
3351
  inline isl::ctx get_ctx() const;
3352
  inline void dump() const;
3353
3354
  inline isl::union_set_list add(isl::union_set el) const;
3355
  static inline isl::union_set_list alloc(isl::ctx ctx, int n);
3356
  inline isl::union_set_list concat(isl::union_set_list list2) const;
3357
  inline isl::union_set_list drop(unsigned int first, unsigned int n) const;
3358
  inline isl::stat foreach(const std::function<isl::stat(isl::union_set)> &fn) const;
3359
  static inline isl::union_set_list from_union_set(isl::union_set el);
3360
  inline isl::union_set get_union_set(int index) const;
3361
  inline isl::union_set_list insert(unsigned int pos, isl::union_set el) const;
3362
  inline int n_union_set() const;
3363
  inline isl::union_set_list set_union_set(int index, isl::union_set el) const;
3364
  inline isl::union_set unite() const;
3365
};
3366
3367
// declarations for isl::val
3368
inline isl::val manage(__isl_take isl_val *ptr);
3369
inline isl::val manage_copy(__isl_keep isl_val *ptr);
3370
3371
class val {
3372
  friend inline isl::val manage(__isl_take isl_val *ptr);
3373
  friend inline isl::val manage_copy(__isl_keep isl_val *ptr);
3374
3375
  isl_val *ptr = nullptr;
3376
3377
  inline explicit val(__isl_take isl_val *ptr);
3378
3379
public:
3380
  inline /* implicit */ val();
3381
  inline /* implicit */ val(const isl::val &obj);
3382
  inline /* implicit */ val(std::nullptr_t);
3383
  inline explicit val(isl::ctx ctx, const std::string &str);
3384
  inline explicit val(isl::ctx ctx, long i);
3385
  inline isl::val &operator=(isl::val obj);
3386
  inline ~val();
3387
  inline __isl_give isl_val *copy() const &;
3388
  inline __isl_give isl_val *copy() && = delete;
3389
  inline __isl_keep isl_val *get() const;
3390
  inline __isl_give isl_val *release();
3391
  inline bool is_null() const;
3392
  inline explicit operator bool() const;
3393
  inline isl::ctx get_ctx() const;
3394
  inline std::string to_str() const;
3395
  inline void dump() const;
3396
3397
  inline isl::val two_exp() const;
3398
  inline isl::val abs() const;
3399
  inline isl::boolean abs_eq(const isl::val &v2) const;
3400
  inline isl::val add(isl::val v2) const;
3401
  inline isl::val add_ui(unsigned long v2) const;
3402
  inline isl::val ceil() const;
3403
  inline int cmp_si(long i) const;
3404
  inline isl::val div(isl::val v2) const;
3405
  inline isl::val div_ui(unsigned long v2) const;
3406
  inline isl::boolean eq(const isl::val &v2) const;
3407
  inline isl::val floor() const;
3408
  inline isl::val gcd(isl::val v2) const;
3409
  inline isl::boolean ge(const isl::val &v2) const;
3410
  inline uint32_t get_hash() const;
3411
  inline long get_num_si() const;
3412
  inline isl::boolean gt(const isl::val &v2) const;
3413
  inline isl::boolean gt_si(long i) const;
3414
  static inline isl::val infty(isl::ctx ctx);
3415
  static inline isl::val int_from_ui(isl::ctx ctx, unsigned long u);
3416
  inline isl::val inv() const;
3417
  inline isl::boolean is_divisible_by(const isl::val &v2) const;
3418
  inline isl::boolean is_infty() const;
3419
  inline isl::boolean is_int() const;
3420
  inline isl::boolean is_nan() const;
3421
  inline isl::boolean is_neg() const;
3422
  inline isl::boolean is_neginfty() const;
3423
  inline isl::boolean is_negone() const;
3424
  inline isl::boolean is_nonneg() const;
3425
  inline isl::boolean is_nonpos() const;
3426
  inline isl::boolean is_one() const;
3427
  inline isl::boolean is_pos() const;
3428
  inline isl::boolean is_rat() const;
3429
  inline isl::boolean is_zero() const;
3430
  inline isl::boolean le(const isl::val &v2) const;
3431
  inline isl::boolean lt(const isl::val &v2) const;
3432
  inline isl::val max(isl::val v2) const;
3433
  inline isl::val min(isl::val v2) const;
3434
  inline isl::val mod(isl::val v2) const;
3435
  inline isl::val mul(isl::val v2) const;
3436
  inline isl::val mul_ui(unsigned long v2) const;
3437
  inline size_t n_abs_num_chunks(size_t size) const;
3438
  static inline isl::val nan(isl::ctx ctx);
3439
  inline isl::boolean ne(const isl::val &v2) const;
3440
  inline isl::val neg() const;
3441
  static inline isl::val neginfty(isl::ctx ctx);
3442
  static inline isl::val negone(isl::ctx ctx);
3443
  static inline isl::val one(isl::ctx ctx);
3444
  inline isl::val set_si(long i) const;
3445
  inline int sgn() const;
3446
  inline isl::val sub(isl::val v2) const;
3447
  inline isl::val sub_ui(unsigned long v2) const;
3448
  inline isl::val trunc() const;
3449
  static inline isl::val zero(isl::ctx ctx);
3450
};
3451
3452
// declarations for isl::val_list
3453
inline isl::val_list manage(__isl_take isl_val_list *ptr);
3454
inline isl::val_list manage_copy(__isl_keep isl_val_list *ptr);
3455
3456
class val_list {
3457
  friend inline isl::val_list manage(__isl_take isl_val_list *ptr);
3458
  friend inline isl::val_list manage_copy(__isl_keep isl_val_list *ptr);
3459
3460
  isl_val_list *ptr = nullptr;
3461
3462
  inline explicit val_list(__isl_take isl_val_list *ptr);
3463
3464
public:
3465
  inline /* implicit */ val_list();
3466
  inline /* implicit */ val_list(const isl::val_list &obj);
3467
  inline /* implicit */ val_list(std::nullptr_t);
3468
  inline isl::val_list &operator=(isl::val_list obj);
3469
  inline ~val_list();
3470
  inline __isl_give isl_val_list *copy() const &;
3471
  inline __isl_give isl_val_list *copy() && = delete;
3472
  inline __isl_keep isl_val_list *get() const;
3473
  inline __isl_give isl_val_list *release();
3474
  inline bool is_null() const;
3475
  inline explicit operator bool() const;
3476
  inline isl::ctx get_ctx() const;
3477
  inline void dump() const;
3478
3479
  inline isl::val_list add(isl::val el) const;
3480
  static inline isl::val_list alloc(isl::ctx ctx, int n);
3481
  inline isl::val_list concat(isl::val_list list2) const;
3482
  inline isl::val_list drop(unsigned int first, unsigned int n) const;
3483
  inline isl::stat foreach(const std::function<isl::stat(isl::val)> &fn) const;
3484
  static inline isl::val_list from_val(isl::val el);
3485
  inline isl::val get_val(int index) const;
3486
  inline isl::val_list insert(unsigned int pos, isl::val el) const;
3487
  inline int n_val() const;
3488
  inline isl::val_list set_val(int index, isl::val el) const;
3489
};
3490
3491
// declarations for isl::vec
3492
inline isl::vec manage(__isl_take isl_vec *ptr);
3493
inline isl::vec manage_copy(__isl_keep isl_vec *ptr);
3494
3495
class vec {
3496
  friend inline isl::vec manage(__isl_take isl_vec *ptr);
3497
  friend inline isl::vec manage_copy(__isl_keep isl_vec *ptr);
3498
3499
  isl_vec *ptr = nullptr;
3500
3501
  inline explicit vec(__isl_take isl_vec *ptr);
3502
3503
public:
3504
  inline /* implicit */ vec();
3505
  inline /* implicit */ vec(const isl::vec &obj);
3506
  inline /* implicit */ vec(std::nullptr_t);
3507
  inline isl::vec &operator=(isl::vec obj);
3508
  inline ~vec();
3509
  inline __isl_give isl_vec *copy() const &;
3510
  inline __isl_give isl_vec *copy() && = delete;
3511
  inline __isl_keep isl_vec *get() const;
3512
  inline __isl_give isl_vec *release();
3513
  inline bool is_null() const;
3514
  inline explicit operator bool() const;
3515
  inline isl::ctx get_ctx() const;
3516
  inline void dump() const;
3517
3518
  inline isl::vec add(isl::vec vec2) const;
3519
  inline isl::vec add_els(unsigned int n) const;
3520
  static inline isl::vec alloc(isl::ctx ctx, unsigned int size);
3521
  inline isl::vec ceil() const;
3522
  inline isl::vec clr() const;
3523
  inline int cmp_element(const isl::vec &vec2, int pos) const;
3524
  inline isl::vec concat(isl::vec vec2) const;
3525
  inline isl::vec drop_els(unsigned int pos, unsigned int n) const;
3526
  inline isl::vec extend(unsigned int size) const;
3527
  inline isl::val get_element_val(int pos) const;
3528
  inline isl::vec insert_els(unsigned int pos, unsigned int n) const;
3529
  inline isl::vec insert_zero_els(unsigned int pos, unsigned int n) const;
3530
  inline isl::boolean is_equal(const isl::vec &vec2) const;
3531
  inline isl::vec mat_product(isl::mat mat) const;
3532
  inline isl::vec move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
3533
  inline isl::vec neg() const;
3534
  inline isl::vec set_element_si(int pos, int v) const;
3535
  inline isl::vec set_element_val(int pos, isl::val v) const;
3536
  inline isl::vec set_si(int v) const;
3537
  inline isl::vec set_val(isl::val v) const;
3538
  inline int size() const;
3539
  inline isl::vec sort() const;
3540
  static inline isl::vec zero(isl::ctx ctx, unsigned int size);
3541
  inline isl::vec zero_extend(unsigned int size) const;
3542
};
3543
3544
// implementations for isl::aff
3545
2.73k
isl::aff manage(__isl_take isl_aff *ptr) {
3546
2.73k
  return aff(ptr);
3547
2.73k
}
3548
0
isl::aff manage_copy(__isl_keep isl_aff *ptr) {
3549
0
  ptr = isl_aff_copy(ptr);
3550
0
  return aff(ptr);
3551
0
}
3552
3553
aff::aff()
3554
545
    : ptr(nullptr) {}
3555
3556
aff::aff(const isl::aff &obj)
3557
    : ptr(obj.copy())
3558
1.69k
{
3559
1.69k
}
3560
aff::aff(std::nullptr_t)
3561
    : ptr(nullptr) {}
3562
3563
3564
aff::aff(__isl_take isl_aff *ptr)
3565
2.73k
    : ptr(ptr) {}
3566
3567
aff::aff(isl::local_space ls)
3568
548
{
3569
548
  auto res = isl_aff_zero_on_domain(ls.release());
3570
548
  ptr = res;
3571
548
}
3572
aff::aff(isl::local_space ls, isl::val val)
3573
25
{
3574
25
  auto res = isl_aff_val_on_domain(ls.release(), val.release());
3575
25
  ptr = res;
3576
25
}
3577
aff::aff(isl::ctx ctx, const std::string &str)
3578
{
3579
  auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
3580
  ptr = res;
3581
}
3582
3583
2.09k
aff &aff::operator=(isl::aff obj) {
3584
2.09k
  std::swap(this->ptr, obj.ptr);
3585
2.09k
  return *this;
3586
2.09k
}
3587
3588
5.54k
aff::~aff() {
3589
5.54k
  if (ptr)
3590
3.42k
    isl_aff_free(ptr);
3591
5.54k
}
3592
3593
3.28k
__isl_give isl_aff *aff::copy() const & {
3594
3.28k
  return isl_aff_copy(ptr);
3595
3.28k
}
3596
3597
317
__isl_keep isl_aff *aff::get() const {
3598
317
  return ptr;
3599
317
}
3600
3601
1.57k
__isl_give isl_aff *aff::release() {
3602
1.57k
  isl_aff *tmp = ptr;
3603
1.57k
  ptr = nullptr;
3604
1.57k
  return tmp;
3605
1.57k
}
3606
3607
0
bool aff::is_null() const {
3608
0
  return ptr == nullptr;
3609
0
}
3610
0
aff::operator bool() const {
3611
0
  return !is_null();
3612
0
}
3613
3614
3615
0
isl::ctx aff::get_ctx() const {
3616
0
  return isl::ctx(isl_aff_get_ctx(ptr));
3617
0
}
3618
0
std::string aff::to_str() const {
3619
0
  char *Tmp = isl_aff_to_str(get());
3620
0
  if (!Tmp)
3621
0
    return "";
3622
0
  std::string S(Tmp);
3623
0
  free(Tmp);
3624
0
  return S;
3625
0
}
3626
3627
3628
0
void aff::dump() const {
3629
0
  isl_aff_dump(get());
3630
0
}
3631
3632
3633
isl::aff aff::add(isl::aff aff2) const
3634
17
{
3635
17
  auto res = isl_aff_add(copy(), aff2.release());
3636
17
  return manage(res);
3637
17
}
3638
3639
isl::aff aff::add_coefficient_si(isl::dim type, int pos, int v) const
3640
0
{
3641
0
  auto res = isl_aff_add_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
3642
0
  return manage(res);
3643
0
}
3644
3645
isl::aff aff::add_coefficient_val(isl::dim type, int pos, isl::val v) const
3646
0
{
3647
0
  auto res = isl_aff_add_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
3648
0
  return manage(res);
3649
0
}
3650
3651
isl::aff aff::add_constant_num_si(int v) const
3652
0
{
3653
0
  auto res = isl_aff_add_constant_num_si(copy(), v);
3654
0
  return manage(res);
3655
0
}
3656
3657
isl::aff aff::add_constant_si(int v) const
3658
544
{
3659
544
  auto res = isl_aff_add_constant_si(copy(), v);
3660
544
  return manage(res);
3661
544
}
3662
3663
isl::aff aff::add_constant_val(isl::val v) const
3664
0
{
3665
0
  auto res = isl_aff_add_constant_val(copy(), v.release());
3666
0
  return manage(res);
3667
0
}
3668
3669
isl::aff aff::add_dims(isl::dim type, unsigned int n) const
3670
0
{
3671
0
  auto res = isl_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
3672
0
  return manage(res);
3673
0
}
3674
3675
isl::aff aff::align_params(isl::space model) const
3676
0
{
3677
0
  auto res = isl_aff_align_params(copy(), model.release());
3678
0
  return manage(res);
3679
0
}
3680
3681
isl::aff aff::ceil() const
3682
0
{
3683
0
  auto res = isl_aff_ceil(copy());
3684
0
  return manage(res);
3685
0
}
3686
3687
int aff::coefficient_sgn(isl::dim type, int pos) const
3688
0
{
3689
0
  auto res = isl_aff_coefficient_sgn(get(), static_cast<enum isl_dim_type>(type), pos);
3690
0
  return res;
3691
0
}
3692
3693
int aff::dim(isl::dim type) const
3694
0
{
3695
0
  auto res = isl_aff_dim(get(), static_cast<enum isl_dim_type>(type));
3696
0
  return res;
3697
0
}
3698
3699
isl::aff aff::div(isl::aff aff2) const
3700
17
{
3701
17
  auto res = isl_aff_div(copy(), aff2.release());
3702
17
  return manage(res);
3703
17
}
3704
3705
isl::aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
3706
0
{
3707
0
  auto res = isl_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
3708
0
  return manage(res);
3709
0
}
3710
3711
isl::basic_set aff::eq_basic_set(isl::aff aff2) const
3712
0
{
3713
0
  auto res = isl_aff_eq_basic_set(copy(), aff2.release());
3714
0
  return manage(res);
3715
0
}
3716
3717
isl::set aff::eq_set(isl::aff aff2) const
3718
0
{
3719
0
  auto res = isl_aff_eq_set(copy(), aff2.release());
3720
0
  return manage(res);
3721
0
}
3722
3723
isl::val aff::eval(isl::point pnt) const
3724
0
{
3725
0
  auto res = isl_aff_eval(copy(), pnt.release());
3726
0
  return manage(res);
3727
0
}
3728
3729
int aff::find_dim_by_name(isl::dim type, const std::string &name) const
3730
0
{
3731
0
  auto res = isl_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
3732
0
  return res;
3733
0
}
3734
3735
isl::aff aff::floor() const
3736
17
{
3737
17
  auto res = isl_aff_floor(copy());
3738
17
  return manage(res);
3739
17
}
3740
3741
isl::aff aff::from_range() const
3742
0
{
3743
0
  auto res = isl_aff_from_range(copy());
3744
0
  return manage(res);
3745
0
}
3746
3747
isl::basic_set aff::ge_basic_set(isl::aff aff2) const
3748
0
{
3749
0
  auto res = isl_aff_ge_basic_set(copy(), aff2.release());
3750
0
  return manage(res);
3751
0
}
3752
3753
isl::set aff::ge_set(isl::aff aff2) const
3754
0
{
3755
0
  auto res = isl_aff_ge_set(copy(), aff2.release());
3756
0
  return manage(res);
3757
0
}
3758
3759
isl::val aff::get_coefficient_val(isl::dim type, int pos) const
3760
0
{
3761
0
  auto res = isl_aff_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
3762
0
  return manage(res);
3763
0
}
3764
3765
isl::val aff::get_constant_val() const
3766
158
{
3767
158
  auto res = isl_aff_get_constant_val(get());
3768
158
  return manage(res);
3769
158
}
3770
3771
isl::val aff::get_denominator_val() const
3772
0
{
3773
0
  auto res = isl_aff_get_denominator_val(get());
3774
0
  return manage(res);
3775
0
}
3776
3777
std::string aff::get_dim_name(isl::dim type, unsigned int pos) const
3778
0
{
3779
0
  auto res = isl_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
3780
0
  std::string tmp(res);
3781
0
  return tmp;
3782
0
}
3783
3784
isl::aff aff::get_div(int pos) const
3785
0
{
3786
0
  auto res = isl_aff_get_div(get(), pos);
3787
0
  return manage(res);
3788
0
}
3789
3790
isl::local_space aff::get_domain_local_space() const
3791
0
{
3792
0
  auto res = isl_aff_get_domain_local_space(get());
3793
0
  return manage(res);
3794
0
}
3795
3796
isl::space aff::get_domain_space() const
3797
0
{
3798
0
  auto res = isl_aff_get_domain_space(get());
3799
0
  return manage(res);
3800
0
}
3801
3802
uint32_t aff::get_hash() const
3803
0
{
3804
0
  auto res = isl_aff_get_hash(get());
3805
0
  return res;
3806
0
}
3807
3808
isl::local_space aff::get_local_space() const
3809
0
{
3810
0
  auto res = isl_aff_get_local_space(get());
3811
0
  return manage(res);
3812
0
}
3813
3814
isl::space aff::get_space() const
3815
0
{
3816
0
  auto res = isl_aff_get_space(get());
3817
0
  return manage(res);
3818
0
}
3819
3820
isl::aff aff::gist(isl::set context) const
3821
0
{
3822
0
  auto res = isl_aff_gist(copy(), context.release());
3823
0
  return manage(res);
3824
0
}
3825
3826
isl::aff aff::gist_params(isl::set context) const
3827
0
{
3828
0
  auto res = isl_aff_gist_params(copy(), context.release());
3829
0
  return manage(res);
3830
0
}
3831
3832
isl::basic_set aff::gt_basic_set(isl::aff aff2) const
3833
0
{
3834
0
  auto res = isl_aff_gt_basic_set(copy(), aff2.release());
3835
0
  return manage(res);
3836
0
}
3837
3838
isl::set aff::gt_set(isl::aff aff2) const
3839
0
{
3840
0
  auto res = isl_aff_gt_set(copy(), aff2.release());
3841
0
  return manage(res);
3842
0
}
3843
3844
isl::aff aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
3845
0
{
3846
0
  auto res = isl_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
3847
0
  return manage(res);
3848
0
}
3849
3850
isl::boolean aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
3851
0
{
3852
0
  auto res = isl_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
3853
0
  return manage(res);
3854
0
}
3855
3856
isl::boolean aff::is_cst() const
3857
159
{
3858
159
  auto res = isl_aff_is_cst(get());
3859
159
  return manage(res);
3860
159
}
3861
3862
isl::boolean aff::is_nan() const
3863
0
{
3864
0
  auto res = isl_aff_is_nan(get());
3865
0
  return manage(res);
3866
0
}
3867
3868
isl::basic_set aff::le_basic_set(isl::aff aff2) const
3869
0
{
3870
0
  auto res = isl_aff_le_basic_set(copy(), aff2.release());
3871
0
  return manage(res);
3872
0
}
3873
3874
isl::set aff::le_set(isl::aff aff2) const
3875
0
{
3876
0
  auto res = isl_aff_le_set(copy(), aff2.release());
3877
0
  return manage(res);
3878
0
}
3879
3880
isl::basic_set aff::lt_basic_set(isl::aff aff2) const
3881
0
{
3882
0
  auto res = isl_aff_lt_basic_set(copy(), aff2.release());
3883
0
  return manage(res);
3884
0
}
3885
3886
isl::set aff::lt_set(isl::aff aff2) const
3887
0
{
3888
0
  auto res = isl_aff_lt_set(copy(), aff2.release());
3889
0
  return manage(res);
3890
0
}
3891
3892
isl::aff aff::mod(isl::val mod) const
3893
17
{
3894
17
  auto res = isl_aff_mod_val(copy(), mod.release());
3895
17
  return manage(res);
3896
17
}
3897
3898
isl::aff aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
3899
0
{
3900
0
  auto res = isl_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
3901
0
  return manage(res);
3902
0
}
3903
3904
isl::aff aff::mul(isl::aff aff2) const
3905
0
{
3906
0
  auto res = isl_aff_mul(copy(), aff2.release());
3907
0
  return manage(res);
3908
0
}
3909
3910
isl::aff aff::nan_on_domain(isl::local_space ls)
3911
0
{
3912
0
  auto res = isl_aff_nan_on_domain(ls.release());
3913
0
  return manage(res);
3914
0
}
3915
3916
isl::set aff::ne_set(isl::aff aff2) const
3917
0
{
3918
0
  auto res = isl_aff_ne_set(copy(), aff2.release());
3919
0
  return manage(res);
3920
0
}
3921
3922
isl::aff aff::neg() const
3923
0
{
3924
0
  auto res = isl_aff_neg(copy());
3925
0
  return manage(res);
3926
0
}
3927
3928
isl::basic_set aff::neg_basic_set() const
3929
0
{
3930
0
  auto res = isl_aff_neg_basic_set(copy());
3931
0
  return manage(res);
3932
0
}
3933
3934
isl::aff aff::param_on_domain_space_id(isl::space space, isl::id id)
3935
0
{
3936
0
  auto res = isl_aff_param_on_domain_space_id(space.release(), id.release());
3937
0
  return manage(res);
3938
0
}
3939
3940
isl::boolean aff::plain_is_equal(const isl::aff &aff2) const
3941
0
{
3942
0
  auto res = isl_aff_plain_is_equal(get(), aff2.get());
3943
0
  return manage(res);
3944
0
}
3945
3946
isl::boolean aff::plain_is_zero() const
3947
0
{
3948
0
  auto res = isl_aff_plain_is_zero(get());
3949
0
  return manage(res);
3950
0
}
3951
3952
isl::aff aff::project_domain_on_params() const
3953
0
{
3954
0
  auto res = isl_aff_project_domain_on_params(copy());
3955
0
  return manage(res);
3956
0
}
3957
3958
isl::aff aff::pullback(isl::multi_aff ma) const
3959
34
{
3960
34
  auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
3961
34
  return manage(res);
3962
34
}
3963
3964
isl::aff aff::pullback_aff(isl::aff aff2) const
3965
0
{
3966
0
  auto res = isl_aff_pullback_aff(copy(), aff2.release());
3967
0
  return manage(res);
3968
0
}
3969
3970
isl::aff aff::scale(isl::val v) const
3971
0
{
3972
0
  auto res = isl_aff_scale_val(copy(), v.release());
3973
0
  return manage(res);
3974
0
}
3975
3976
isl::aff aff::scale_down(isl::val v) const
3977
0
{
3978
0
  auto res = isl_aff_scale_down_val(copy(), v.release());
3979
0
  return manage(res);
3980
0
}
3981
3982
isl::aff aff::scale_down_ui(unsigned int f) const
3983
0
{
3984
0
  auto res = isl_aff_scale_down_ui(copy(), f);
3985
0
  return manage(res);
3986
0
}
3987
3988
isl::aff aff::set_coefficient_si(isl::dim type, int pos, int v) const
3989
0
{
3990
0
  auto res = isl_aff_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
3991
0
  return manage(res);
3992
0
}
3993
3994
isl::aff aff::set_coefficient_val(isl::dim type, int pos, isl::val v) const
3995
0
{
3996
0
  auto res = isl_aff_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
3997
0
  return manage(res);
3998
0
}
3999
4000
isl::aff aff::set_constant_si(int v) const
4001
942
{
4002
942
  auto res = isl_aff_set_constant_si(copy(), v);
4003
942
  return manage(res);
4004
942
}
4005
4006
isl::aff aff::set_constant_val(isl::val v) const
4007
0
{
4008
0
  auto res = isl_aff_set_constant_val(copy(), v.release());
4009
0
  return manage(res);
4010
0
}
4011
4012
isl::aff aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
4013
0
{
4014
0
  auto res = isl_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
4015
0
  return manage(res);
4016
0
}
4017
4018
isl::aff aff::set_tuple_id(isl::dim type, isl::id id) const
4019
0
{
4020
0
  auto res = isl_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
4021
0
  return manage(res);
4022
0
}
4023
4024
isl::aff aff::sub(isl::aff aff2) const
4025
0
{
4026
0
  auto res = isl_aff_sub(copy(), aff2.release());
4027
0
  return manage(res);
4028
0
}
4029
4030
isl::aff aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
4031
41
{
4032
41
  auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
4033
41
  return manage(res);
4034
41
}
4035
4036
isl::basic_set aff::zero_basic_set() const
4037
0
{
4038
0
  auto res = isl_aff_zero_basic_set(copy());
4039
0
  return manage(res);
4040
0
}
4041
4042
// implementations for isl::aff_list
4043
0
isl::aff_list manage(__isl_take isl_aff_list *ptr) {
4044
0
  return aff_list(ptr);
4045
0
}
4046
0
isl::aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
4047
0
  ptr = isl_aff_list_copy(ptr);
4048
0
  return aff_list(ptr);
4049
0
}
4050
4051
aff_list::aff_list()
4052
    : ptr(nullptr) {}
4053
4054
aff_list::aff_list(const isl::aff_list &obj)
4055
    : ptr(obj.copy())
4056
{
4057
}
4058
aff_list::aff_list(std::nullptr_t)
4059
    : ptr(nullptr) {}
4060
4061
4062
aff_list::aff_list(__isl_take isl_aff_list *ptr)
4063
    : ptr(ptr) {}
4064
4065
4066
0
aff_list &aff_list::operator=(isl::aff_list obj) {
4067
0
  std::swap(this->ptr, obj.ptr);
4068
0
  return *this;
4069
0
}
4070
4071
aff_list::~aff_list() {
4072
  if (ptr)
4073
    isl_aff_list_free(ptr);
4074
}
4075
4076
0
__isl_give isl_aff_list *aff_list::copy() const & {
4077
0
  return isl_aff_list_copy(ptr);
4078
0
}
4079
4080
0
__isl_keep isl_aff_list *aff_list::get() const {
4081
0
  return ptr;
4082
0
}
4083
4084
0
__isl_give isl_aff_list *aff_list::release() {
4085
0
  isl_aff_list *tmp = ptr;
4086
0
  ptr = nullptr;
4087
0
  return tmp;
4088
0
}
4089
4090
0
bool aff_list::is_null() const {
4091
0
  return ptr == nullptr;
4092
0
}
4093
0
aff_list::operator bool() const {
4094
0
  return !is_null();
4095
0
}
4096
4097
4098
0
isl::ctx aff_list::get_ctx() const {
4099
0
  return isl::ctx(isl_aff_list_get_ctx(ptr));
4100
0
}
4101
4102
0
void aff_list::dump() const {
4103
0
  isl_aff_list_dump(get());
4104
0
}
4105
4106
4107
isl::aff_list aff_list::add(isl::aff el) const
4108
0
{
4109
0
  auto res = isl_aff_list_add(copy(), el.release());
4110
0
  return manage(res);
4111
0
}
4112
4113
isl::aff_list aff_list::alloc(isl::ctx ctx, int n)
4114
0
{
4115
0
  auto res = isl_aff_list_alloc(ctx.release(), n);
4116
0
  return manage(res);
4117
0
}
4118
4119
isl::aff_list aff_list::concat(isl::aff_list list2) const
4120
0
{
4121
0
  auto res = isl_aff_list_concat(copy(), list2.release());
4122
0
  return manage(res);
4123
0
}
4124
4125
isl::aff_list aff_list::drop(unsigned int first, unsigned int n) const
4126
0
{
4127
0
  auto res = isl_aff_list_drop(copy(), first, n);
4128
0
  return manage(res);
4129
0
}
4130
4131
isl::stat aff_list::foreach(const std::function<isl::stat(isl::aff)> &fn) const
4132
0
{
4133
0
  struct fn_data {
4134
0
    const std::function<isl::stat(isl::aff)> *func;
4135
0
  } fn_data = { &fn };
4136
0
  auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
4137
0
    auto *data = static_cast<struct fn_data *>(arg_1);
4138
0
    stat ret = (*data->func)(isl::manage(arg_0));
4139
0
    return isl_stat(ret);
4140
0
  };
4141
0
  auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
4142
0
  return isl::stat(res);
4143
0
}
4144
4145
isl::aff_list aff_list::from_aff(isl::aff el)
4146
0
{
4147
0
  auto res = isl_aff_list_from_aff(el.release());
4148
0
  return manage(res);
4149
0
}
4150
4151
isl::aff aff_list::get_aff(int index) const
4152
0
{
4153
0
  auto res = isl_aff_list_get_aff(get(), index);
4154
0
  return manage(res);
4155
0
}
4156
4157
isl::aff_list aff_list::insert(unsigned int pos, isl::aff el) const
4158
0
{
4159
0
  auto res = isl_aff_list_insert(copy(), pos, el.release());
4160
0
  return manage(res);
4161
0
}
4162
4163
int aff_list::n_aff() const
4164
0
{
4165
0
  auto res = isl_aff_list_n_aff(get());
4166
0
  return res;
4167
0
}
4168
4169
isl::aff_list aff_list::set_aff(int index, isl::aff el) const
4170
0
{
4171
0
  auto res = isl_aff_list_set_aff(copy(), index, el.release());
4172
0
  return manage(res);
4173
0
}
4174
4175
// implementations for isl::ast_build
4176
11
isl::ast_build manage(__isl_take isl_ast_build *ptr) {
4177
11
  return ast_build(ptr);
4178
11
}
4179
676
isl::ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
4180
676
  ptr = isl_ast_build_copy(ptr);
4181
676
  return ast_build(ptr);
4182
676
}
4183
4184
ast_build::ast_build()
4185
    : ptr(nullptr) {}
4186
4187
ast_build::ast_build(const isl::ast_build &obj)
4188
    : ptr(obj.copy())
4189
511
{
4190
511
}
4191
ast_build::ast_build(std::nullptr_t)
4192
9.17k
    : ptr(nullptr) {}
4193
4194
4195
ast_build::ast_build(__isl_take isl_ast_build *ptr)
4196
687
    : ptr(ptr) {}
4197
4198
ast_build::ast_build(isl::ctx ctx)
4199
{
4200
  auto res = isl_ast_build_alloc(ctx.release());
4201
  ptr = res;
4202
}
4203
4204
500
ast_build &ast_build::operator=(isl::ast_build obj) {
4205
500
  std::swap(this->ptr, obj.ptr);
4206
500
  return *this;
4207
500
}
4208
4209
10.3k
ast_build::~ast_build() {
4210
10.3k
  if (ptr)
4211
1.19k
    isl_ast_build_free(ptr);
4212
10.3k
}
4213
4214
522
__isl_give isl_ast_build *ast_build::copy() const & {
4215
522
  return isl_ast_build_copy(ptr);
4216
522
}
4217
4218
702
__isl_keep isl_ast_build *ast_build::get() const {
4219
702
  return ptr;
4220
702
}
4221
4222
0
__isl_give isl_ast_build *ast_build::release() {
4223
0
  isl_ast_build *tmp = ptr;
4224
0
  ptr = nullptr;
4225
0
  return tmp;
4226
0
}
4227
4228
0
bool ast_build::is_null() const {
4229
0
  return ptr == nullptr;
4230
0
}
4231
0
ast_build::operator bool() const {
4232
0
  return !is_null();
4233
0
}
4234
4235
4236
346
isl::ctx ast_build::get_ctx() const {
4237
346
  return isl::ctx(isl_ast_build_get_ctx(ptr));
4238
346
}
4239
4240
4241
isl::ast_expr ast_build::access_from(isl::pw_multi_aff pma) const
4242
678
{
4243
678
  auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
4244
678
  return manage(res);
4245
678
}
4246
4247
isl::ast_expr ast_build::access_from(isl::multi_pw_aff mpa) const
4248
0
{
4249
0
  auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
4250
0
  return manage(res);
4251
0
}
4252
4253
isl::ast_node ast_build::ast_from_schedule(isl::union_map schedule) const
4254
0
{
4255
0
  auto res = isl_ast_build_ast_from_schedule(get(), schedule.release());
4256
0
  return manage(res);
4257
0
}
4258
4259
isl::ast_expr ast_build::call_from(isl::pw_multi_aff pma) const
4260
0
{
4261
0
  auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
4262
0
  return manage(res);
4263
0
}
4264
4265
isl::ast_expr ast_build::call_from(isl::multi_pw_aff mpa) const
4266
0
{
4267
0
  auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
4268
0
  return manage(res);
4269
0
}
4270
4271
isl::ast_expr ast_build::expr_from(isl::set set) const
4272
10
{
4273
10
  auto res = isl_ast_build_expr_from_set(get(), set.release());
4274
10
  return manage(res);
4275
10
}
4276
4277
isl::ast_expr ast_build::expr_from(isl::pw_aff pa) const
4278
1
{
4279
1
  auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
4280
1
  return manage(res);
4281
1
}
4282
4283
isl::ast_build ast_build::from_context(isl::set set)
4284
0
{
4285
0
  auto res = isl_ast_build_from_context(set.release());
4286
0
  return manage(res);
4287
0
}
4288
4289
isl::union_map ast_build::get_schedule() const
4290
13
{
4291
13
  auto res = isl_ast_build_get_schedule(get());
4292
13
  return manage(res);
4293
13
}
4294
4295
isl::space ast_build::get_schedule_space() const
4296
0
{
4297
0
  auto res = isl_ast_build_get_schedule_space(get());
4298
0
  return manage(res);
4299
0
}
4300
4301
isl::ast_node ast_build::node_from_schedule(isl::schedule schedule) const
4302
0
{
4303
0
  auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
4304
0
  return manage(res);
4305
0
}
4306
4307
isl::ast_node ast_build::node_from_schedule_map(isl::union_map schedule) const
4308
0
{
4309
0
  auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
4310
0
  return manage(res);
4311
0
}
4312
4313
isl::ast_build ast_build::restrict(isl::set set) const
4314
11
{
4315
11
  auto res = isl_ast_build_restrict(copy(), set.release());
4316
11
  return manage(res);
4317
11
}
4318
4319
// implementations for isl::ast_expr
4320
5.10k
isl::ast_expr manage(__isl_take isl_ast_expr *ptr) {
4321
5.10k
  return ast_expr(ptr);
4322
5.10k
}
4323
288
isl::ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
4324
288
  ptr = isl_ast_expr_copy(ptr);
4325
288
  return ast_expr(ptr);
4326
288
}
4327
4328
ast_expr::ast_expr()
4329
513
    : ptr(nullptr) {}
4330
4331
ast_expr::ast_expr(const isl::ast_expr &obj)
4332
    : ptr(obj.copy())
4333
3.35k
{
4334
3.35k
}
4335
ast_expr::ast_expr(std::nullptr_t)
4336
    : ptr(nullptr) {}
4337
4338
4339
ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
4340
5.38k
    : ptr(ptr) {}
4341
4342
4343
1.01k
ast_expr &ast_expr::operator=(isl::ast_expr obj) {
4344
1.01k
  std::swap(this->ptr, obj.ptr);
4345
1.01k
  return *this;
4346
1.01k
}
4347
4348
9.25k
ast_expr::~ast_expr() {
4349
9.25k
  if (ptr)
4350
7.89k
    isl_ast_expr_free(ptr);
4351
9.25k
}
4352
4353
4.38k
__isl_give isl_ast_expr *ast_expr::copy() const & {
4354
4.38k
  return isl_ast_expr_copy(ptr);
4355
4.38k
}
4356
4357
8.52k
__isl_keep isl_ast_expr *ast_expr::get() const {
4358
8.52k
  return ptr;
4359
8.52k
}
4360
4361
849
__isl_give isl_ast_expr *ast_expr::release() {
4362
849
  isl_ast_expr *tmp = ptr;
4363
849
  ptr = nullptr;
4364
849
  return tmp;
4365
849
}
4366
4367
340
bool ast_expr::is_null() const {
4368
340
  return ptr == nullptr;
4369
340
}
4370
0
ast_expr::operator bool() const {
4371
0
  return !is_null();
4372
0
}
4373
4374
4375
0
isl::ctx ast_expr::get_ctx() const {
4376
0
  return isl::ctx(isl_ast_expr_get_ctx(ptr));
4377
0
}
4378
0
std::string ast_expr::to_str() const {
4379
0
  char *Tmp = isl_ast_expr_to_str(get());
4380
0
  if (!Tmp)
4381
0
    return "";
4382
0
  std::string S(Tmp);
4383
0
  free(Tmp);
4384
0
  return S;
4385
0
}
4386
4387
4388
0
void ast_expr::dump() const {
4389
0
  isl_ast_expr_dump(get());
4390
0
}
4391
4392
4393
isl::ast_expr ast_expr::access(isl::ast_expr_list indices) const
4394
0
{
4395
0
  auto res = isl_ast_expr_access(copy(), indices.release());
4396
0
  return manage(res);
4397
0
}
4398
4399
isl::ast_expr ast_expr::add(isl::ast_expr expr2) const
4400
0
{
4401
0
  auto res = isl_ast_expr_add(copy(), expr2.release());
4402
0
  return manage(res);
4403
0
}
4404
4405
isl::ast_expr ast_expr::address_of() const
4406
676
{
4407
676
  auto res = isl_ast_expr_address_of(copy());
4408
676
  return manage(res);
4409
676
}
4410
4411
isl::ast_expr ast_expr::call(isl::ast_expr_list arguments) const
4412
0
{
4413
0
  auto res = isl_ast_expr_call(copy(), arguments.release());
4414
0
  return manage(res);
4415
0
}
4416
4417
isl::ast_expr ast_expr::div(isl::ast_expr expr2) const
4418
0
{
4419
0
  auto res = isl_ast_expr_div(copy(), expr2.release());
4420
0
  return manage(res);
4421
0
}
4422
4423
isl::ast_expr ast_expr::eq(isl::ast_expr expr2) const
4424
0
{
4425
0
  auto res = isl_ast_expr_eq(copy(), expr2.release());
4426
0
  return manage(res);
4427
0
}
4428
4429
isl::ast_expr ast_expr::from_id(isl::id id)
4430
0
{
4431
0
  auto res = isl_ast_expr_from_id(id.release());
4432
0
  return manage(res);
4433
0
}
4434
4435
isl::ast_expr ast_expr::from_val(isl::val v)
4436
346
{
4437
346
  auto res = isl_ast_expr_from_val(v.release());
4438
346
  return manage(res);
4439
346
}
4440
4441
isl::ast_expr ast_expr::ge(isl::ast_expr expr2) const
4442
0
{
4443
0
  auto res = isl_ast_expr_ge(copy(), expr2.release());
4444
0
  return manage(res);
4445
0
}
4446
4447
isl::id ast_expr::get_id() const
4448
20
{
4449
20
  auto res = isl_ast_expr_get_id(get());
4450
20
  return manage(res);
4451
20
}
4452
4453
isl::ast_expr ast_expr::get_op_arg(int pos) const
4454
2.86k
{
4455
2.86k
  auto res = isl_ast_expr_get_op_arg(get(), pos);
4456
2.86k
  return manage(res);
4457
2.86k
}
4458
4459
int ast_expr::get_op_n_arg() const
4460
0
{
4461
0
  auto res = isl_ast_expr_get_op_n_arg(get());
4462
0
  return res;
4463
0
}
4464
4465
isl::val ast_expr::get_val() const
4466
906
{
4467
906
  auto res = isl_ast_expr_get_val(get());
4468
906
  return manage(res);
4469
906
}
4470
4471
isl::ast_expr ast_expr::gt(isl::ast_expr expr2) const
4472
0
{
4473
0
  auto res = isl_ast_expr_gt(copy(), expr2.release());
4474
0
  return manage(res);
4475
0
}
4476
4477
isl::boolean ast_expr::is_equal(const isl::ast_expr &expr2) const
4478
0
{
4479
0
  auto res = isl_ast_expr_is_equal(get(), expr2.get());
4480
0
  return manage(res);
4481
0
}
4482
4483
isl::ast_expr ast_expr::le(isl::ast_expr expr2) const
4484
338
{
4485
338
  auto res = isl_ast_expr_le(copy(), expr2.release());
4486
338
  return manage(res);
4487
338
}
4488
4489
isl::ast_expr ast_expr::lt(isl::ast_expr expr2) const
4490
0
{
4491
0
  auto res = isl_ast_expr_lt(copy(), expr2.release());
4492
0
  return manage(res);
4493
0
}
4494
4495
isl::ast_expr ast_expr::mul(isl::ast_expr expr2) const
4496
0
{
4497
0
  auto res = isl_ast_expr_mul(copy(), expr2.release());
4498
0
  return manage(res);
4499
0
}
4500
4501
isl::ast_expr ast_expr::neg() const
4502
0
{
4503
0
  auto res = isl_ast_expr_neg(copy());
4504
0
  return manage(res);
4505
0
}
4506
4507
isl::ast_expr ast_expr::pdiv_q(isl::ast_expr expr2) const
4508
0
{
4509
0
  auto res = isl_ast_expr_pdiv_q(copy(), expr2.release());
4510
0
  return manage(res);
4511
0
}
4512
4513
isl::ast_expr ast_expr::pdiv_r(isl::ast_expr expr2) const
4514
0
{
4515
0
  auto res = isl_ast_expr_pdiv_r(copy(), expr2.release());
4516
0
  return manage(res);
4517
0
}
4518
4519
isl::ast_expr ast_expr::set_op_arg(int pos, isl::ast_expr arg) const
4520
0
{
4521
0
  auto res = isl_ast_expr_set_op_arg(copy(), pos, arg.release());
4522
0
  return manage(res);
4523
0
}
4524
4525
isl::ast_expr ast_expr::sub(isl::ast_expr expr2) const
4526
0
{
4527
0
  auto res = isl_ast_expr_sub(copy(), expr2.release());
4528
0
  return manage(res);
4529
0
}
4530
4531
isl::ast_expr ast_expr::substitute_ids(isl::id_to_ast_expr id2expr) const
4532
0
{
4533
0
  auto res = isl_ast_expr_substitute_ids(copy(), id2expr.release());
4534
0
  return manage(res);
4535
0
}
4536
4537
std::string ast_expr::to_C_str() const
4538
0
{
4539
0
  auto res = isl_ast_expr_to_C_str(get());
4540
0
  std::string tmp(res);
4541
0
  free(res);
4542
0
  return tmp;
4543
0
}
4544
4545
// implementations for isl::ast_expr_list
4546
0
isl::ast_expr_list manage(__isl_take isl_ast_expr_list *ptr) {
4547
0
  return ast_expr_list(ptr);
4548
0
}
4549
0
isl::ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr) {
4550
0
  ptr = isl_ast_expr_list_copy(ptr);
4551
0
  return ast_expr_list(ptr);
4552
0
}
4553
4554
ast_expr_list::ast_expr_list()
4555
    : ptr(nullptr) {}
4556
4557
ast_expr_list::ast_expr_list(const isl::ast_expr_list &obj)
4558
    : ptr(obj.copy())
4559
{
4560
}
4561
ast_expr_list::ast_expr_list(std::nullptr_t)
4562
    : ptr(nullptr) {}
4563
4564
4565
ast_expr_list::ast_expr_list(__isl_take isl_ast_expr_list *ptr)
4566
    : ptr(ptr) {}
4567
4568
4569
0
ast_expr_list &ast_expr_list::operator=(isl::ast_expr_list obj) {
4570
0
  std::swap(this->ptr, obj.ptr);
4571
0
  return *this;
4572
0
}
4573
4574
ast_expr_list::~ast_expr_list() {
4575
  if (ptr)
4576
    isl_ast_expr_list_free(ptr);
4577
}
4578
4579
0
__isl_give isl_ast_expr_list *ast_expr_list::copy() const & {
4580
0
  return isl_ast_expr_list_copy(ptr);
4581
0
}
4582
4583
0
__isl_keep isl_ast_expr_list *ast_expr_list::get() const {
4584
0
  return ptr;
4585
0
}
4586
4587
0
__isl_give isl_ast_expr_list *ast_expr_list::release() {
4588
0
  isl_ast_expr_list *tmp = ptr;
4589
0
  ptr = nullptr;
4590
0
  return tmp;
4591
0
}
4592
4593
0
bool ast_expr_list::is_null() const {
4594
0
  return ptr == nullptr;
4595
0
}
4596
0
ast_expr_list::operator bool() const {
4597
0
  return !is_null();
4598
0
}
4599
4600
4601
0
isl::ctx ast_expr_list::get_ctx() const {
4602
0
  return isl::ctx(isl_ast_expr_list_get_ctx(ptr));
4603
0
}
4604
4605
0
void ast_expr_list::dump() const {
4606
0
  isl_ast_expr_list_dump(get());
4607
0
}
4608
4609
4610
isl::ast_expr_list ast_expr_list::add(isl::ast_expr el) const
4611
0
{
4612
0
  auto res = isl_ast_expr_list_add(copy(), el.release());
4613
0
  return manage(res);
4614
0
}
4615
4616
isl::ast_expr_list ast_expr_list::alloc(isl::ctx ctx, int n)
4617
0
{
4618
0
  auto res = isl_ast_expr_list_alloc(ctx.release(), n);
4619
0
  return manage(res);
4620
0
}
4621
4622
isl::ast_expr_list ast_expr_list::concat(isl::ast_expr_list list2) const
4623
0
{
4624
0
  auto res = isl_ast_expr_list_concat(copy(), list2.release());
4625
0
  return manage(res);
4626
0
}
4627
4628
isl::ast_expr_list ast_expr_list::drop(unsigned int first, unsigned int n) const
4629
0
{
4630
0
  auto res = isl_ast_expr_list_drop(copy(), first, n);
4631
0
  return manage(res);
4632
0
}
4633
4634
isl::stat ast_expr_list::foreach(const std::function<isl::stat(isl::ast_expr)> &fn) const
4635
0
{
4636
0
  struct fn_data {
4637
0
    const std::function<isl::stat(isl::ast_expr)> *func;
4638
0
  } fn_data = { &fn };
4639
0
  auto fn_lambda = [](isl_ast_expr *arg_0, void *arg_1) -> isl_stat {
4640
0
    auto *data = static_cast<struct fn_data *>(arg_1);
4641
0
    stat ret = (*data->func)(isl::manage(arg_0));
4642
0
    return isl_stat(ret);
4643
0
  };
4644
0
  auto res = isl_ast_expr_list_foreach(get(), fn_lambda, &fn_data);
4645
0
  return isl::stat(res);
4646
0
}
4647
4648
isl::ast_expr_list ast_expr_list::from_ast_expr(isl::ast_expr el)
4649
0
{
4650
0
  auto res = isl_ast_expr_list_from_ast_expr(el.release());
4651
0
  return manage(res);
4652
0
}
4653
4654
isl::ast_expr ast_expr_list::get_ast_expr(int index) const
4655
0
{
4656
0
  auto res = isl_ast_expr_list_get_ast_expr(get(), index);
4657
0
  return manage(res);
4658
0
}
4659
4660
isl::ast_expr_list ast_expr_list::insert(unsigned int pos, isl::ast_expr el) const
4661
0
{
4662
0
  auto res = isl_ast_expr_list_insert(copy(), pos, el.release());
4663
0
  return manage(res);
4664
0
}
4665
4666
int ast_expr_list::n_ast_expr() const
4667
0
{
4668
0
  auto res = isl_ast_expr_list_n_ast_expr(get());
4669
0
  return res;
4670
0
}
4671
4672
isl::ast_expr_list ast_expr_list::set_ast_expr(int index, isl::ast_expr el) const
4673
0
{
4674
0
  auto res = isl_ast_expr_list_set_ast_expr(copy(), index, el.release());
4675
0
  return manage(res);
4676
0
}
4677
4678
// implementations for isl::ast_node
4679
251
isl::ast_node manage(__isl_take isl_ast_node *ptr) {
4680
251
  return ast_node(ptr);
4681
251
}
4682
253
isl::ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
4683
253
  ptr = isl_ast_node_copy(ptr);
4684
253
  return ast_node(ptr);
4685
253
}
4686
4687
ast_node::ast_node()
4688
    : ptr(nullptr) {}
4689
4690
ast_node::ast_node(const isl::ast_node &obj)
4691
    : ptr(obj.copy())
4692
{
4693
}
4694
ast_node::ast_node(std::nullptr_t)
4695
    : ptr(nullptr) {}
4696
4697
4698
ast_node::ast_node(__isl_take isl_ast_node *ptr)
4699
504
    : ptr(ptr) {}
4700
4701
4702
0
ast_node &ast_node::operator=(isl::ast_node obj) {
4703
0
  std::swap(this->ptr, obj.ptr);
4704
0
  return *this;
4705
0
}
4706
4707
504
ast_node::~ast_node() {
4708
504
  if (ptr)
4709
504
    isl_ast_node_free(ptr);
4710
504
}
4711
4712
0
__isl_give isl_ast_node *ast_node::copy() const & {
4713
0
  return isl_ast_node_copy(ptr);
4714
0
}
4715
4716
510
__isl_keep isl_ast_node *ast_node::get() const {
4717
510
  return ptr;
4718
510
}
4719
4720
0
__isl_give isl_ast_node *ast_node::release() {
4721
0
  isl_ast_node *tmp = ptr;
4722
0
  ptr = nullptr;
4723
0
  return tmp;
4724
0
}
4725
4726
0
bool ast_node::is_null() const {
4727
0
  return ptr == nullptr;
4728
0
}
4729
0
ast_node::operator bool() const {
4730
0
  return !is_null();
4731
0
}
4732
4733
4734
0
isl::ctx ast_node::get_ctx() const {
4735
0
  return isl::ctx(isl_ast_node_get_ctx(ptr));
4736
0
}
4737
0
std::string ast_node::to_str() const {
4738
0
  char *Tmp = isl_ast_node_to_str(get());
4739
0
  if (!Tmp)
4740
0
    return "";
4741
0
  std::string S(Tmp);
4742
0
  free(Tmp);
4743
0
  return S;
4744
0
}
4745
4746
4747
0
void ast_node::dump() const {
4748
0
  isl_ast_node_dump(get());
4749
0
}
4750
4751
4752
isl::ast_node ast_node::alloc_user(isl::ast_expr expr)
4753
0
{
4754
0
  auto res = isl_ast_node_alloc_user(expr.release());
4755
0
  return manage(res);
4756
0
}
4757
4758
isl::ast_node_list ast_node::block_get_children() const
4759
0
{
4760
0
  auto res = isl_ast_node_block_get_children(get());
4761
0
  return manage(res);
4762
0
}
4763
4764
isl::ast_node ast_node::for_get_body() const
4765
251
{
4766
251
  auto res = isl_ast_node_for_get_body(get());
4767
251
  return manage(res);
4768
251
}
4769
4770
isl::ast_expr ast_node::for_get_cond() const
4771
0
{
4772
0
  auto res = isl_ast_node_for_get_cond(get());
4773
0
  return manage(res);
4774
0
}
4775
4776
isl::ast_expr ast_node::for_get_inc() const
4777
0
{
4778
0
  auto res = isl_ast_node_for_get_inc(get());
4779
0
  return manage(res);
4780
0
}
4781
4782
isl::ast_expr ast_node::for_get_init() const
4783
0
{
4784
0
  auto res = isl_ast_node_for_get_init(get());
4785
0
  return manage(res);
4786
0
}
4787
4788
isl::ast_expr ast_node::for_get_iterator() const
4789
0
{
4790
0
  auto res = isl_ast_node_for_get_iterator(get());
4791
0
  return manage(res);
4792
0
}
4793
4794
isl::boolean ast_node::for_is_degenerate() const
4795
0
{
4796
0
  auto res = isl_ast_node_for_is_degenerate(get());
4797
0
  return manage(res);
4798
0
}
4799
4800
isl::id ast_node::get_annotation() const
4801
0
{
4802
0
  auto res = isl_ast_node_get_annotation(get());
4803
0
  return manage(res);
4804
0
}
4805
4806
isl::ast_expr ast_node::if_get_cond() const
4807
0
{
4808
0
  auto res = isl_ast_node_if_get_cond(get());
4809
0
  return manage(res);
4810
0
}
4811
4812
isl::ast_node ast_node::if_get_else() const
4813
0
{
4814
0
  auto res = isl_ast_node_if_get_else(get());
4815
0
  return manage(res);
4816
0
}
4817
4818
isl::ast_node ast_node::if_get_then() const
4819
0
{
4820
0
  auto res = isl_ast_node_if_get_then(get());
4821
0
  return manage(res);
4822
0
}
4823
4824
isl::boolean ast_node::if_has_else() const
4825
0
{
4826
0
  auto res = isl_ast_node_if_has_else(get());
4827
0
  return manage(res);
4828
0
}
4829
4830
isl::id ast_node::mark_get_id() const
4831
6
{
4832
6
  auto res = isl_ast_node_mark_get_id(get());
4833
6
  return manage(res);
4834
6
}
4835
4836
isl::ast_node ast_node::mark_get_node() const
4837
0
{
4838
0
  auto res = isl_ast_node_mark_get_node(get());
4839
0
  return manage(res);
4840
0
}
4841
4842
isl::ast_node ast_node::set_annotation(isl::id annotation) const
4843
0
{
4844
0
  auto res = isl_ast_node_set_annotation(copy(), annotation.release());
4845
0
  return manage(res);
4846
0
}
4847
4848
std::string ast_node::to_C_str() const
4849
0
{
4850
0
  auto res = isl_ast_node_to_C_str(get());
4851
0
  std::string tmp(res);
4852
0
  free(res);
4853
0
  return tmp;
4854
0
}
4855
4856
isl::ast_expr ast_node::user_get_expr() const
4857
2
{
4858
2
  auto res = isl_ast_node_user_get_expr(get());
4859
2
  return manage(res);
4860
2
}
4861
4862
// implementations for isl::ast_node_list
4863
0
isl::ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
4864
0
  return ast_node_list(ptr);
4865
0
}
4866
0
isl::ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
4867
0
  ptr = isl_ast_node_list_copy(ptr);
4868
0
  return ast_node_list(ptr);
4869
0
}
4870
4871
ast_node_list::ast_node_list()
4872
    : ptr(nullptr) {}
4873
4874
ast_node_list::ast_node_list(const isl::ast_node_list &obj)
4875
    : ptr(obj.copy())
4876
{
4877
}
4878
ast_node_list::ast_node_list(std::nullptr_t)
4879
    : ptr(nullptr) {}
4880
4881
4882
ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
4883
    : ptr(ptr) {}
4884
4885
4886
0
ast_node_list &ast_node_list::operator=(isl::ast_node_list obj) {
4887
0
  std::swap(this->ptr, obj.ptr);
4888
0
  return *this;
4889
0
}
4890
4891
ast_node_list::~ast_node_list() {
4892
  if (ptr)
4893
    isl_ast_node_list_free(ptr);
4894
}
4895
4896
0
__isl_give isl_ast_node_list *ast_node_list::copy() const & {
4897
0
  return isl_ast_node_list_copy(ptr);
4898
0
}
4899
4900
0
__isl_keep isl_ast_node_list *ast_node_list::get() const {
4901
0
  return ptr;
4902
0
}
4903
4904
0
__isl_give isl_ast_node_list *ast_node_list::release() {
4905
0
  isl_ast_node_list *tmp = ptr;
4906
0
  ptr = nullptr;
4907
0
  return tmp;
4908
0
}
4909
4910
0
bool ast_node_list::is_null() const {
4911
0
  return ptr == nullptr;
4912
0
}
4913
0
ast_node_list::operator bool() const {
4914
0
  return !is_null();
4915
0
}
4916
4917
4918
0
isl::ctx ast_node_list::get_ctx() const {
4919
0
  return isl::ctx(isl_ast_node_list_get_ctx(ptr));
4920
0
}
4921
4922
0
void ast_node_list::dump() const {
4923
0
  isl_ast_node_list_dump(get());
4924
0
}
4925
4926
4927
isl::ast_node_list ast_node_list::add(isl::ast_node el) const
4928
0
{
4929
0
  auto res = isl_ast_node_list_add(copy(), el.release());
4930
0
  return manage(res);
4931
0
}
4932
4933
isl::ast_node_list ast_node_list::alloc(isl::ctx ctx, int n)
4934
0
{
4935
0
  auto res = isl_ast_node_list_alloc(ctx.release(), n);
4936
0
  return manage(res);
4937
0
}
4938
4939
isl::ast_node_list ast_node_list::concat(isl::ast_node_list list2) const
4940
0
{
4941
0
  auto res = isl_ast_node_list_concat(copy(), list2.release());
4942
0
  return manage(res);
4943
0
}
4944
4945
isl::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
4946
0
{
4947
0
  auto res = isl_ast_node_list_drop(copy(), first, n);
4948
0
  return manage(res);
4949
0
}
4950
4951
isl::stat ast_node_list::foreach(const std::function<isl::stat(isl::ast_node)> &fn) const
4952
0
{
4953
0
  struct fn_data {
4954
0
    const std::function<isl::stat(isl::ast_node)> *func;
4955
0
  } fn_data = { &fn };
4956
0
  auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
4957
0
    auto *data = static_cast<struct fn_data *>(arg_1);
4958
0
    stat ret = (*data->func)(isl::manage(arg_0));
4959
0
    return isl_stat(ret);
4960
0
  };
4961
0
  auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
4962
0
  return isl::stat(res);
4963
0
}
4964
4965
isl::ast_node_list ast_node_list::from_ast_node(isl::ast_node el)
4966
0
{
4967
0
  auto res = isl_ast_node_list_from_ast_node(el.release());
4968
0
  return manage(res);
4969
0
}
4970
4971
isl::ast_node ast_node_list::get_ast_node(int index) const
4972
0
{
4973
0
  auto res = isl_ast_node_list_get_ast_node(get(), index);
4974
0
  return manage(res);
4975
0
}
4976
4977
isl::ast_node_list ast_node_list::insert(unsigned int pos, isl::ast_node el) const
4978
0
{
4979
0
  auto res = isl_ast_node_list_insert(copy(), pos, el.release());
4980
0
  return manage(res);
4981
0
}
4982
4983
int ast_node_list::n_ast_node() const
4984
0
{
4985
0
  auto res = isl_ast_node_list_n_ast_node(get());
4986
0
  return res;
4987
0
}
4988
4989
isl::ast_node_list ast_node_list::set_ast_node(int index, isl::ast_node el) const
4990
0
{
4991
0
  auto res = isl_ast_node_list_set_ast_node(copy(), index, el.release());
4992
0
  return manage(res);
4993
0
}
4994
4995
// implementations for isl::basic_map
4996
2.02k
isl::basic_map manage(__isl_take isl_basic_map *ptr) {
4997
2.02k
  return basic_map(ptr);
4998
2.02k
}
4999
0
isl::basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
5000
0
  ptr = isl_basic_map_copy(ptr);
5001
0
  return basic_map(ptr);
5002
0
}
5003
5004
basic_map::basic_map()
5005
0
    : ptr(nullptr) {}
5006
5007
basic_map::basic_map(const isl::basic_map &obj)
5008
    : ptr(obj.copy())
5009
777
{
5010
777
}
5011
basic_map::basic_map(std::nullptr_t)
5012
    : ptr(nullptr) {}
5013
5014
5015
basic_map::basic_map(__isl_take isl_basic_map *ptr)
5016
2.02k
    : ptr(ptr) {}
5017
5018
basic_map::basic_map(isl::ctx ctx, const std::string &str)
5019
{
5020
  auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
5021
  ptr = res;
5022
}
5023
5024
1.34k
basic_map &basic_map::operator=(isl::basic_map obj) {
5025
1.34k
  std::swap(this->ptr, obj.ptr);
5026
1.34k
  return *this;
5027
1.34k
}
5028
5029
2.80k
basic_map::~basic_map() {
5030
2.80k
  if (ptr)
5031
2.33k
    isl_basic_map_free(ptr);
5032
2.80k
}
5033
5034
2.12k
__isl_give isl_basic_map *basic_map::copy() const & {
5035
2.12k
  return isl_basic_map_copy(ptr);
5036
2.12k
}
5037
5038
208
__isl_keep isl_basic_map *basic_map::get() const {
5039
208
  return ptr;
5040
208
}
5041
5042
476
__isl_give isl_basic_map *basic_map::release() {
5043
476
  isl_basic_map *tmp = ptr;
5044
476
  ptr = nullptr;
5045
476
  return tmp;
5046
476
}
5047
5048
0
bool basic_map::is_null() const {
5049
0
  return ptr == nullptr;
5050
0
}
5051
0
basic_map::operator bool() const {
5052
0
  return !is_null();
5053
0
}
5054
5055
5056
0
isl::ctx basic_map::get_ctx() const {
5057
0
  return isl::ctx(isl_basic_map_get_ctx(ptr));
5058
0
}
5059
0
std::string basic_map::to_str() const {
5060
0
  char *Tmp = isl_basic_map_to_str(get());
5061
0
  if (!Tmp)
5062
0
    return "";
5063
0
  std::string S(Tmp);
5064
0
  free(Tmp);
5065
0
  return S;
5066
0
}
5067
5068
5069
0
void basic_map::dump() const {
5070
0
  isl_basic_map_dump(get());
5071
0
}
5072
5073
5074
isl::basic_map basic_map::add_constraint(isl::constraint constraint) const
5075
0
{
5076
0
  auto res = isl_basic_map_add_constraint(copy(), constraint.release());
5077
0
  return manage(res);
5078
0
}
5079
5080
isl::basic_map basic_map::add_dims(isl::dim type, unsigned int n) const
5081
0
{
5082
0
  auto res = isl_basic_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
5083
0
  return manage(res);
5084
0
}
5085
5086
isl::basic_map basic_map::affine_hull() const
5087
0
{
5088
0
  auto res = isl_basic_map_affine_hull(copy());
5089
0
  return manage(res);
5090
0
}
5091
5092
isl::basic_map basic_map::align_params(isl::space model) const
5093
0
{
5094
0
  auto res = isl_basic_map_align_params(copy(), model.release());
5095
0
  return manage(res);
5096
0
}
5097
5098
isl::basic_map basic_map::apply_domain(isl::basic_map bmap2) const
5099
0
{
5100
0
  auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
5101
0
  return manage(res);
5102
0
}
5103
5104
isl::basic_map basic_map::apply_range(isl::basic_map bmap2) const
5105
0
{
5106
0
  auto res = isl_basic_map_apply_range(copy(), bmap2.release());
5107
0
  return manage(res);
5108
0
}
5109
5110
isl::boolean basic_map::can_curry() const
5111
0
{
5112
0
  auto res = isl_basic_map_can_curry(get());
5113
0
  return manage(res);
5114
0
}
5115
5116
isl::boolean basic_map::can_uncurry() const
5117
0
{
5118
0
  auto res = isl_basic_map_can_uncurry(get());
5119
0
  return manage(res);
5120
0
}
5121
5122
isl::boolean basic_map::can_zip() const
5123
0
{
5124
0
  auto res = isl_basic_map_can_zip(get());
5125
0
  return manage(res);
5126
0
}
5127
5128
isl::basic_map basic_map::curry() const
5129
0
{
5130
0
  auto res = isl_basic_map_curry(copy());
5131
0
  return manage(res);
5132
0
}
5133
5134
isl::basic_set basic_map::deltas() const
5135
0
{
5136
0
  auto res = isl_basic_map_deltas(copy());
5137
0
  return manage(res);
5138
0
}
5139
5140
isl::basic_map basic_map::deltas_map() const
5141
0
{
5142
0
  auto res = isl_basic_map_deltas_map(copy());
5143
0
  return manage(res);
5144
0
}
5145
5146
isl::basic_map basic_map::detect_equalities() const
5147
0
{
5148
0
  auto res = isl_basic_map_detect_equalities(copy());
5149
0
  return manage(res);
5150
0
}
5151
5152
unsigned int basic_map::dim(isl::dim type) const
5153
0
{
5154
0
  auto res = isl_basic_map_dim(get(), static_cast<enum isl_dim_type>(type));
5155
0
  return res;
5156
0
}
5157
5158
isl::basic_set basic_map::domain() const
5159
0
{
5160
0
  auto res = isl_basic_map_domain(copy());
5161
0
  return manage(res);
5162
0
}
5163
5164
isl::basic_map basic_map::domain_map() const
5165
0
{
5166
0
  auto res = isl_basic_map_domain_map(copy());
5167
0
  return manage(res);
5168
0
}
5169
5170
isl::basic_map basic_map::domain_product(isl::basic_map bmap2) const
5171
0
{
5172
0
  auto res = isl_basic_map_domain_product(copy(), bmap2.release());
5173
0
  return manage(res);
5174
0
}
5175
5176
isl::basic_map basic_map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5177
0
{
5178
0
  auto res = isl_basic_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5179
0
  return manage(res);
5180
0
}
5181
5182
isl::basic_map basic_map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5183
0
{
5184
0
  auto res = isl_basic_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5185
0
  return manage(res);
5186
0
}
5187
5188
isl::basic_map basic_map::drop_unused_params() const
5189
0
{
5190
0
  auto res = isl_basic_map_drop_unused_params(copy());
5191
0
  return manage(res);
5192
0
}
5193
5194
isl::basic_map basic_map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
5195
0
{
5196
0
  auto res = isl_basic_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
5197
0
  return manage(res);
5198
0
}
5199
5200
isl::basic_map basic_map::empty(isl::space space)
5201
0
{
5202
0
  auto res = isl_basic_map_empty(space.release());
5203
0
  return manage(res);
5204
0
}
5205
5206
isl::basic_map basic_map::equal(isl::space dim, unsigned int n_equal)
5207
49
{
5208
49
  auto res = isl_basic_map_equal(dim.release(), n_equal);
5209
49
  return manage(res);
5210
49
}
5211
5212
isl::basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5213
1.34k
{
5214
1.34k
  auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5215
1.34k
  return manage(res);
5216
1.34k
}
5217
5218
int basic_map::find_dim_by_name(isl::dim type, const std::string &name) const
5219
0
{
5220
0
  auto res = isl_basic_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
5221
0
  return res;
5222
0
}
5223
5224
isl::basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
5225
{
5226
  auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5227
  return manage(res);
5228
}
5229
5230
isl::basic_map basic_map::fix_val(isl::dim type, unsigned int pos, isl::val v) const
5231
0
{
5232
0
  auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
5233
0
  return manage(res);
5234
0
}
5235
5236
isl::basic_map basic_map::flat_product(isl::basic_map bmap2) const
5237
0
{
5238
0
  auto res = isl_basic_map_flat_product(copy(), bmap2.release());
5239
0
  return manage(res);
5240
0
}
5241
5242
isl::basic_map basic_map::flat_range_product(isl::basic_map bmap2) const
5243
0
{
5244
0
  auto res = isl_basic_map_flat_range_product(copy(), bmap2.release());
5245
0
  return manage(res);
5246
0
}
5247
5248
isl::basic_map basic_map::flatten() const
5249
0
{
5250
0
  auto res = isl_basic_map_flatten(copy());
5251
0
  return manage(res);
5252
0
}
5253
5254
isl::basic_map basic_map::flatten_domain() const
5255
0
{
5256
0
  auto res = isl_basic_map_flatten_domain(copy());
5257
0
  return manage(res);
5258
0
}
5259
5260
isl::basic_map basic_map::flatten_range() const
5261
0
{
5262
0
  auto res = isl_basic_map_flatten_range(copy());
5263
0
  return manage(res);
5264
0
}
5265
5266
isl::stat basic_map::foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const
5267
0
{
5268
0
  struct fn_data {
5269
0
    const std::function<isl::stat(isl::constraint)> *func;
5270
0
  } fn_data = { &fn };
5271
0
  auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
5272
0
    auto *data = static_cast<struct fn_data *>(arg_1);
5273
0
    stat ret = (*data->func)(isl::manage(arg_0));
5274
0
    return isl_stat(ret);
5275
0
  };
5276
0
  auto res = isl_basic_map_foreach_constraint(get(), fn_lambda, &fn_data);
5277
0
  return isl::stat(res);
5278
0
}
5279
5280
isl::basic_map basic_map::from_aff(isl::aff aff)
5281
0
{
5282
0
  auto res = isl_basic_map_from_aff(aff.release());
5283
0
  return manage(res);
5284
0
}
5285
5286
isl::basic_map basic_map::from_aff_list(isl::space domain_dim, isl::aff_list list)
5287
0
{
5288
0
  auto res = isl_basic_map_from_aff_list(domain_dim.release(), list.release());
5289
0
  return manage(res);
5290
0
}
5291
5292
isl::basic_map basic_map::from_constraint(isl::constraint constraint)
5293
0
{
5294
0
  auto res = isl_basic_map_from_constraint(constraint.release());
5295
0
  return manage(res);
5296
0
}
5297
5298
isl::basic_map basic_map::from_domain(isl::basic_set bset)
5299
0
{
5300
0
  auto res = isl_basic_map_from_domain(bset.release());
5301
0
  return manage(res);
5302
0
}
5303
5304
isl::basic_map basic_map::from_domain_and_range(isl::basic_set domain, isl::basic_set range)
5305
60
{
5306
60
  auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release());
5307
60
  return manage(res);
5308
60
}
5309
5310
isl::basic_map basic_map::from_multi_aff(isl::multi_aff maff)