Coverage Report

Created: 2018-04-24 22:41

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