Coverage Report

Created: 2017-11-21 03:47

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