Coverage Report

Created: 2019-07-24 05:18

/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 checked C++ bindings for isl.
2
///
3
/// isl is a library for computing with integer sets and maps described by
4
/// Presburger formulas. On top of this, isl provides various tools for
5
/// polyhedral compilation, ranging from dependence analysis over scheduling
6
/// to AST generation.
7
8
#ifndef ISL_CPP_CHECKED
9
#define ISL_CPP_CHECKED
10
11
#include <isl/val.h>
12
#include <isl/aff.h>
13
#include <isl/set.h>
14
#include <isl/space.h>
15
#include <isl/id.h>
16
#include <isl/map.h>
17
#include <isl/vec.h>
18
#include <isl/ilp.h>
19
#include <isl/union_set.h>
20
#include <isl/union_map.h>
21
#include <isl/flow.h>
22
#include <isl/schedule.h>
23
#include <isl/schedule_node.h>
24
#include <isl/ast_build.h>
25
#include <isl/constraint.h>
26
#include <isl/polynomial.h>
27
#include <isl/mat.h>
28
#include <isl/fixed_box.h>
29
30
#include <stdio.h>
31
#include <stdlib.h>
32
33
#include <functional>
34
#include <string>
35
36
namespace isl {
37
inline namespace noexceptions {
38
39
#define ISLPP_STRINGIZE_(X) #X
40
#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
41
42
#define ISLPP_ASSERT(test, message)                          \
43
68.2k
  do {                                                       \
44
68.2k
    if (test)                                                \
45
68.2k
      break;                                                 \
46
68.2k
    fputs("Assertion \"" #test "\" failed at " __FILE__      \
47
0
      ":" ISLPP_STRINGIZE(__LINE__) "\n  " message "\n",     \
48
0
      stderr);                                               \
49
0
    abort();                                                 \
50
68.2k
  } while (
00
)
51
52
class boolean {
53
private:
54
  mutable bool checked = false;
55
  isl_bool val;
56
57
  friend boolean manage(isl_bool val);
58
69.7k
  boolean(isl_bool val): val(val) {}
59
public:
60
  boolean()
61
0
      : val(isl_bool_error) {}
62
86.6k
  ~boolean() {
63
86.6k
    // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
64
86.6k
  }
65
66
  /* implicit */ boolean(bool val)
67
16.8k
      : val(val ? isl_bool_true : isl_bool_false) {}
68
69
85.0k
  bool is_error() const { checked = true; return val == isl_bool_error; }
70
1.16k
  bool is_false() const { checked = true; return val == isl_bool_false; }
71
85.4k
  bool is_true() const { checked = true; return val == isl_bool_true; }
72
73
68.2k
  operator bool() const {
74
68.2k
    // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked error state");
75
68.2k
    ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
76
68.2k
    return is_true();
77
68.2k
  }
78
79
16.8k
  boolean operator!() const {
80
16.8k
    if (is_error())
81
0
      return *this;
82
16.8k
    return !is_true();
83
16.8k
  }
84
};
85
86
69.7k
inline boolean manage(isl_bool val) {
87
69.7k
  return boolean(val);
88
69.7k
}
89
90
class ctx {
91
  isl_ctx *ptr;
92
public:
93
  /* implicit */ ctx(isl_ctx *ctx)
94
52.5k
      : ptr(ctx) {}
95
52.2k
  isl_ctx *release() {
96
52.2k
    auto tmp = ptr;
97
52.2k
    ptr = nullptr;
98
52.2k
    return tmp;
99
52.2k
  }
100
62.8k
  isl_ctx *get() {
101
62.8k
    return ptr;
102
62.8k
  }
103
};
104
105
/* Class encapsulating an isl_stat value.
106
 */
107
class stat {
108
private:
109
  mutable bool checked = false;
110
  isl_stat val;
111
112
  friend stat manage(isl_stat val);
113
public:
114
510
  constexpr stat(isl_stat val) : val(val) {}
115
303
  static stat ok() {
116
303
    return stat(isl_stat_ok);
117
303
  }
118
3
  static stat error() {
119
3
    return stat(isl_stat_error);
120
3
  }
121
0
  stat() : val(isl_stat_error) {}
122
510
  ~stat() {
123
510
    // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
124
510
  }
125
126
306
  isl_stat release() {
127
306
    checked = true;
128
306
    return val;
129
306
  }
130
131
199
  bool is_error() const {
132
199
    checked = true;
133
199
    return val == isl_stat_error;
134
199
  }
135
  bool is_ok() const {
136
    checked = true;
137
    return val == isl_stat_ok;
138
  }
139
};
140
141
142
inline stat manage(isl_stat val)
143
204
{
144
204
  return stat(val);
145
204
}
146
147
enum class dim {
148
  cst = isl_dim_cst,
149
  param = isl_dim_param,
150
  in = isl_dim_in,
151
  out = isl_dim_out,
152
  set = isl_dim_set,
153
  div = isl_dim_div,
154
  all = isl_dim_all
155
};
156
157
}
158
} // namespace isl
159
160
namespace isl {
161
162
inline namespace noexceptions {
163
164
// forward declarations
165
class aff;
166
class aff_list;
167
class ast_build;
168
class ast_expr;
169
class ast_expr_list;
170
class ast_node;
171
class ast_node_list;
172
class basic_map;
173
class basic_map_list;
174
class basic_set;
175
class basic_set_list;
176
class constraint;
177
class constraint_list;
178
class fixed_box;
179
class id;
180
class id_list;
181
class id_to_ast_expr;
182
class local_space;
183
class map;
184
class map_list;
185
class mat;
186
class multi_aff;
187
class multi_pw_aff;
188
class multi_union_pw_aff;
189
class multi_val;
190
class point;
191
class pw_aff;
192
class pw_aff_list;
193
class pw_multi_aff;
194
class pw_multi_aff_list;
195
class pw_qpolynomial;
196
class pw_qpolynomial_fold_list;
197
class pw_qpolynomial_list;
198
class qpolynomial;
199
class schedule;
200
class schedule_constraints;
201
class schedule_node;
202
class set;
203
class set_list;
204
class space;
205
class term;
206
class union_access_info;
207
class union_flow;
208
class union_map;
209
class union_map_list;
210
class union_pw_aff;
211
class union_pw_aff_list;
212
class union_pw_multi_aff;
213
class union_pw_multi_aff_list;
214
class union_pw_qpolynomial;
215
class union_set;
216
class union_set_list;
217
class val;
218
class val_list;
219
class vec;
220
221
// declarations for isl::aff
222
inline aff manage(__isl_take isl_aff *ptr);
223
inline aff manage_copy(__isl_keep isl_aff *ptr);
224
225
class aff {
226
  friend inline aff manage(__isl_take isl_aff *ptr);
227
  friend inline aff manage_copy(__isl_keep isl_aff *ptr);
228
229
  isl_aff *ptr = nullptr;
230
231
  inline explicit aff(__isl_take isl_aff *ptr);
232
233
public:
234
  inline /* implicit */ aff();
235
  inline /* implicit */ aff(const aff &obj);
236
  inline /* implicit */ aff(std::nullptr_t);
237
  inline explicit aff(local_space ls);
238
  inline explicit aff(local_space ls, val val);
239
  inline explicit aff(ctx ctx, const std::string &str);
240
  inline aff &operator=(aff obj);
241
  inline ~aff();
242
  inline __isl_give isl_aff *copy() const &;
243
  inline __isl_give isl_aff *copy() && = delete;
244
  inline __isl_keep isl_aff *get() const;
245
  inline __isl_give isl_aff *release();
246
  inline bool is_null() const;
247
  inline explicit operator bool() const;
248
  inline ctx get_ctx() const;
249
  inline std::string to_str() const;
250
  inline void dump() const;
251
252
  inline aff add(aff aff2) const;
253
  inline aff add_coefficient_si(isl::dim type, int pos, int v) const;
254
  inline aff add_coefficient_val(isl::dim type, int pos, val v) const;
255
  inline aff add_constant_num_si(int v) const;
256
  inline aff add_constant_si(int v) const;
257
  inline aff add_constant_val(val v) const;
258
  inline aff add_dims(isl::dim type, unsigned int n) const;
259
  inline aff align_params(space model) const;
260
  inline aff ceil() const;
261
  inline int coefficient_sgn(isl::dim type, int pos) const;
262
  inline int dim(isl::dim type) const;
263
  inline aff div(aff aff2) const;
264
  inline aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
265
  inline basic_set eq_basic_set(aff aff2) const;
266
  inline set eq_set(aff aff2) const;
267
  inline val eval(point pnt) const;
268
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
269
  inline aff floor() const;
270
  inline aff from_range() const;
271
  inline basic_set ge_basic_set(aff aff2) const;
272
  inline set ge_set(aff aff2) const;
273
  inline val get_coefficient_val(isl::dim type, int pos) const;
274
  inline val get_constant_val() const;
275
  inline val get_denominator_val() const;
276
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
277
  inline aff get_div(int pos) const;
278
  inline local_space get_domain_local_space() const;
279
  inline space get_domain_space() const;
280
  inline uint32_t get_hash() const;
281
  inline local_space get_local_space() const;
282
  inline space get_space() const;
283
  inline aff gist(set context) const;
284
  inline aff gist_params(set context) const;
285
  inline basic_set gt_basic_set(aff aff2) const;
286
  inline set gt_set(aff aff2) const;
287
  inline aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
288
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
289
  inline boolean is_cst() const;
290
  inline boolean is_nan() const;
291
  inline basic_set le_basic_set(aff aff2) const;
292
  inline set le_set(aff aff2) const;
293
  inline basic_set lt_basic_set(aff aff2) const;
294
  inline set lt_set(aff aff2) const;
295
  inline aff mod(val mod) const;
296
  inline aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
297
  inline aff mul(aff aff2) const;
298
  static inline aff nan_on_domain(local_space ls);
299
  inline set ne_set(aff aff2) const;
300
  inline aff neg() const;
301
  inline basic_set neg_basic_set() const;
302
  static inline aff param_on_domain_space_id(space space, id id);
303
  inline boolean plain_is_equal(const aff &aff2) const;
304
  inline boolean plain_is_zero() const;
305
  inline aff project_domain_on_params() const;
306
  inline aff pullback(multi_aff ma) const;
307
  inline aff pullback_aff(aff aff2) const;
308
  inline aff scale(val v) const;
309
  inline aff scale_down(val v) const;
310
  inline aff scale_down_ui(unsigned int f) const;
311
  inline aff set_coefficient_si(isl::dim type, int pos, int v) const;
312
  inline aff set_coefficient_val(isl::dim type, int pos, val v) const;
313
  inline aff set_constant_si(int v) const;
314
  inline aff set_constant_val(val v) const;
315
  inline aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
316
  inline aff set_tuple_id(isl::dim type, id id) const;
317
  inline aff sub(aff aff2) const;
318
  static inline aff var_on_domain(local_space ls, isl::dim type, unsigned int pos);
319
  inline basic_set zero_basic_set() const;
320
};
321
322
// declarations for isl::aff_list
323
inline aff_list manage(__isl_take isl_aff_list *ptr);
324
inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
325
326
class aff_list {
327
  friend inline aff_list manage(__isl_take isl_aff_list *ptr);
328
  friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
329
330
  isl_aff_list *ptr = nullptr;
331
332
  inline explicit aff_list(__isl_take isl_aff_list *ptr);
333
334
public:
335
  inline /* implicit */ aff_list();
336
  inline /* implicit */ aff_list(const aff_list &obj);
337
  inline /* implicit */ aff_list(std::nullptr_t);
338
  inline aff_list &operator=(aff_list obj);
339
  inline ~aff_list();
340
  inline __isl_give isl_aff_list *copy() const &;
341
  inline __isl_give isl_aff_list *copy() && = delete;
342
  inline __isl_keep isl_aff_list *get() const;
343
  inline __isl_give isl_aff_list *release();
344
  inline bool is_null() const;
345
  inline explicit operator bool() const;
346
  inline ctx get_ctx() const;
347
  inline void dump() const;
348
349
  inline aff_list add(aff el) const;
350
  static inline aff_list alloc(ctx ctx, int n);
351
  inline aff_list concat(aff_list list2) const;
352
  inline aff_list drop(unsigned int first, unsigned int n) const;
353
  inline stat foreach(const std::function<stat(aff)> &fn) const;
354
  static inline aff_list from_aff(aff el);
355
  inline aff get_aff(int index) const;
356
  inline aff get_at(int index) const;
357
  inline aff_list insert(unsigned int pos, aff el) const;
358
  inline int n_aff() const;
359
  inline aff_list reverse() const;
360
  inline aff_list set_aff(int index, aff el) const;
361
  inline int size() const;
362
  inline aff_list swap(unsigned int pos1, unsigned int pos2) const;
363
};
364
365
// declarations for isl::ast_build
366
inline ast_build manage(__isl_take isl_ast_build *ptr);
367
inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
368
369
class ast_build {
370
  friend inline ast_build manage(__isl_take isl_ast_build *ptr);
371
  friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
372
373
  isl_ast_build *ptr = nullptr;
374
375
  inline explicit ast_build(__isl_take isl_ast_build *ptr);
376
377
public:
378
  inline /* implicit */ ast_build();
379
  inline /* implicit */ ast_build(const ast_build &obj);
380
  inline /* implicit */ ast_build(std::nullptr_t);
381
  inline explicit ast_build(ctx ctx);
382
  inline ast_build &operator=(ast_build obj);
383
  inline ~ast_build();
384
  inline __isl_give isl_ast_build *copy() const &;
385
  inline __isl_give isl_ast_build *copy() && = delete;
386
  inline __isl_keep isl_ast_build *get() const;
387
  inline __isl_give isl_ast_build *release();
388
  inline bool is_null() const;
389
  inline explicit operator bool() const;
390
  inline ctx get_ctx() const;
391
392
  inline ast_expr access_from(pw_multi_aff pma) const;
393
  inline ast_expr access_from(multi_pw_aff mpa) const;
394
  inline ast_node ast_from_schedule(union_map schedule) const;
395
  inline ast_expr call_from(pw_multi_aff pma) const;
396
  inline ast_expr call_from(multi_pw_aff mpa) const;
397
  inline ast_expr expr_from(set set) const;
398
  inline ast_expr expr_from(pw_aff pa) const;
399
  static inline ast_build from_context(set set);
400
  inline union_map get_schedule() const;
401
  inline space get_schedule_space() const;
402
  inline ast_node node_from_schedule(schedule schedule) const;
403
  inline ast_node node_from_schedule_map(union_map schedule) const;
404
  inline ast_build restrict(set set) const;
405
};
406
407
// declarations for isl::ast_expr
408
inline ast_expr manage(__isl_take isl_ast_expr *ptr);
409
inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
410
411
class ast_expr {
412
  friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
413
  friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
414
415
  isl_ast_expr *ptr = nullptr;
416
417
  inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
418
419
public:
420
  inline /* implicit */ ast_expr();
421
  inline /* implicit */ ast_expr(const ast_expr &obj);
422
  inline /* implicit */ ast_expr(std::nullptr_t);
423
  inline ast_expr &operator=(ast_expr obj);
424
  inline ~ast_expr();
425
  inline __isl_give isl_ast_expr *copy() const &;
426
  inline __isl_give isl_ast_expr *copy() && = delete;
427
  inline __isl_keep isl_ast_expr *get() const;
428
  inline __isl_give isl_ast_expr *release();
429
  inline bool is_null() const;
430
  inline explicit operator bool() const;
431
  inline ctx get_ctx() const;
432
  inline std::string to_str() const;
433
  inline void dump() const;
434
435
  inline ast_expr access(ast_expr_list indices) const;
436
  inline ast_expr add(ast_expr expr2) const;
437
  inline ast_expr address_of() const;
438
  inline ast_expr call(ast_expr_list arguments) const;
439
  inline ast_expr div(ast_expr expr2) const;
440
  inline ast_expr eq(ast_expr expr2) const;
441
  static inline ast_expr from_id(id id);
442
  static inline ast_expr from_val(val v);
443
  inline ast_expr ge(ast_expr expr2) const;
444
  inline id get_id() const;
445
  inline ast_expr get_op_arg(int pos) const;
446
  inline int get_op_n_arg() const;
447
  inline val get_val() const;
448
  inline ast_expr gt(ast_expr expr2) const;
449
  inline boolean is_equal(const ast_expr &expr2) const;
450
  inline ast_expr le(ast_expr expr2) const;
451
  inline ast_expr lt(ast_expr expr2) const;
452
  inline ast_expr mul(ast_expr expr2) const;
453
  inline ast_expr neg() const;
454
  inline ast_expr pdiv_q(ast_expr expr2) const;
455
  inline ast_expr pdiv_r(ast_expr expr2) const;
456
  inline ast_expr set_op_arg(int pos, ast_expr arg) const;
457
  inline ast_expr sub(ast_expr expr2) const;
458
  inline ast_expr substitute_ids(id_to_ast_expr id2expr) const;
459
  inline std::string to_C_str() const;
460
};
461
462
// declarations for isl::ast_expr_list
463
inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
464
inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
465
466
class ast_expr_list {
467
  friend inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
468
  friend inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
469
470
  isl_ast_expr_list *ptr = nullptr;
471
472
  inline explicit ast_expr_list(__isl_take isl_ast_expr_list *ptr);
473
474
public:
475
  inline /* implicit */ ast_expr_list();
476
  inline /* implicit */ ast_expr_list(const ast_expr_list &obj);
477
  inline /* implicit */ ast_expr_list(std::nullptr_t);
478
  inline ast_expr_list &operator=(ast_expr_list obj);
479
  inline ~ast_expr_list();
480
  inline __isl_give isl_ast_expr_list *copy() const &;
481
  inline __isl_give isl_ast_expr_list *copy() && = delete;
482
  inline __isl_keep isl_ast_expr_list *get() const;
483
  inline __isl_give isl_ast_expr_list *release();
484
  inline bool is_null() const;
485
  inline explicit operator bool() const;
486
  inline ctx get_ctx() const;
487
  inline void dump() const;
488
489
  inline ast_expr_list add(ast_expr el) const;
490
  static inline ast_expr_list alloc(ctx ctx, int n);
491
  inline ast_expr_list concat(ast_expr_list list2) const;
492
  inline ast_expr_list drop(unsigned int first, unsigned int n) const;
493
  inline stat foreach(const std::function<stat(ast_expr)> &fn) const;
494
  static inline ast_expr_list from_ast_expr(ast_expr el);
495
  inline ast_expr get_ast_expr(int index) const;
496
  inline ast_expr get_at(int index) const;
497
  inline ast_expr_list insert(unsigned int pos, ast_expr el) const;
498
  inline int n_ast_expr() const;
499
  inline ast_expr_list reverse() const;
500
  inline ast_expr_list set_ast_expr(int index, ast_expr el) const;
501
  inline int size() const;
502
  inline ast_expr_list swap(unsigned int pos1, unsigned int pos2) const;
503
};
504
505
// declarations for isl::ast_node
506
inline ast_node manage(__isl_take isl_ast_node *ptr);
507
inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
508
509
class ast_node {
510
  friend inline ast_node manage(__isl_take isl_ast_node *ptr);
511
  friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
512
513
  isl_ast_node *ptr = nullptr;
514
515
  inline explicit ast_node(__isl_take isl_ast_node *ptr);
516
517
public:
518
  inline /* implicit */ ast_node();
519
  inline /* implicit */ ast_node(const ast_node &obj);
520
  inline /* implicit */ ast_node(std::nullptr_t);
521
  inline ast_node &operator=(ast_node obj);
522
  inline ~ast_node();
523
  inline __isl_give isl_ast_node *copy() const &;
524
  inline __isl_give isl_ast_node *copy() && = delete;
525
  inline __isl_keep isl_ast_node *get() const;
526
  inline __isl_give isl_ast_node *release();
527
  inline bool is_null() const;
528
  inline explicit operator bool() const;
529
  inline ctx get_ctx() const;
530
  inline std::string to_str() const;
531
  inline void dump() const;
532
533
  static inline ast_node alloc_user(ast_expr expr);
534
  inline ast_node_list block_get_children() const;
535
  inline ast_node for_get_body() const;
536
  inline ast_expr for_get_cond() const;
537
  inline ast_expr for_get_inc() const;
538
  inline ast_expr for_get_init() const;
539
  inline ast_expr for_get_iterator() const;
540
  inline boolean for_is_degenerate() const;
541
  inline id get_annotation() const;
542
  inline ast_expr if_get_cond() const;
543
  inline ast_node if_get_else() const;
544
  inline ast_node if_get_then() const;
545
  inline boolean if_has_else() const;
546
  inline id mark_get_id() const;
547
  inline ast_node mark_get_node() const;
548
  inline ast_node set_annotation(id annotation) const;
549
  inline std::string to_C_str() const;
550
  inline ast_expr user_get_expr() const;
551
};
552
553
// declarations for isl::ast_node_list
554
inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
555
inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
556
557
class ast_node_list {
558
  friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
559
  friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
560
561
  isl_ast_node_list *ptr = nullptr;
562
563
  inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
564
565
public:
566
  inline /* implicit */ ast_node_list();
567
  inline /* implicit */ ast_node_list(const ast_node_list &obj);
568
  inline /* implicit */ ast_node_list(std::nullptr_t);
569
  inline ast_node_list &operator=(ast_node_list obj);
570
  inline ~ast_node_list();
571
  inline __isl_give isl_ast_node_list *copy() const &;
572
  inline __isl_give isl_ast_node_list *copy() && = delete;
573
  inline __isl_keep isl_ast_node_list *get() const;
574
  inline __isl_give isl_ast_node_list *release();
575
  inline bool is_null() const;
576
  inline explicit operator bool() const;
577
  inline ctx get_ctx() const;
578
  inline void dump() const;
579
580
  inline ast_node_list add(ast_node el) const;
581
  static inline ast_node_list alloc(ctx ctx, int n);
582
  inline ast_node_list concat(ast_node_list list2) const;
583
  inline ast_node_list drop(unsigned int first, unsigned int n) const;
584
  inline stat foreach(const std::function<stat(ast_node)> &fn) const;
585
  static inline ast_node_list from_ast_node(ast_node el);
586
  inline ast_node get_ast_node(int index) const;
587
  inline ast_node get_at(int index) const;
588
  inline ast_node_list insert(unsigned int pos, ast_node el) const;
589
  inline int n_ast_node() const;
590
  inline ast_node_list reverse() const;
591
  inline ast_node_list set_ast_node(int index, ast_node el) const;
592
  inline int size() const;
593
  inline ast_node_list swap(unsigned int pos1, unsigned int pos2) const;
594
};
595
596
// declarations for isl::basic_map
597
inline basic_map manage(__isl_take isl_basic_map *ptr);
598
inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
599
600
class basic_map {
601
  friend inline basic_map manage(__isl_take isl_basic_map *ptr);
602
  friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
603
604
  isl_basic_map *ptr = nullptr;
605
606
  inline explicit basic_map(__isl_take isl_basic_map *ptr);
607
608
public:
609
  inline /* implicit */ basic_map();
610
  inline /* implicit */ basic_map(const basic_map &obj);
611
  inline /* implicit */ basic_map(std::nullptr_t);
612
  inline explicit basic_map(ctx ctx, const std::string &str);
613
  inline basic_map &operator=(basic_map obj);
614
  inline ~basic_map();
615
  inline __isl_give isl_basic_map *copy() const &;
616
  inline __isl_give isl_basic_map *copy() && = delete;
617
  inline __isl_keep isl_basic_map *get() const;
618
  inline __isl_give isl_basic_map *release();
619
  inline bool is_null() const;
620
  inline explicit operator bool() const;
621
  inline ctx get_ctx() const;
622
  inline std::string to_str() const;
623
  inline void dump() const;
624
625
  inline basic_map add_constraint(constraint constraint) const;
626
  inline basic_map add_dims(isl::dim type, unsigned int n) const;
627
  inline basic_map affine_hull() const;
628
  inline basic_map align_params(space model) const;
629
  inline basic_map apply_domain(basic_map bmap2) const;
630
  inline basic_map apply_range(basic_map bmap2) const;
631
  inline boolean can_curry() const;
632
  inline boolean can_uncurry() const;
633
  inline boolean can_zip() const;
634
  inline basic_map curry() const;
635
  inline basic_set deltas() const;
636
  inline basic_map deltas_map() const;
637
  inline basic_map detect_equalities() const;
638
  inline unsigned int dim(isl::dim type) const;
639
  inline basic_set domain() const;
640
  inline basic_map domain_map() const;
641
  inline basic_map domain_product(basic_map bmap2) const;
642
  inline basic_map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
643
  inline basic_map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
644
  inline basic_map drop_unused_params() const;
645
  inline basic_map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
646
  static inline basic_map empty(space space);
647
  static inline basic_map equal(space dim, unsigned int n_equal);
648
  inline mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
649
  inline basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
650
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
651
  inline basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
652
  inline basic_map fix_val(isl::dim type, unsigned int pos, val v) const;
653
  inline basic_map flat_product(basic_map bmap2) const;
654
  inline basic_map flat_range_product(basic_map bmap2) const;
655
  inline basic_map flatten() const;
656
  inline basic_map flatten_domain() const;
657
  inline basic_map flatten_range() const;
658
  inline stat foreach_constraint(const std::function<stat(constraint)> &fn) const;
659
  static inline basic_map from_aff(aff aff);
660
  static inline basic_map from_aff_list(space domain_space, aff_list list);
661
  static inline basic_map from_constraint(constraint constraint);
662
  static inline basic_map from_domain(basic_set bset);
663
  static inline basic_map from_domain_and_range(basic_set domain, basic_set range);
664
  static inline basic_map from_multi_aff(multi_aff maff);
665
  static inline basic_map from_qpolynomial(qpolynomial qp);
666
  static inline basic_map from_range(basic_set bset);
667
  inline constraint_list get_constraint_list() const;
668
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
669
  inline aff get_div(int pos) const;
670
  inline local_space get_local_space() const;
671
  inline space get_space() const;
672
  inline std::string get_tuple_name(isl::dim type) const;
673
  inline basic_map gist(basic_map context) const;
674
  inline basic_map gist_domain(basic_set context) const;
675
  inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
676
  static inline basic_map identity(space dim);
677
  inline boolean image_is_bounded() const;
678
  inline mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
679
  inline basic_map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
680
  inline basic_map intersect(basic_map bmap2) const;
681
  inline basic_map intersect_domain(basic_set bset) const;
682
  inline basic_map intersect_range(basic_set bset) const;
683
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
684
  inline boolean is_disjoint(const basic_map &bmap2) const;
685
  inline boolean is_empty() const;
686
  inline boolean is_equal(const basic_map &bmap2) const;
687
  inline boolean is_rational() const;
688
  inline boolean is_single_valued() const;
689
  inline boolean is_strict_subset(const basic_map &bmap2) const;
690
  inline boolean is_subset(const basic_map &bmap2) const;
691
  inline boolean is_universe() const;
692
  static inline basic_map less_at(space dim, unsigned int pos);
693
  inline map lexmax() const;
694
  inline map lexmin() const;
695
  inline pw_multi_aff lexmin_pw_multi_aff() const;
696
  inline basic_map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
697
  static inline basic_map more_at(space dim, unsigned int pos);
698
  inline basic_map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
699
  inline int n_constraint() const;
700
  static inline basic_map nat_universe(space dim);
701
  inline basic_map neg() const;
702
  inline basic_map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
703
  inline basic_map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
704
  inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
705
  inline boolean plain_is_empty() const;
706
  inline boolean plain_is_universe() const;
707
  inline basic_map preimage_domain_multi_aff(multi_aff ma) const;
708
  inline basic_map preimage_range_multi_aff(multi_aff ma) const;
709
  inline basic_map product(basic_map bmap2) const;
710
  inline basic_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
711
  inline basic_set range() const;
712
  inline basic_map range_map() const;
713
  inline basic_map range_product(basic_map bmap2) const;
714
  inline basic_map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
715
  inline basic_map remove_divs() const;
716
  inline basic_map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
717
  inline basic_map remove_redundancies() const;
718
  inline basic_map reverse() const;
719
  inline basic_map sample() const;
720
  inline basic_map set_tuple_id(isl::dim type, id id) const;
721
  inline basic_map set_tuple_name(isl::dim type, const std::string &s) const;
722
  inline basic_map sum(basic_map bmap2) const;
723
  inline basic_map uncurry() const;
724
  inline map unite(basic_map bmap2) const;
725
  static inline basic_map universe(space space);
726
  inline basic_map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
727
  inline basic_set wrap() const;
728
  inline basic_map zip() const;
729
};
730
731
// declarations for isl::basic_map_list
732
inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
733
inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
734
735
class basic_map_list {
736
  friend inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
737
  friend inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
738
739
  isl_basic_map_list *ptr = nullptr;
740
741
  inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
742
743
public:
744
  inline /* implicit */ basic_map_list();
745
  inline /* implicit */ basic_map_list(const basic_map_list &obj);
746
  inline /* implicit */ basic_map_list(std::nullptr_t);
747
  inline basic_map_list &operator=(basic_map_list obj);
748
  inline ~basic_map_list();
749
  inline __isl_give isl_basic_map_list *copy() const &;
750
  inline __isl_give isl_basic_map_list *copy() && = delete;
751
  inline __isl_keep isl_basic_map_list *get() const;
752
  inline __isl_give isl_basic_map_list *release();
753
  inline bool is_null() const;
754
  inline explicit operator bool() const;
755
  inline ctx get_ctx() const;
756
  inline void dump() const;
757
758
  inline basic_map_list add(basic_map el) const;
759
  static inline basic_map_list alloc(ctx ctx, int n);
760
  inline basic_map_list concat(basic_map_list list2) const;
761
  inline basic_map_list drop(unsigned int first, unsigned int n) const;
762
  inline stat foreach(const std::function<stat(basic_map)> &fn) const;
763
  static inline basic_map_list from_basic_map(basic_map el);
764
  inline basic_map get_at(int index) const;
765
  inline basic_map get_basic_map(int index) const;
766
  inline basic_map_list insert(unsigned int pos, basic_map el) const;
767
  inline int n_basic_map() const;
768
  inline basic_map_list reverse() const;
769
  inline basic_map_list set_basic_map(int index, basic_map el) const;
770
  inline int size() const;
771
  inline basic_map_list swap(unsigned int pos1, unsigned int pos2) const;
772
};
773
774
// declarations for isl::basic_set
775
inline basic_set manage(__isl_take isl_basic_set *ptr);
776
inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
777
778
class basic_set {
779
  friend inline basic_set manage(__isl_take isl_basic_set *ptr);
780
  friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
781
782
  isl_basic_set *ptr = nullptr;
783
784
  inline explicit basic_set(__isl_take isl_basic_set *ptr);
785
786
public:
787
  inline /* implicit */ basic_set();
788
  inline /* implicit */ basic_set(const basic_set &obj);
789
  inline /* implicit */ basic_set(std::nullptr_t);
790
  inline explicit basic_set(ctx ctx, const std::string &str);
791
  inline /* implicit */ basic_set(point pnt);
792
  inline basic_set &operator=(basic_set obj);
793
  inline ~basic_set();
794
  inline __isl_give isl_basic_set *copy() const &;
795
  inline __isl_give isl_basic_set *copy() && = delete;
796
  inline __isl_keep isl_basic_set *get() const;
797
  inline __isl_give isl_basic_set *release();
798
  inline bool is_null() const;
799
  inline explicit operator bool() const;
800
  inline ctx get_ctx() const;
801
  inline std::string to_str() const;
802
  inline void dump() const;
803
804
  inline basic_set affine_hull() const;
805
  inline basic_set align_params(space model) const;
806
  inline basic_set apply(basic_map bmap) const;
807
  static inline basic_set box_from_points(point pnt1, point pnt2);
808
  inline basic_set coefficients() const;
809
  inline basic_set detect_equalities() const;
810
  inline unsigned int dim(isl::dim type) const;
811
  inline val dim_max_val(int pos) const;
812
  inline basic_set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
813
  inline basic_set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
814
  inline basic_set drop_unused_params() const;
815
  inline basic_set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
816
  static inline basic_set empty(space space);
817
  inline mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
818
  inline basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
819
  inline basic_set fix_val(isl::dim type, unsigned int pos, val v) const;
820
  inline basic_set flat_product(basic_set bset2) const;
821
  inline basic_set flatten() const;
822
  inline stat foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<stat(constraint, constraint, basic_set)> &fn) const;
823
  inline stat foreach_constraint(const std::function<stat(constraint)> &fn) const;
824
  static inline basic_set from_constraint(constraint constraint);
825
  static inline basic_set from_multi_aff(multi_aff ma);
826
  inline basic_set from_params() const;
827
  inline constraint_list get_constraint_list() const;
828
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
829
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
830
  inline aff get_div(int pos) const;
831
  inline local_space get_local_space() const;
832
  inline space get_space() const;
833
  inline std::string get_tuple_name() const;
834
  inline basic_set gist(basic_set context) const;
835
  inline mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
836
  inline basic_set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
837
  inline basic_set intersect(basic_set bset2) const;
838
  inline basic_set intersect_params(basic_set bset2) const;
839
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
840
  inline boolean is_bounded() const;
841
  inline boolean is_disjoint(const basic_set &bset2) const;
842
  inline boolean is_empty() const;
843
  inline boolean is_equal(const basic_set &bset2) const;
844
  inline int is_rational() const;
845
  inline boolean is_subset(const basic_set &bset2) const;
846
  inline boolean is_universe() const;
847
  inline boolean is_wrapping() const;
848
  inline set lexmax() const;
849
  inline set lexmin() const;
850
  inline basic_set lower_bound_val(isl::dim type, unsigned int pos, val value) const;
851
  inline val max_val(const aff &obj) const;
852
  inline basic_set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
853
  inline int n_constraint() const;
854
  inline unsigned int n_dim() const;
855
  static inline basic_set nat_universe(space dim);
856
  inline basic_set neg() const;
857
  inline basic_set params() const;
858
  inline boolean plain_is_empty() const;
859
  inline boolean plain_is_equal(const basic_set &bset2) const;
860
  inline boolean plain_is_universe() const;
861
  static inline basic_set positive_orthant(space space);
862
  inline basic_set preimage_multi_aff(multi_aff ma) const;
863
  inline basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
864
  inline mat reduced_basis() const;
865
  inline basic_set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
866
  inline basic_set remove_divs() const;
867
  inline basic_set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
868
  inline basic_set remove_redundancies() const;
869
  inline basic_set remove_unknown_divs() const;
870
  inline basic_set sample() const;
871
  inline point sample_point() const;
872
  inline basic_set set_tuple_id(id id) const;
873
  inline basic_set set_tuple_name(const std::string &s) const;
874
  inline basic_set solutions() const;
875
  inline set unite(basic_set bset2) const;
876
  static inline basic_set universe(space space);
877
  inline basic_map unwrap() const;
878
  inline basic_set upper_bound_val(isl::dim type, unsigned int pos, val value) const;
879
};
880
881
// declarations for isl::basic_set_list
882
inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
883
inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
884
885
class basic_set_list {
886
  friend inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
887
  friend inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
888
889
  isl_basic_set_list *ptr = nullptr;
890
891
  inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
892
893
public:
894
  inline /* implicit */ basic_set_list();
895
  inline /* implicit */ basic_set_list(const basic_set_list &obj);
896
  inline /* implicit */ basic_set_list(std::nullptr_t);
897
  inline basic_set_list &operator=(basic_set_list obj);
898
  inline ~basic_set_list();
899
  inline __isl_give isl_basic_set_list *copy() const &;
900
  inline __isl_give isl_basic_set_list *copy() && = delete;
901
  inline __isl_keep isl_basic_set_list *get() const;
902
  inline __isl_give isl_basic_set_list *release();
903
  inline bool is_null() const;
904
  inline explicit operator bool() const;
905
  inline ctx get_ctx() const;
906
  inline void dump() const;
907
908
  inline basic_set_list add(basic_set el) const;
909
  static inline basic_set_list alloc(ctx ctx, int n);
910
  inline basic_set_list coefficients() const;
911
  inline basic_set_list concat(basic_set_list list2) const;
912
  inline basic_set_list drop(unsigned int first, unsigned int n) const;
913
  inline stat foreach(const std::function<stat(basic_set)> &fn) const;
914
  static inline basic_set_list from_basic_set(basic_set el);
915
  inline basic_set get_at(int index) const;
916
  inline basic_set get_basic_set(int index) const;
917
  inline basic_set_list insert(unsigned int pos, basic_set el) const;
918
  inline int n_basic_set() const;
919
  inline basic_set_list reverse() const;
920
  inline basic_set_list set_basic_set(int index, basic_set el) const;
921
  inline int size() const;
922
  inline basic_set_list swap(unsigned int pos1, unsigned int pos2) const;
923
};
924
925
// declarations for isl::constraint
926
inline constraint manage(__isl_take isl_constraint *ptr);
927
inline constraint manage_copy(__isl_keep isl_constraint *ptr);
928
929
class constraint {
930
  friend inline constraint manage(__isl_take isl_constraint *ptr);
931
  friend inline constraint manage_copy(__isl_keep isl_constraint *ptr);
932
933
  isl_constraint *ptr = nullptr;
934
935
  inline explicit constraint(__isl_take isl_constraint *ptr);
936
937
public:
938
  inline /* implicit */ constraint();
939
  inline /* implicit */ constraint(const constraint &obj);
940
  inline /* implicit */ constraint(std::nullptr_t);
941
  inline constraint &operator=(constraint obj);
942
  inline ~constraint();
943
  inline __isl_give isl_constraint *copy() const &;
944
  inline __isl_give isl_constraint *copy() && = delete;
945
  inline __isl_keep isl_constraint *get() const;
946
  inline __isl_give isl_constraint *release();
947
  inline bool is_null() const;
948
  inline explicit operator bool() const;
949
  inline ctx get_ctx() const;
950
  inline void dump() const;
951
952
  static inline constraint alloc_equality(local_space ls);
953
  static inline constraint alloc_inequality(local_space ls);
954
  inline int cmp_last_non_zero(const constraint &c2) const;
955
  inline aff get_aff() const;
956
  inline aff get_bound(isl::dim type, int pos) const;
957
  inline val get_coefficient_val(isl::dim type, int pos) const;
958
  inline val get_constant_val() const;
959
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
960
  inline aff get_div(int pos) const;
961
  inline local_space get_local_space() const;
962
  inline space get_space() const;
963
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
964
  inline int is_div_constraint() const;
965
  inline boolean is_lower_bound(isl::dim type, unsigned int pos) const;
966
  inline boolean is_upper_bound(isl::dim type, unsigned int pos) const;
967
  inline int plain_cmp(const constraint &c2) const;
968
  inline constraint set_coefficient_si(isl::dim type, int pos, int v) const;
969
  inline constraint set_coefficient_val(isl::dim type, int pos, val v) const;
970
  inline constraint set_constant_si(int v) const;
971
  inline constraint set_constant_val(val v) const;
972
};
973
974
// declarations for isl::constraint_list
975
inline constraint_list manage(__isl_take isl_constraint_list *ptr);
976
inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
977
978
class constraint_list {
979
  friend inline constraint_list manage(__isl_take isl_constraint_list *ptr);
980
  friend inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
981
982
  isl_constraint_list *ptr = nullptr;
983
984
  inline explicit constraint_list(__isl_take isl_constraint_list *ptr);
985
986
public:
987
  inline /* implicit */ constraint_list();
988
  inline /* implicit */ constraint_list(const constraint_list &obj);
989
  inline /* implicit */ constraint_list(std::nullptr_t);
990
  inline constraint_list &operator=(constraint_list obj);
991
  inline ~constraint_list();
992
  inline __isl_give isl_constraint_list *copy() const &;
993
  inline __isl_give isl_constraint_list *copy() && = delete;
994
  inline __isl_keep isl_constraint_list *get() const;
995
  inline __isl_give isl_constraint_list *release();
996
  inline bool is_null() const;
997
  inline explicit operator bool() const;
998
  inline ctx get_ctx() const;
999
  inline void dump() const;
1000
1001
  inline constraint_list add(constraint el) const;
1002
  static inline constraint_list alloc(ctx ctx, int n);
1003
  inline constraint_list concat(constraint_list list2) const;
1004
  inline constraint_list drop(unsigned int first, unsigned int n) const;
1005
  inline stat foreach(const std::function<stat(constraint)> &fn) const;
1006
  static inline constraint_list from_constraint(constraint el);
1007
  inline constraint get_at(int index) const;
1008
  inline constraint get_constraint(int index) const;
1009
  inline constraint_list insert(unsigned int pos, constraint el) const;
1010
  inline int n_constraint() const;
1011
  inline constraint_list reverse() const;
1012
  inline constraint_list set_constraint(int index, constraint el) const;
1013
  inline int size() const;
1014
  inline constraint_list swap(unsigned int pos1, unsigned int pos2) const;
1015
};
1016
1017
// declarations for isl::fixed_box
1018
inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1019
inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1020
1021
class fixed_box {
1022
  friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1023
  friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1024
1025
  isl_fixed_box *ptr = nullptr;
1026
1027
  inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1028
1029
public:
1030
  inline /* implicit */ fixed_box();
1031
  inline /* implicit */ fixed_box(const fixed_box &obj);
1032
  inline /* implicit */ fixed_box(std::nullptr_t);
1033
  inline fixed_box &operator=(fixed_box obj);
1034
  inline ~fixed_box();
1035
  inline __isl_give isl_fixed_box *copy() const &;
1036
  inline __isl_give isl_fixed_box *copy() && = delete;
1037
  inline __isl_keep isl_fixed_box *get() const;
1038
  inline __isl_give isl_fixed_box *release();
1039
  inline bool is_null() const;
1040
  inline explicit operator bool() const;
1041
  inline ctx get_ctx() const;
1042
1043
  inline multi_aff get_offset() const;
1044
  inline multi_val get_size() const;
1045
  inline space get_space() const;
1046
  inline boolean is_valid() const;
1047
};
1048
1049
// declarations for isl::id
1050
inline id manage(__isl_take isl_id *ptr);
1051
inline id manage_copy(__isl_keep isl_id *ptr);
1052
1053
class id {
1054
  friend inline id manage(__isl_take isl_id *ptr);
1055
  friend inline id manage_copy(__isl_keep isl_id *ptr);
1056
1057
  isl_id *ptr = nullptr;
1058
1059
  inline explicit id(__isl_take isl_id *ptr);
1060
1061
public:
1062
  inline /* implicit */ id();
1063
  inline /* implicit */ id(const id &obj);
1064
  inline /* implicit */ id(std::nullptr_t);
1065
  inline id &operator=(id obj);
1066
  inline ~id();
1067
  inline __isl_give isl_id *copy() const &;
1068
  inline __isl_give isl_id *copy() && = delete;
1069
  inline __isl_keep isl_id *get() const;
1070
  inline __isl_give isl_id *release();
1071
  inline bool is_null() const;
1072
  inline explicit operator bool() const;
1073
  inline ctx get_ctx() const;
1074
  inline std::string to_str() const;
1075
  inline void dump() const;
1076
1077
  static inline id alloc(ctx ctx, const std::string &name, void * user);
1078
  inline uint32_t get_hash() const;
1079
  inline std::string get_name() const;
1080
  inline void * get_user() const;
1081
};
1082
1083
// declarations for isl::id_list
1084
inline id_list manage(__isl_take isl_id_list *ptr);
1085
inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1086
1087
class id_list {
1088
  friend inline id_list manage(__isl_take isl_id_list *ptr);
1089
  friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1090
1091
  isl_id_list *ptr = nullptr;
1092
1093
  inline explicit id_list(__isl_take isl_id_list *ptr);
1094
1095
public:
1096
  inline /* implicit */ id_list();
1097
  inline /* implicit */ id_list(const id_list &obj);
1098
  inline /* implicit */ id_list(std::nullptr_t);
1099
  inline id_list &operator=(id_list obj);
1100
  inline ~id_list();
1101
  inline __isl_give isl_id_list *copy() const &;
1102
  inline __isl_give isl_id_list *copy() && = delete;
1103
  inline __isl_keep isl_id_list *get() const;
1104
  inline __isl_give isl_id_list *release();
1105
  inline bool is_null() const;
1106
  inline explicit operator bool() const;
1107
  inline ctx get_ctx() const;
1108
  inline void dump() const;
1109
1110
  inline id_list add(id el) const;
1111
  static inline id_list alloc(ctx ctx, int n);
1112
  inline id_list concat(id_list list2) const;
1113
  inline id_list drop(unsigned int first, unsigned int n) const;
1114
  inline stat foreach(const std::function<stat(id)> &fn) const;
1115
  static inline id_list from_id(id el);
1116
  inline id get_at(int index) const;
1117
  inline id get_id(int index) const;
1118
  inline id_list insert(unsigned int pos, id el) const;
1119
  inline int n_id() const;
1120
  inline id_list reverse() const;
1121
  inline id_list set_id(int index, id el) const;
1122
  inline int size() const;
1123
  inline id_list swap(unsigned int pos1, unsigned int pos2) const;
1124
};
1125
1126
// declarations for isl::id_to_ast_expr
1127
inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1128
inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1129
1130
class id_to_ast_expr {
1131
  friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1132
  friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1133
1134
  isl_id_to_ast_expr *ptr = nullptr;
1135
1136
  inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1137
1138
public:
1139
  inline /* implicit */ id_to_ast_expr();
1140
  inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
1141
  inline /* implicit */ id_to_ast_expr(std::nullptr_t);
1142
  inline id_to_ast_expr &operator=(id_to_ast_expr obj);
1143
  inline ~id_to_ast_expr();
1144
  inline __isl_give isl_id_to_ast_expr *copy() const &;
1145
  inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1146
  inline __isl_keep isl_id_to_ast_expr *get() const;
1147
  inline __isl_give isl_id_to_ast_expr *release();
1148
  inline bool is_null() const;
1149
  inline explicit operator bool() const;
1150
  inline ctx get_ctx() const;
1151
  inline void dump() const;
1152
1153
  static inline id_to_ast_expr alloc(ctx ctx, int min_size);
1154
  inline id_to_ast_expr drop(id key) const;
1155
  inline stat foreach(const std::function<stat(id, ast_expr)> &fn) const;
1156
  inline ast_expr get(id key) const;
1157
  inline boolean has(const id &key) const;
1158
  inline id_to_ast_expr set(id key, ast_expr val) const;
1159
};
1160
1161
// declarations for isl::local_space
1162
inline local_space manage(__isl_take isl_local_space *ptr);
1163
inline local_space manage_copy(__isl_keep isl_local_space *ptr);
1164
1165
class local_space {
1166
  friend inline local_space manage(__isl_take isl_local_space *ptr);
1167
  friend inline local_space manage_copy(__isl_keep isl_local_space *ptr);
1168
1169
  isl_local_space *ptr = nullptr;
1170
1171
  inline explicit local_space(__isl_take isl_local_space *ptr);
1172
1173
public:
1174
  inline /* implicit */ local_space();
1175
  inline /* implicit */ local_space(const local_space &obj);
1176
  inline /* implicit */ local_space(std::nullptr_t);
1177
  inline explicit local_space(space dim);
1178
  inline local_space &operator=(local_space obj);
1179
  inline ~local_space();
1180
  inline __isl_give isl_local_space *copy() const &;
1181
  inline __isl_give isl_local_space *copy() && = delete;
1182
  inline __isl_keep isl_local_space *get() const;
1183
  inline __isl_give isl_local_space *release();
1184
  inline bool is_null() const;
1185
  inline explicit operator bool() const;
1186
  inline ctx get_ctx() const;
1187
  inline void dump() const;
1188
1189
  inline local_space add_dims(isl::dim type, unsigned int n) const;
1190
  inline int dim(isl::dim type) const;
1191
  inline local_space domain() const;
1192
  inline local_space drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1193
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1194
  inline local_space flatten_domain() const;
1195
  inline local_space flatten_range() const;
1196
  inline local_space from_domain() const;
1197
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1198
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1199
  inline aff get_div(int pos) const;
1200
  inline space get_space() const;
1201
  inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1202
  inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
1203
  inline local_space insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1204
  inline local_space intersect(local_space ls2) const;
1205
  inline boolean is_equal(const local_space &ls2) const;
1206
  inline boolean is_params() const;
1207
  inline boolean is_set() const;
1208
  inline local_space range() const;
1209
  inline local_space set_dim_id(isl::dim type, unsigned int pos, id id) const;
1210
  inline local_space set_from_params() const;
1211
  inline local_space set_tuple_id(isl::dim type, id id) const;
1212
  inline local_space wrap() const;
1213
};
1214
1215
// declarations for isl::map
1216
inline map manage(__isl_take isl_map *ptr);
1217
inline map manage_copy(__isl_keep isl_map *ptr);
1218
1219
class map {
1220
  friend inline map manage(__isl_take isl_map *ptr);
1221
  friend inline map manage_copy(__isl_keep isl_map *ptr);
1222
1223
  isl_map *ptr = nullptr;
1224
1225
  inline explicit map(__isl_take isl_map *ptr);
1226
1227
public:
1228
  inline /* implicit */ map();
1229
  inline /* implicit */ map(const map &obj);
1230
  inline /* implicit */ map(std::nullptr_t);
1231
  inline explicit map(ctx ctx, const std::string &str);
1232
  inline /* implicit */ map(basic_map bmap);
1233
  inline map &operator=(map obj);
1234
  inline ~map();
1235
  inline __isl_give isl_map *copy() const &;
1236
  inline __isl_give isl_map *copy() && = delete;
1237
  inline __isl_keep isl_map *get() const;
1238
  inline __isl_give isl_map *release();
1239
  inline bool is_null() const;
1240
  inline explicit operator bool() const;
1241
  inline ctx get_ctx() const;
1242
  inline std::string to_str() const;
1243
  inline void dump() const;
1244
1245
  inline map add_constraint(constraint constraint) const;
1246
  inline map add_dims(isl::dim type, unsigned int n) const;
1247
  inline basic_map affine_hull() const;
1248
  inline map align_params(space model) const;
1249
  inline map apply_domain(map map2) const;
1250
  inline map apply_range(map map2) const;
1251
  inline boolean can_curry() const;
1252
  inline boolean can_range_curry() const;
1253
  inline boolean can_uncurry() const;
1254
  inline boolean can_zip() const;
1255
  inline map coalesce() const;
1256
  inline map complement() const;
1257
  inline basic_map convex_hull() const;
1258
  inline map curry() const;
1259
  inline set deltas() const;
1260
  inline map deltas_map() const;
1261
  inline map detect_equalities() const;
1262
  inline unsigned int dim(isl::dim type) const;
1263
  inline pw_aff dim_max(int pos) const;
1264
  inline pw_aff dim_min(int pos) const;
1265
  inline set domain() const;
1266
  inline map domain_factor_domain() const;
1267
  inline map domain_factor_range() const;
1268
  inline boolean domain_is_wrapping() const;
1269
  inline map domain_map() const;
1270
  inline map domain_product(map map2) const;
1271
  inline map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1272
  inline map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1273
  inline map drop_unused_params() const;
1274
  inline map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1275
  static inline map empty(space space);
1276
  inline map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1277
  inline map factor_domain() const;
1278
  inline map factor_range() const;
1279
  inline int find_dim_by_id(isl::dim type, const id &id) const;
1280
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1281
  inline map fix_si(isl::dim type, unsigned int pos, int value) const;
1282
  inline map fix_val(isl::dim type, unsigned int pos, val v) const;
1283
  inline map fixed_power_val(val exp) const;
1284
  inline map flat_domain_product(map map2) const;
1285
  inline map flat_product(map map2) const;
1286
  inline map flat_range_product(map map2) const;
1287
  inline map flatten() const;
1288
  inline map flatten_domain() const;
1289
  inline map flatten_range() const;
1290
  inline map floordiv_val(val d) const;
1291
  inline stat foreach_basic_map(const std::function<stat(basic_map)> &fn) const;
1292
  static inline map from_aff(aff aff);
1293
  static inline map from_domain(set set);
1294
  static inline map from_domain_and_range(set domain, set range);
1295
  static inline map from_multi_aff(multi_aff maff);
1296
  static inline map from_multi_pw_aff(multi_pw_aff mpa);
1297
  static inline map from_pw_aff(pw_aff pwaff);
1298
  static inline map from_pw_multi_aff(pw_multi_aff pma);
1299
  static inline map from_range(set set);
1300
  static inline map from_union_map(union_map umap);
1301
  inline basic_map_list get_basic_map_list() const;
1302
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1303
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1304
  inline uint32_t get_hash() const;
1305
  inline fixed_box get_range_simple_fixed_box_hull() const;
1306
  inline space get_space() const;
1307
  inline id get_tuple_id(isl::dim type) const;
1308
  inline std::string get_tuple_name(isl::dim type) const;
1309
  inline map gist(map context) const;
1310
  inline map gist_basic_map(basic_map context) const;
1311
  inline map gist_domain(set context) const;
1312
  inline map gist_params(set context) const;
1313
  inline map gist_range(set context) const;
1314
  inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1315
  inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
1316
  inline boolean has_equal_space(const map &map2) const;
1317
  inline boolean has_tuple_id(isl::dim type) const;
1318
  inline boolean has_tuple_name(isl::dim type) const;
1319
  static inline map identity(space dim);
1320
  inline map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1321
  inline map intersect(map map2) const;
1322
  inline map intersect_domain(set set) const;
1323
  inline map intersect_domain_factor_range(map factor) const;
1324
  inline map intersect_params(set params) const;
1325
  inline map intersect_range(set set) const;
1326
  inline map intersect_range_factor_range(map factor) const;
1327
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1328
  inline boolean is_bijective() const;
1329
  inline boolean is_disjoint(const map &map2) const;
1330
  inline boolean is_empty() const;
1331
  inline boolean is_equal(const map &map2) const;
1332
  inline boolean is_identity() const;
1333
  inline boolean is_injective() const;
1334
  inline boolean is_product() const;
1335
  inline boolean is_single_valued() const;
1336
  inline boolean is_strict_subset(const map &map2) const;
1337
  inline boolean is_subset(const map &map2) const;
1338
  inline int is_translation() const;
1339
  static inline map lex_ge(space set_dim);
1340
  static inline map lex_ge_first(space dim, unsigned int n);
1341
  inline map lex_ge_map(map map2) const;
1342
  static inline map lex_gt(space set_dim);
1343
  static inline map lex_gt_first(space dim, unsigned int n);
1344
  inline map lex_gt_map(map map2) const;
1345
  static inline map lex_le(space set_dim);
1346
  static inline map lex_le_first(space dim, unsigned int n);
1347
  inline map lex_le_map(map map2) const;
1348
  static inline map lex_lt(space set_dim);
1349
  static inline map lex_lt_first(space dim, unsigned int n);
1350
  inline map lex_lt_map(map map2) const;
1351
  inline map lexmax() const;
1352
  inline pw_multi_aff lexmax_pw_multi_aff() const;
1353
  inline map lexmin() const;
1354
  inline pw_multi_aff lexmin_pw_multi_aff() const;
1355
  inline map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1356
  inline map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1357
  inline int n_basic_map() const;
1358
  static inline map nat_universe(space dim);
1359
  inline map neg() const;
1360
  inline map oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1361
  inline map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1362
  inline map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1363
  inline map order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1364
  inline map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1365
  inline set params() const;
1366
  inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1367
  inline boolean plain_is_empty() const;
1368
  inline boolean plain_is_equal(const map &map2) const;
1369
  inline boolean plain_is_injective() const;
1370
  inline boolean plain_is_single_valued() const;
1371
  inline boolean plain_is_universe() const;
1372
  inline basic_map plain_unshifted_simple_hull() const;
1373
  inline basic_map polyhedral_hull() const;
1374
  inline map preimage_domain_multi_aff(multi_aff ma) const;
1375
  inline map preimage_domain_multi_pw_aff(multi_pw_aff mpa) const;
1376
  inline map preimage_domain_pw_multi_aff(pw_multi_aff pma) const;
1377
  inline map preimage_range_multi_aff(multi_aff ma) const;
1378
  inline map preimage_range_pw_multi_aff(pw_multi_aff pma) const;
1379
  inline map product(map map2) const;
1380
  inline map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1381
  inline set range() const;
1382
  inline map range_curry() const;
1383
  inline map range_factor_domain() const;
1384
  inline map range_factor_range() const;
1385
  inline boolean range_is_wrapping() const;
1386
  inline map range_map() const;
1387
  inline map range_product(map map2) const;
1388
  inline map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1389
  inline map remove_divs() const;
1390
  inline map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1391
  inline map remove_redundancies() const;
1392
  inline map remove_unknown_divs() const;
1393
  inline map reset_tuple_id(isl::dim type) const;
1394
  inline map reset_user() const;
1395
  inline map reverse() const;
1396
  inline basic_map sample() const;
1397
  inline map set_dim_id(isl::dim type, unsigned int pos, id id) const;
1398
  inline map set_tuple_id(isl::dim type, id id) const;
1399
  inline map set_tuple_name(isl::dim type, const std::string &s) const;
1400
  inline basic_map simple_hull() const;
1401
  inline map subtract(map map2) const;
1402
  inline map subtract_domain(set dom) const;
1403
  inline map subtract_range(set dom) const;
1404
  inline map sum(map map2) const;
1405
  inline map uncurry() const;
1406
  inline map unite(map map2) const;
1407
  static inline map universe(space space);
1408
  inline basic_map unshifted_simple_hull() const;
1409
  inline basic_map unshifted_simple_hull_from_map_list(map_list list) const;
1410
  inline map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1411
  inline set wrap() const;
1412
  inline map zip() const;
1413
};
1414
1415
// declarations for isl::map_list
1416
inline map_list manage(__isl_take isl_map_list *ptr);
1417
inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1418
1419
class map_list {
1420
  friend inline map_list manage(__isl_take isl_map_list *ptr);
1421
  friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1422
1423
  isl_map_list *ptr = nullptr;
1424
1425
  inline explicit map_list(__isl_take isl_map_list *ptr);
1426
1427
public:
1428
  inline /* implicit */ map_list();
1429
  inline /* implicit */ map_list(const map_list &obj);
1430
  inline /* implicit */ map_list(std::nullptr_t);
1431
  inline map_list &operator=(map_list obj);
1432
  inline ~map_list();
1433
  inline __isl_give isl_map_list *copy() const &;
1434
  inline __isl_give isl_map_list *copy() && = delete;
1435
  inline __isl_keep isl_map_list *get() const;
1436
  inline __isl_give isl_map_list *release();
1437
  inline bool is_null() const;
1438
  inline explicit operator bool() const;
1439
  inline ctx get_ctx() const;
1440
  inline void dump() const;
1441
1442
  inline map_list add(map el) const;
1443
  static inline map_list alloc(ctx ctx, int n);
1444
  inline map_list concat(map_list list2) const;
1445
  inline map_list drop(unsigned int first, unsigned int n) const;
1446
  inline stat foreach(const std::function<stat(map)> &fn) const;
1447
  static inline map_list from_map(map el);
1448
  inline map get_at(int index) const;
1449
  inline map get_map(int index) const;
1450
  inline map_list insert(unsigned int pos, map el) const;
1451
  inline int n_map() const;
1452
  inline map_list reverse() const;
1453
  inline map_list set_map(int index, map el) const;
1454
  inline int size() const;
1455
  inline map_list swap(unsigned int pos1, unsigned int pos2) const;
1456
};
1457
1458
// declarations for isl::mat
1459
inline mat manage(__isl_take isl_mat *ptr);
1460
inline mat manage_copy(__isl_keep isl_mat *ptr);
1461
1462
class mat {
1463
  friend inline mat manage(__isl_take isl_mat *ptr);
1464
  friend inline mat manage_copy(__isl_keep isl_mat *ptr);
1465
1466
  isl_mat *ptr = nullptr;
1467
1468
  inline explicit mat(__isl_take isl_mat *ptr);
1469
1470
public:
1471
  inline /* implicit */ mat();
1472
  inline /* implicit */ mat(const mat &obj);
1473
  inline /* implicit */ mat(std::nullptr_t);
1474
  inline mat &operator=(mat obj);
1475
  inline ~mat();
1476
  inline __isl_give isl_mat *copy() const &;
1477
  inline __isl_give isl_mat *copy() && = delete;
1478
  inline __isl_keep isl_mat *get() const;
1479
  inline __isl_give isl_mat *release();
1480
  inline bool is_null() const;
1481
  inline explicit operator bool() const;
1482
  inline ctx get_ctx() const;
1483
  inline void dump() const;
1484
1485
  inline mat add_rows(unsigned int n) const;
1486
  inline mat add_zero_cols(unsigned int n) const;
1487
  inline mat add_zero_rows(unsigned int n) const;
1488
  inline mat aff_direct_sum(mat right) const;
1489
  static inline mat alloc(ctx ctx, unsigned int n_row, unsigned int n_col);
1490
  inline int cols() const;
1491
  inline mat concat(mat bot) const;
1492
  inline mat diagonal(mat mat2) const;
1493
  inline mat drop_cols(unsigned int col, unsigned int n) const;
1494
  inline mat drop_rows(unsigned int row, unsigned int n) const;
1495
  static inline mat from_row_vec(vec vec);
1496
  inline val get_element_val(int row, int col) const;
1497
  inline boolean has_linearly_independent_rows(const mat &mat2) const;
1498
  inline int initial_non_zero_cols() const;
1499
  inline mat insert_cols(unsigned int col, unsigned int n) const;
1500
  inline mat insert_rows(unsigned int row, unsigned int n) const;
1501
  inline mat insert_zero_cols(unsigned int first, unsigned int n) const;
1502
  inline mat insert_zero_rows(unsigned int row, unsigned int n) const;
1503
  inline mat inverse_product(mat right) const;
1504
  inline boolean is_equal(const mat &mat2) const;
1505
  inline mat lin_to_aff() const;
1506
  inline mat move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
1507
  inline mat normalize() const;
1508
  inline mat normalize_row(int row) const;
1509
  inline mat product(mat right) const;
1510
  inline int rank() const;
1511
  inline mat right_inverse() const;
1512
  inline mat right_kernel() const;
1513
  inline mat row_basis() const;
1514
  inline mat row_basis_extension(mat mat2) const;
1515
  inline int rows() const;
1516
  inline mat set_element_si(int row, int col, int v) const;
1517
  inline mat set_element_val(int row, int col, val v) const;
1518
  inline mat swap_cols(unsigned int i, unsigned int j) const;
1519
  inline mat swap_rows(unsigned int i, unsigned int j) const;
1520
  inline mat transpose() const;
1521
  inline mat unimodular_complete(int row) const;
1522
  inline mat vec_concat(vec bot) const;
1523
  inline vec vec_inverse_product(vec vec) const;
1524
  inline vec vec_product(vec vec) const;
1525
};
1526
1527
// declarations for isl::multi_aff
1528
inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1529
inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1530
1531
class multi_aff {
1532
  friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1533
  friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1534
1535
  isl_multi_aff *ptr = nullptr;
1536
1537
  inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
1538
1539
public:
1540
  inline /* implicit */ multi_aff();
1541
  inline /* implicit */ multi_aff(const multi_aff &obj);
1542
  inline /* implicit */ multi_aff(std::nullptr_t);
1543
  inline /* implicit */ multi_aff(aff aff);
1544
  inline explicit multi_aff(ctx ctx, const std::string &str);
1545
  inline multi_aff &operator=(multi_aff obj);
1546
  inline ~multi_aff();
1547
  inline __isl_give isl_multi_aff *copy() const &;
1548
  inline __isl_give isl_multi_aff *copy() && = delete;
1549
  inline __isl_keep isl_multi_aff *get() const;
1550
  inline __isl_give isl_multi_aff *release();
1551
  inline bool is_null() const;
1552
  inline explicit operator bool() const;
1553
  inline ctx get_ctx() const;
1554
  inline std::string to_str() const;
1555
  inline void dump() const;
1556
1557
  inline multi_aff add(multi_aff multi2) const;
1558
  inline multi_aff add_dims(isl::dim type, unsigned int n) const;
1559
  inline multi_aff align_params(space model) const;
1560
  inline unsigned int dim(isl::dim type) const;
1561
  static inline multi_aff domain_map(space space);
1562
  inline multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1563
  inline multi_aff factor_range() const;
1564
  inline int find_dim_by_id(isl::dim type, const id &id) const;
1565
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1566
  inline multi_aff flat_range_product(multi_aff multi2) const;
1567
  inline multi_aff flatten_domain() const;
1568
  inline multi_aff flatten_range() const;
1569
  inline multi_aff floor() const;
1570
  static inline multi_aff from_aff_list(space space, aff_list list);
1571
  inline multi_aff from_range() const;
1572
  inline aff get_aff(int pos) const;
1573
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1574
  inline space get_domain_space() const;
1575
  inline space get_space() const;
1576
  inline id get_tuple_id(isl::dim type) const;
1577
  inline std::string get_tuple_name(isl::dim type) const;
1578
  inline multi_aff gist(set context) const;
1579
  inline multi_aff gist_params(set context) const;
1580
  inline boolean has_tuple_id(isl::dim type) const;
1581
  static inline multi_aff identity(space space);
1582
  inline multi_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1583
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1584
  inline boolean involves_nan() const;
1585
  inline set lex_ge_set(multi_aff ma2) const;
1586
  inline set lex_gt_set(multi_aff ma2) const;
1587
  inline set lex_le_set(multi_aff ma2) const;
1588
  inline set lex_lt_set(multi_aff ma2) const;
1589
  inline multi_aff mod_multi_val(multi_val mv) const;
1590
  inline multi_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1591
  static inline multi_aff multi_val_on_space(space space, multi_val mv);
1592
  inline multi_aff neg() const;
1593
  inline int plain_cmp(const multi_aff &multi2) const;
1594
  inline boolean plain_is_equal(const multi_aff &multi2) const;
1595
  inline multi_aff product(multi_aff multi2) const;
1596
  inline multi_aff project_domain_on_params() const;
1597
  static inline multi_aff project_out_map(space space, isl::dim type, unsigned int first, unsigned int n);
1598
  inline multi_aff pullback(multi_aff ma2) const;
1599
  inline multi_aff range_factor_domain() const;
1600
  inline multi_aff range_factor_range() const;
1601
  inline boolean range_is_wrapping() const;
1602
  static inline multi_aff range_map(space space);
1603
  inline multi_aff range_product(multi_aff multi2) const;
1604
  inline multi_aff range_splice(unsigned int pos, multi_aff multi2) const;
1605
  inline multi_aff reset_tuple_id(isl::dim type) const;
1606
  inline multi_aff reset_user() const;
1607
  inline multi_aff scale_down_multi_val(multi_val mv) const;
1608
  inline multi_aff scale_down_val(val v) const;
1609
  inline multi_aff scale_multi_val(multi_val mv) const;
1610
  inline multi_aff scale_val(val v) const;
1611
  inline multi_aff set_aff(int pos, aff el) const;
1612
  inline multi_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
1613
  inline multi_aff set_tuple_id(isl::dim type, id id) const;
1614
  inline multi_aff set_tuple_name(isl::dim type, const std::string &s) const;
1615
  inline multi_aff splice(unsigned int in_pos, unsigned int out_pos, multi_aff multi2) const;
1616
  inline multi_aff sub(multi_aff multi2) const;
1617
  static inline multi_aff zero(space space);
1618
};
1619
1620
// declarations for isl::multi_pw_aff
1621
inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1622
inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1623
1624
class multi_pw_aff {
1625
  friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1626
  friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1627
1628
  isl_multi_pw_aff *ptr = nullptr;
1629
1630
  inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
1631
1632
public:
1633
  inline /* implicit */ multi_pw_aff();
1634
  inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
1635
  inline /* implicit */ multi_pw_aff(std::nullptr_t);
1636
  inline /* implicit */ multi_pw_aff(multi_aff ma);
1637
  inline /* implicit */ multi_pw_aff(pw_aff pa);
1638
  inline /* implicit */ multi_pw_aff(pw_multi_aff pma);
1639
  inline explicit multi_pw_aff(ctx ctx, const std::string &str);
1640
  inline multi_pw_aff &operator=(multi_pw_aff obj);
1641
  inline ~multi_pw_aff();
1642
  inline __isl_give isl_multi_pw_aff *copy() const &;
1643
  inline __isl_give isl_multi_pw_aff *copy() && = delete;
1644
  inline __isl_keep isl_multi_pw_aff *get() const;
1645
  inline __isl_give isl_multi_pw_aff *release();
1646
  inline bool is_null() const;
1647
  inline explicit operator bool() const;
1648
  inline ctx get_ctx() const;
1649
  inline std::string to_str() const;
1650
  inline void dump() const;
1651
1652
  inline multi_pw_aff add(multi_pw_aff multi2) const;
1653
  inline multi_pw_aff add_dims(isl::dim type, unsigned int n) const;
1654
  inline multi_pw_aff align_params(space model) const;
1655
  inline multi_pw_aff coalesce() const;
1656
  inline unsigned int dim(isl::dim type) const;
1657
  inline set domain() const;
1658
  inline multi_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1659
  inline map eq_map(multi_pw_aff mpa2) const;
1660
  inline multi_pw_aff factor_range() const;
1661
  inline int find_dim_by_id(isl::dim type, const id &id) const;
1662
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1663
  inline multi_pw_aff flat_range_product(multi_pw_aff multi2) const;
1664
  inline multi_pw_aff flatten_range() const;
1665
  static inline multi_pw_aff from_pw_aff_list(space space, pw_aff_list list);
1666
  inline multi_pw_aff from_range() const;
1667
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1668
  inline space get_domain_space() const;
1669
  inline uint32_t get_hash() const;
1670
  inline pw_aff get_pw_aff(int pos) const;
1671
  inline space get_space() const;
1672
  inline id get_tuple_id(isl::dim type) const;
1673
  inline std::string get_tuple_name(isl::dim type) const;
1674
  inline multi_pw_aff gist(set set) const;
1675
  inline multi_pw_aff gist_params(set set) const;
1676
  inline boolean has_tuple_id(isl::dim type) const;
1677
  static inline multi_pw_aff identity(space space);
1678
  inline multi_pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1679
  inline multi_pw_aff intersect_domain(set domain) const;
1680
  inline multi_pw_aff intersect_params(set set) const;
1681
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1682
  inline boolean involves_nan() const;
1683
  inline boolean is_cst() const;
1684
  inline boolean is_equal(const multi_pw_aff &mpa2) const;
1685
  inline map lex_gt_map(multi_pw_aff mpa2) const;
1686
  inline map lex_lt_map(multi_pw_aff mpa2) const;
1687
  inline multi_pw_aff mod_multi_val(multi_val mv) const;
1688
  inline 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;
1689
  inline multi_pw_aff neg() const;
1690
  inline boolean plain_is_equal(const multi_pw_aff &multi2) const;
1691
  inline multi_pw_aff product(multi_pw_aff multi2) const;
1692
  inline multi_pw_aff project_domain_on_params() const;
1693
  inline multi_pw_aff pullback(multi_aff ma) const;
1694
  inline multi_pw_aff pullback(pw_multi_aff pma) const;
1695
  inline multi_pw_aff pullback(multi_pw_aff mpa2) const;
1696
  inline multi_pw_aff range_factor_domain() const;
1697
  inline multi_pw_aff range_factor_range() const;
1698
  inline boolean range_is_wrapping() const;
1699
  inline multi_pw_aff range_product(multi_pw_aff multi2) const;
1700
  inline multi_pw_aff range_splice(unsigned int pos, multi_pw_aff multi2) const;
1701
  inline multi_pw_aff reset_tuple_id(isl::dim type) const;
1702
  inline multi_pw_aff reset_user() const;
1703
  inline multi_pw_aff scale_down_multi_val(multi_val mv) const;
1704
  inline multi_pw_aff scale_down_val(val v) const;
1705
  inline multi_pw_aff scale_multi_val(multi_val mv) const;
1706
  inline multi_pw_aff scale_val(val v) const;
1707
  inline multi_pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
1708
  inline multi_pw_aff set_pw_aff(int pos, pw_aff el) const;
1709
  inline multi_pw_aff set_tuple_id(isl::dim type, id id) const;
1710
  inline multi_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1711
  inline multi_pw_aff splice(unsigned int in_pos, unsigned int out_pos, multi_pw_aff multi2) const;
1712
  inline multi_pw_aff sub(multi_pw_aff multi2) const;
1713
  static inline multi_pw_aff zero(space space);
1714
};
1715
1716
// declarations for isl::multi_union_pw_aff
1717
inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1718
inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1719
1720
class multi_union_pw_aff {
1721
  friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1722
  friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1723
1724
  isl_multi_union_pw_aff *ptr = nullptr;
1725
1726
  inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
1727
1728
public:
1729
  inline /* implicit */ multi_union_pw_aff();
1730
  inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
1731
  inline /* implicit */ multi_union_pw_aff(std::nullptr_t);
1732
  inline /* implicit */ multi_union_pw_aff(union_pw_aff upa);
1733
  inline /* implicit */ multi_union_pw_aff(multi_pw_aff mpa);
1734
  inline explicit multi_union_pw_aff(union_pw_multi_aff upma);
1735
  inline explicit multi_union_pw_aff(ctx ctx, const std::string &str);
1736
  inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
1737
  inline ~multi_union_pw_aff();
1738
  inline __isl_give isl_multi_union_pw_aff *copy() const &;
1739
  inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
1740
  inline __isl_keep isl_multi_union_pw_aff *get() const;
1741
  inline __isl_give isl_multi_union_pw_aff *release();
1742
  inline bool is_null() const;
1743
  inline explicit operator bool() const;
1744
  inline ctx get_ctx() const;
1745
  inline std::string to_str() const;
1746
  inline void dump() const;
1747
1748
  inline multi_union_pw_aff add(multi_union_pw_aff multi2) const;
1749
  inline multi_union_pw_aff align_params(space model) const;
1750
  inline union_pw_aff apply_aff(aff aff) const;
1751
  inline union_pw_aff apply_pw_aff(pw_aff pa) const;
1752
  inline multi_union_pw_aff apply_pw_multi_aff(pw_multi_aff pma) const;
1753
  inline multi_union_pw_aff coalesce() const;
1754
  inline unsigned int dim(isl::dim type) const;
1755
  inline union_set domain() const;
1756
  inline multi_union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1757
  inline multi_pw_aff extract_multi_pw_aff(space space) const;
1758
  inline multi_union_pw_aff factor_range() const;
1759
  inline int find_dim_by_id(isl::dim type, const id &id) const;
1760
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1761
  inline multi_union_pw_aff flat_range_product(multi_union_pw_aff multi2) const;
1762
  inline multi_union_pw_aff flatten_range() const;
1763
  inline multi_union_pw_aff floor() const;
1764
  static inline multi_union_pw_aff from_multi_aff(multi_aff ma);
1765
  inline multi_union_pw_aff from_range() const;
1766
  static inline multi_union_pw_aff from_union_map(union_map umap);
1767
  static inline multi_union_pw_aff from_union_pw_aff_list(space space, union_pw_aff_list list);
1768
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1769
  inline space get_domain_space() const;
1770
  inline space get_space() const;
1771
  inline id get_tuple_id(isl::dim type) const;
1772
  inline std::string get_tuple_name(isl::dim type) const;
1773
  inline union_pw_aff get_union_pw_aff(int pos) const;
1774
  inline multi_union_pw_aff gist(union_set context) const;
1775
  inline multi_union_pw_aff gist_params(set context) const;
1776
  inline boolean has_tuple_id(isl::dim type) const;
1777
  inline multi_union_pw_aff intersect_domain(union_set uset) const;
1778
  inline multi_union_pw_aff intersect_params(set params) const;
1779
  inline multi_union_pw_aff intersect_range(set set) const;
1780
  inline boolean involves_nan() const;
1781
  inline multi_val max_multi_val() const;
1782
  inline multi_val min_multi_val() const;
1783
  inline multi_union_pw_aff mod_multi_val(multi_val mv) const;
1784
  static inline multi_union_pw_aff multi_aff_on_domain(union_set domain, multi_aff ma);
1785
  static inline multi_union_pw_aff multi_val_on_domain(union_set domain, multi_val mv);
1786
  inline multi_union_pw_aff neg() const;
1787
  inline boolean plain_is_equal(const multi_union_pw_aff &multi2) const;
1788
  inline multi_union_pw_aff pullback(union_pw_multi_aff upma) const;
1789
  static inline multi_union_pw_aff pw_multi_aff_on_domain(union_set domain, pw_multi_aff pma);
1790
  inline multi_union_pw_aff range_factor_domain() const;
1791
  inline multi_union_pw_aff range_factor_range() const;
1792
  inline boolean range_is_wrapping() const;
1793
  inline multi_union_pw_aff range_product(multi_union_pw_aff multi2) const;
1794
  inline multi_union_pw_aff range_splice(unsigned int pos, multi_union_pw_aff multi2) const;
1795
  inline multi_union_pw_aff reset_tuple_id(isl::dim type) const;
1796
  inline multi_union_pw_aff reset_user() const;
1797
  inline multi_union_pw_aff scale_down_multi_val(multi_val mv) const;
1798
  inline multi_union_pw_aff scale_down_val(val v) const;
1799
  inline multi_union_pw_aff scale_multi_val(multi_val mv) const;
1800
  inline multi_union_pw_aff scale_val(val v) const;
1801
  inline multi_union_pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
1802
  inline multi_union_pw_aff set_tuple_id(isl::dim type, id id) const;
1803
  inline multi_union_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1804
  inline multi_union_pw_aff set_union_pw_aff(int pos, union_pw_aff el) const;
1805
  inline multi_union_pw_aff sub(multi_union_pw_aff multi2) const;
1806
  inline multi_union_pw_aff union_add(multi_union_pw_aff mupa2) const;
1807
  static inline multi_union_pw_aff zero(space space);
1808
  inline union_set zero_union_set() const;
1809
};
1810
1811
// declarations for isl::multi_val
1812
inline multi_val manage(__isl_take isl_multi_val *ptr);
1813
inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1814
1815
class multi_val {
1816
  friend inline multi_val manage(__isl_take isl_multi_val *ptr);
1817
  friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1818
1819
  isl_multi_val *ptr = nullptr;
1820
1821
  inline explicit multi_val(__isl_take isl_multi_val *ptr);
1822
1823
public:
1824
  inline /* implicit */ multi_val();
1825
  inline /* implicit */ multi_val(const multi_val &obj);
1826
  inline /* implicit */ multi_val(std::nullptr_t);
1827
  inline multi_val &operator=(multi_val obj);
1828
  inline ~multi_val();
1829
  inline __isl_give isl_multi_val *copy() const &;
1830
  inline __isl_give isl_multi_val *copy() && = delete;
1831
  inline __isl_keep isl_multi_val *get() const;
1832
  inline __isl_give isl_multi_val *release();
1833
  inline bool is_null() const;
1834
  inline explicit operator bool() const;
1835
  inline ctx get_ctx() const;
1836
  inline std::string to_str() const;
1837
  inline void dump() const;
1838
1839
  inline multi_val add(multi_val multi2) const;
1840
  inline multi_val add_dims(isl::dim type, unsigned int n) const;
1841
  inline multi_val add_val(val v) const;
1842
  inline multi_val align_params(space model) const;
1843
  inline unsigned int dim(isl::dim type) const;
1844
  inline multi_val drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1845
  inline multi_val factor_range() const;
1846
  inline int find_dim_by_id(isl::dim type, const id &id) const;
1847
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1848
  inline multi_val flat_range_product(multi_val multi2) const;
1849
  inline multi_val flatten_range() const;
1850
  inline multi_val from_range() const;
1851
  static inline multi_val from_val_list(space space, val_list list);
1852
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1853
  inline space get_domain_space() const;
1854
  inline space get_space() const;
1855
  inline id get_tuple_id(isl::dim type) const;
1856
  inline std::string get_tuple_name(isl::dim type) const;
1857
  inline val get_val(int pos) const;
1858
  inline boolean has_tuple_id(isl::dim type) const;
1859
  inline multi_val insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1860
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1861
  inline boolean involves_nan() const;
1862
  inline multi_val mod_multi_val(multi_val mv) const;
1863
  inline multi_val mod_val(val v) const;
1864
  inline multi_val neg() const;
1865
  inline boolean plain_is_equal(const multi_val &multi2) const;
1866
  inline multi_val product(multi_val multi2) const;
1867
  inline multi_val project_domain_on_params() const;
1868
  inline multi_val range_factor_domain() const;
1869
  inline multi_val range_factor_range() const;
1870
  inline boolean range_is_wrapping() const;
1871
  inline multi_val range_product(multi_val multi2) const;
1872
  inline multi_val range_splice(unsigned int pos, multi_val multi2) const;
1873
  static inline multi_val read_from_str(ctx ctx, const std::string &str);
1874
  inline multi_val reset_tuple_id(isl::dim type) const;
1875
  inline multi_val reset_user() const;
1876
  inline multi_val scale_down_multi_val(multi_val mv) const;
1877
  inline multi_val scale_down_val(val v) const;
1878
  inline multi_val scale_multi_val(multi_val mv) const;
1879
  inline multi_val scale_val(val v) const;
1880
  inline multi_val set_dim_id(isl::dim type, unsigned int pos, id id) const;
1881
  inline multi_val set_tuple_id(isl::dim type, id id) const;
1882
  inline multi_val set_tuple_name(isl::dim type, const std::string &s) const;
1883
  inline multi_val set_val(int pos, val el) const;
1884
  inline multi_val splice(unsigned int in_pos, unsigned int out_pos, multi_val multi2) const;
1885
  inline multi_val sub(multi_val multi2) const;
1886
  static inline multi_val zero(space space);
1887
};
1888
1889
// declarations for isl::point
1890
inline point manage(__isl_take isl_point *ptr);
1891
inline point manage_copy(__isl_keep isl_point *ptr);
1892
1893
class point {
1894
  friend inline point manage(__isl_take isl_point *ptr);
1895
  friend inline point manage_copy(__isl_keep isl_point *ptr);
1896
1897
  isl_point *ptr = nullptr;
1898
1899
  inline explicit point(__isl_take isl_point *ptr);
1900
1901
public:
1902
  inline /* implicit */ point();
1903
  inline /* implicit */ point(const point &obj);
1904
  inline /* implicit */ point(std::nullptr_t);
1905
  inline explicit point(space dim);
1906
  inline point &operator=(point obj);
1907
  inline ~point();
1908
  inline __isl_give isl_point *copy() const &;
1909
  inline __isl_give isl_point *copy() && = delete;
1910
  inline __isl_keep isl_point *get() const;
1911
  inline __isl_give isl_point *release();
1912
  inline bool is_null() const;
1913
  inline explicit operator bool() const;
1914
  inline ctx get_ctx() const;
1915
  inline std::string to_str() const;
1916
  inline void dump() const;
1917
1918
  inline point add_ui(isl::dim type, int pos, unsigned int val) const;
1919
  inline val get_coordinate_val(isl::dim type, int pos) const;
1920
  inline space get_space() const;
1921
  inline point set_coordinate_val(isl::dim type, int pos, val v) const;
1922
  inline point sub_ui(isl::dim type, int pos, unsigned int val) const;
1923
};
1924
1925
// declarations for isl::pw_aff
1926
inline pw_aff manage(__isl_take isl_pw_aff *ptr);
1927
inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1928
1929
class pw_aff {
1930
  friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
1931
  friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1932
1933
  isl_pw_aff *ptr = nullptr;
1934
1935
  inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
1936
1937
public:
1938
  inline /* implicit */ pw_aff();
1939
  inline /* implicit */ pw_aff(const pw_aff &obj);
1940
  inline /* implicit */ pw_aff(std::nullptr_t);
1941
  inline /* implicit */ pw_aff(aff aff);
1942
  inline explicit pw_aff(local_space ls);
1943
  inline explicit pw_aff(set domain, val v);
1944
  inline explicit pw_aff(ctx ctx, const std::string &str);
1945
  inline pw_aff &operator=(pw_aff obj);
1946
  inline ~pw_aff();
1947
  inline __isl_give isl_pw_aff *copy() const &;
1948
  inline __isl_give isl_pw_aff *copy() && = delete;
1949
  inline __isl_keep isl_pw_aff *get() const;
1950
  inline __isl_give isl_pw_aff *release();
1951
  inline bool is_null() const;
1952
  inline explicit operator bool() const;
1953
  inline ctx get_ctx() const;
1954
  inline std::string to_str() const;
1955
  inline void dump() const;
1956
1957
  inline pw_aff add(pw_aff pwaff2) const;
1958
  inline pw_aff add_dims(isl::dim type, unsigned int n) const;
1959
  inline pw_aff align_params(space model) const;
1960
  static inline pw_aff alloc(set set, aff aff);
1961
  inline pw_aff ceil() const;
1962
  inline pw_aff coalesce() const;
1963
  inline pw_aff cond(pw_aff pwaff_true, pw_aff pwaff_false) const;
1964
  inline unsigned int dim(isl::dim type) const;
1965
  inline pw_aff div(pw_aff pa2) const;
1966
  inline set domain() const;
1967
  inline pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1968
  inline pw_aff drop_unused_params() const;
1969
  static inline pw_aff empty(space dim);
1970
  inline map eq_map(pw_aff pa2) const;
1971
  inline set eq_set(pw_aff pwaff2) const;
1972
  inline val eval(point pnt) const;
1973
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1974
  inline pw_aff floor() const;
1975
  inline stat foreach_piece(const std::function<stat(set, aff)> &fn) const;
1976
  inline pw_aff from_range() const;
1977
  inline set ge_set(pw_aff pwaff2) const;
1978
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
1979
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1980
  inline space get_domain_space() const;
1981
  inline uint32_t get_hash() const;
1982
  inline space get_space() const;
1983
  inline id get_tuple_id(isl::dim type) const;
1984
  inline pw_aff gist(set context) const;
1985
  inline pw_aff gist_params(set context) const;
1986
  inline map gt_map(pw_aff pa2) const;
1987
  inline set gt_set(pw_aff pwaff2) const;
1988
  inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1989
  inline boolean has_tuple_id(isl::dim type) const;
1990
  inline pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1991
  inline pw_aff intersect_domain(set set) const;
1992
  inline pw_aff intersect_params(set set) const;
1993
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1994
  inline boolean involves_nan() const;
1995
  inline boolean is_cst() const;
1996
  inline boolean is_empty() const;
1997
  inline boolean is_equal(const pw_aff &pa2) const;
1998
  inline set le_set(pw_aff pwaff2) const;
1999
  inline map lt_map(pw_aff pa2) const;
2000
  inline set lt_set(pw_aff pwaff2) const;
2001
  inline pw_aff max(pw_aff pwaff2) const;
2002
  inline pw_aff min(pw_aff pwaff2) const;
2003
  inline pw_aff mod(val mod) const;
2004
  inline pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2005
  inline pw_aff mul(pw_aff pwaff2) const;
2006
  inline int n_piece() const;
2007
  static inline pw_aff nan_on_domain(local_space ls);
2008
  inline set ne_set(pw_aff pwaff2) const;
2009
  inline pw_aff neg() const;
2010
  inline set non_zero_set() const;
2011
  inline set nonneg_set() const;
2012
  inline set params() const;
2013
  inline int plain_cmp(const pw_aff &pa2) const;
2014
  inline boolean plain_is_equal(const pw_aff &pwaff2) const;
2015
  inline set pos_set() const;
2016
  inline pw_aff project_domain_on_params() const;
2017
  inline pw_aff pullback(multi_aff ma) const;
2018
  inline pw_aff pullback(pw_multi_aff pma) const;
2019
  inline pw_aff pullback(multi_pw_aff mpa) const;
2020
  inline pw_aff reset_tuple_id(isl::dim type) const;
2021
  inline pw_aff reset_user() const;
2022
  inline pw_aff scale(val v) const;
2023
  inline pw_aff scale_down(val f) const;
2024
  inline pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
2025
  inline pw_aff set_tuple_id(isl::dim type, id id) const;
2026
  inline pw_aff sub(pw_aff pwaff2) const;
2027
  inline pw_aff subtract_domain(set set) const;
2028
  inline pw_aff tdiv_q(pw_aff pa2) const;
2029
  inline pw_aff tdiv_r(pw_aff pa2) const;
2030
  inline pw_aff union_add(pw_aff pwaff2) const;
2031
  inline pw_aff union_max(pw_aff pwaff2) const;
2032
  inline pw_aff union_min(pw_aff pwaff2) const;
2033
  static inline pw_aff var_on_domain(local_space ls, isl::dim type, unsigned int pos);
2034
  inline set zero_set() const;
2035
};
2036
2037
// declarations for isl::pw_aff_list
2038
inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2039
inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2040
2041
class pw_aff_list {
2042
  friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2043
  friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2044
2045
  isl_pw_aff_list *ptr = nullptr;
2046
2047
  inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2048
2049
public:
2050
  inline /* implicit */ pw_aff_list();
2051
  inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2052
  inline /* implicit */ pw_aff_list(std::nullptr_t);
2053
  inline pw_aff_list &operator=(pw_aff_list obj);
2054
  inline ~pw_aff_list();
2055
  inline __isl_give isl_pw_aff_list *copy() const &;
2056
  inline __isl_give isl_pw_aff_list *copy() && = delete;
2057
  inline __isl_keep isl_pw_aff_list *get() const;
2058
  inline __isl_give isl_pw_aff_list *release();
2059
  inline bool is_null() const;
2060
  inline explicit operator bool() const;
2061
  inline ctx get_ctx() const;
2062
  inline void dump() const;
2063
2064
  inline pw_aff_list add(pw_aff el) const;
2065
  static inline pw_aff_list alloc(ctx ctx, int n);
2066
  inline pw_aff_list concat(pw_aff_list list2) const;
2067
  inline pw_aff_list drop(unsigned int first, unsigned int n) const;
2068
  inline set eq_set(pw_aff_list list2) const;
2069
  inline stat foreach(const std::function<stat(pw_aff)> &fn) const;
2070
  static inline pw_aff_list from_pw_aff(pw_aff el);
2071
  inline set ge_set(pw_aff_list list2) const;
2072
  inline pw_aff get_at(int index) const;
2073
  inline pw_aff get_pw_aff(int index) const;
2074
  inline set gt_set(pw_aff_list list2) const;
2075
  inline pw_aff_list insert(unsigned int pos, pw_aff el) const;
2076
  inline set le_set(pw_aff_list list2) const;
2077
  inline set lt_set(pw_aff_list list2) const;
2078
  inline pw_aff max() const;
2079
  inline pw_aff min() const;
2080
  inline int n_pw_aff() const;
2081
  inline set ne_set(pw_aff_list list2) const;
2082
  inline pw_aff_list reverse() const;
2083
  inline pw_aff_list set_pw_aff(int index, pw_aff el) const;
2084
  inline int size() const;
2085
  inline pw_aff_list swap(unsigned int pos1, unsigned int pos2) const;
2086
};
2087
2088
// declarations for isl::pw_multi_aff
2089
inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2090
inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2091
2092
class pw_multi_aff {
2093
  friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2094
  friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2095
2096
  isl_pw_multi_aff *ptr = nullptr;
2097
2098
  inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2099
2100
public:
2101
  inline /* implicit */ pw_multi_aff();
2102
  inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2103
  inline /* implicit */ pw_multi_aff(std::nullptr_t);
2104
  inline /* implicit */ pw_multi_aff(multi_aff ma);
2105
  inline /* implicit */ pw_multi_aff(pw_aff pa);
2106
  inline explicit pw_multi_aff(ctx ctx, const std::string &str);
2107
  inline pw_multi_aff &operator=(pw_multi_aff obj);
2108
  inline ~pw_multi_aff();
2109
  inline __isl_give isl_pw_multi_aff *copy() const &;
2110
  inline __isl_give isl_pw_multi_aff *copy() && = delete;
2111
  inline __isl_keep isl_pw_multi_aff *get() const;
2112
  inline __isl_give isl_pw_multi_aff *release();
2113
  inline bool is_null() const;
2114
  inline explicit operator bool() const;
2115
  inline ctx get_ctx() const;
2116
  inline std::string to_str() const;
2117
  inline void dump() const;
2118
2119
  inline pw_multi_aff add(pw_multi_aff pma2) const;
2120
  inline pw_multi_aff align_params(space model) const;
2121
  static inline pw_multi_aff alloc(set set, multi_aff maff);
2122
  inline pw_multi_aff coalesce() const;
2123
  inline unsigned int dim(isl::dim type) const;
2124
  inline set domain() const;
2125
  inline pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2126
  inline pw_multi_aff drop_unused_params() const;
2127
  static inline pw_multi_aff empty(space space);
2128
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2129
  inline pw_multi_aff fix_si(isl::dim type, unsigned int pos, int value) const;
2130
  inline pw_multi_aff flat_range_product(pw_multi_aff pma2) const;
2131
  inline stat foreach_piece(const std::function<stat(set, multi_aff)> &fn) const;
2132
  static inline pw_multi_aff from_domain(set set);
2133
  static inline pw_multi_aff from_map(map map);
2134
  static inline pw_multi_aff from_multi_pw_aff(multi_pw_aff mpa);
2135
  static inline pw_multi_aff from_set(set set);
2136
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
2137
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2138
  inline space get_domain_space() const;
2139
  inline pw_aff get_pw_aff(int pos) const;
2140
  inline space get_space() const;
2141
  inline id get_tuple_id(isl::dim type) const;
2142
  inline std::string get_tuple_name(isl::dim type) const;
2143
  inline pw_multi_aff gist(set set) const;
2144
  inline pw_multi_aff gist_params(set set) const;
2145
  inline boolean has_tuple_id(isl::dim type) const;
2146
  inline boolean has_tuple_name(isl::dim type) const;
2147
  static inline pw_multi_aff identity(space space);
2148
  inline pw_multi_aff intersect_domain(set set) const;
2149
  inline pw_multi_aff intersect_params(set set) const;
2150
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2151
  inline boolean involves_nan() const;
2152
  inline boolean is_equal(const pw_multi_aff &pma2) const;
2153
  static inline pw_multi_aff multi_val_on_domain(set domain, multi_val mv);
2154
  inline int n_piece() const;
2155
  inline pw_multi_aff neg() const;
2156
  inline boolean plain_is_equal(const pw_multi_aff &pma2) const;
2157
  inline pw_multi_aff product(pw_multi_aff pma2) const;
2158
  inline pw_multi_aff project_domain_on_params() const;
2159
  static inline pw_multi_aff project_out_map(space space, isl::dim type, unsigned int first, unsigned int n);
2160
  inline pw_multi_aff pullback(multi_aff ma) const;
2161
  inline pw_multi_aff pullback(pw_multi_aff pma2) const;
2162
  static inline pw_multi_aff range_map(space space);
2163
  inline pw_multi_aff range_product(pw_multi_aff pma2) const;
2164
  inline pw_multi_aff reset_tuple_id(isl::dim type) const;
2165
  inline pw_multi_aff reset_user() const;
2166
  inline pw_multi_aff scale_down_val(val v) const;
2167
  inline pw_multi_aff scale_multi_val(multi_val mv) const;
2168
  inline pw_multi_aff scale_val(val v) const;
2169
  inline pw_multi_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
2170
  inline pw_multi_aff set_pw_aff(unsigned int pos, pw_aff pa) const;
2171
  inline pw_multi_aff set_tuple_id(isl::dim type, id id) const;
2172
  inline pw_multi_aff sub(pw_multi_aff pma2) const;
2173
  inline pw_multi_aff subtract_domain(set set) const;
2174
  inline pw_multi_aff union_add(pw_multi_aff pma2) const;
2175
  inline pw_multi_aff union_lexmax(pw_multi_aff pma2) const;
2176
  inline pw_multi_aff union_lexmin(pw_multi_aff pma2) const;
2177
  static inline pw_multi_aff zero(space space);
2178
};
2179
2180
// declarations for isl::pw_multi_aff_list
2181
inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2182
inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2183
2184
class pw_multi_aff_list {
2185
  friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2186
  friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2187
2188
  isl_pw_multi_aff_list *ptr = nullptr;
2189
2190
  inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
2191
2192
public:
2193
  inline /* implicit */ pw_multi_aff_list();
2194
  inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
2195
  inline /* implicit */ pw_multi_aff_list(std::nullptr_t);
2196
  inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
2197
  inline ~pw_multi_aff_list();
2198
  inline __isl_give isl_pw_multi_aff_list *copy() const &;
2199
  inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
2200
  inline __isl_keep isl_pw_multi_aff_list *get() const;
2201
  inline __isl_give isl_pw_multi_aff_list *release();
2202
  inline bool is_null() const;
2203
  inline explicit operator bool() const;
2204
  inline ctx get_ctx() const;
2205
  inline void dump() const;
2206
2207
  inline pw_multi_aff_list add(pw_multi_aff el) const;
2208
  static inline pw_multi_aff_list alloc(ctx ctx, int n);
2209
  inline pw_multi_aff_list concat(pw_multi_aff_list list2) const;
2210
  inline pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
2211
  inline stat foreach(const std::function<stat(pw_multi_aff)> &fn) const;
2212
  static inline pw_multi_aff_list from_pw_multi_aff(pw_multi_aff el);
2213
  inline pw_multi_aff get_at(int index) const;
2214
  inline pw_multi_aff get_pw_multi_aff(int index) const;
2215
  inline pw_multi_aff_list insert(unsigned int pos, pw_multi_aff el) const;
2216
  inline int n_pw_multi_aff() const;
2217
  inline pw_multi_aff_list reverse() const;
2218
  inline pw_multi_aff_list set_pw_multi_aff(int index, pw_multi_aff el) const;
2219
  inline int size() const;
2220
  inline pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const;
2221
};
2222
2223
// declarations for isl::pw_qpolynomial
2224
inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2225
inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2226
2227
class pw_qpolynomial {
2228
  friend inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2229
  friend inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2230
2231
  isl_pw_qpolynomial *ptr = nullptr;
2232
2233
  inline explicit pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr);
2234
2235
public:
2236
  inline /* implicit */ pw_qpolynomial();
2237
  inline /* implicit */ pw_qpolynomial(const pw_qpolynomial &obj);
2238
  inline /* implicit */ pw_qpolynomial(std::nullptr_t);
2239
  inline explicit pw_qpolynomial(ctx ctx, const std::string &str);
2240
  inline pw_qpolynomial &operator=(pw_qpolynomial obj);
2241
  inline ~pw_qpolynomial();
2242
  inline __isl_give isl_pw_qpolynomial *copy() const &;
2243
  inline __isl_give isl_pw_qpolynomial *copy() && = delete;
2244
  inline __isl_keep isl_pw_qpolynomial *get() const;
2245
  inline __isl_give isl_pw_qpolynomial *release();
2246
  inline bool is_null() const;
2247
  inline explicit operator bool() const;
2248
  inline ctx get_ctx() const;
2249
  inline std::string to_str() const;
2250
  inline void dump() const;
2251
2252
  inline pw_qpolynomial add(pw_qpolynomial pwqp2) const;
2253
  inline pw_qpolynomial add_dims(isl::dim type, unsigned int n) const;
2254
  static inline pw_qpolynomial alloc(set set, qpolynomial qp);
2255
  inline pw_qpolynomial coalesce() const;
2256
  inline unsigned int dim(isl::dim type) const;
2257
  inline set domain() const;
2258
  inline pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2259
  inline pw_qpolynomial drop_unused_params() const;
2260
  inline val eval(point pnt) const;
2261
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2262
  inline pw_qpolynomial fix_val(isl::dim type, unsigned int n, val v) const;
2263
  inline stat foreach_piece(const std::function<stat(set, qpolynomial)> &fn) const;
2264
  static inline pw_qpolynomial from_pw_aff(pw_aff pwaff);
2265
  static inline pw_qpolynomial from_qpolynomial(qpolynomial qp);
2266
  inline pw_qpolynomial from_range() const;
2267
  inline space get_domain_space() const;
2268
  inline space get_space() const;
2269
  inline pw_qpolynomial gist(set context) const;
2270
  inline pw_qpolynomial gist_params(set context) const;
2271
  inline boolean has_equal_space(const pw_qpolynomial &pwqp2) const;
2272
  inline pw_qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2273
  inline pw_qpolynomial intersect_domain(set set) const;
2274
  inline pw_qpolynomial intersect_params(set set) const;
2275
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2276
  inline boolean involves_nan() const;
2277
  inline boolean is_zero() const;
2278
  inline val max() const;
2279
  inline val min() const;
2280
  inline pw_qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2281
  inline pw_qpolynomial mul(pw_qpolynomial pwqp2) const;
2282
  inline int n_piece() const;
2283
  inline pw_qpolynomial neg() const;
2284
  inline boolean plain_is_equal(const pw_qpolynomial &pwqp2) const;
2285
  inline pw_qpolynomial pow(unsigned int exponent) const;
2286
  inline pw_qpolynomial project_domain_on_params() const;
2287
  inline pw_qpolynomial reset_domain_space(space dim) const;
2288
  inline pw_qpolynomial reset_user() const;
2289
  inline pw_qpolynomial scale_down_val(val v) const;
2290
  inline pw_qpolynomial scale_val(val v) const;
2291
  inline pw_qpolynomial split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2292
  inline pw_qpolynomial split_periods(int max_periods) const;
2293
  inline pw_qpolynomial sub(pw_qpolynomial pwqp2) const;
2294
  inline pw_qpolynomial subtract_domain(set set) const;
2295
  inline pw_qpolynomial to_polynomial(int sign) const;
2296
  static inline pw_qpolynomial zero(space dim);
2297
};
2298
2299
// declarations for isl::pw_qpolynomial_fold_list
2300
inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2301
inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr);
2302
2303
class pw_qpolynomial_fold_list {
2304
  friend inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2305
  friend inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr);
2306
2307
  isl_pw_qpolynomial_fold_list *ptr = nullptr;
2308
2309
  inline explicit pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2310
2311
public:
2312
  inline /* implicit */ pw_qpolynomial_fold_list();
2313
  inline /* implicit */ pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj);
2314
  inline /* implicit */ pw_qpolynomial_fold_list(std::nullptr_t);
2315
  inline pw_qpolynomial_fold_list &operator=(pw_qpolynomial_fold_list obj);
2316
  inline ~pw_qpolynomial_fold_list();
2317
  inline __isl_give isl_pw_qpolynomial_fold_list *copy() const &;
2318
  inline __isl_give isl_pw_qpolynomial_fold_list *copy() && = delete;
2319
  inline __isl_keep isl_pw_qpolynomial_fold_list *get() const;
2320
  inline __isl_give isl_pw_qpolynomial_fold_list *release();
2321
  inline bool is_null() const;
2322
  inline explicit operator bool() const;
2323
  inline ctx get_ctx() const;
2324
  inline void dump() const;
2325
2326
};
2327
2328
// declarations for isl::pw_qpolynomial_list
2329
inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr);
2330
inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr);
2331
2332
class pw_qpolynomial_list {
2333
  friend inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr);
2334
  friend inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr);
2335
2336
  isl_pw_qpolynomial_list *ptr = nullptr;
2337
2338
  inline explicit pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr);
2339
2340
public:
2341
  inline /* implicit */ pw_qpolynomial_list();
2342
  inline /* implicit */ pw_qpolynomial_list(const pw_qpolynomial_list &obj);
2343
  inline /* implicit */ pw_qpolynomial_list(std::nullptr_t);
2344
  inline pw_qpolynomial_list &operator=(pw_qpolynomial_list obj);
2345
  inline ~pw_qpolynomial_list();
2346
  inline __isl_give isl_pw_qpolynomial_list *copy() const &;
2347
  inline __isl_give isl_pw_qpolynomial_list *copy() && = delete;
2348
  inline __isl_keep isl_pw_qpolynomial_list *get() const;
2349
  inline __isl_give isl_pw_qpolynomial_list *release();
2350
  inline bool is_null() const;
2351
  inline explicit operator bool() const;
2352
  inline ctx get_ctx() const;
2353
  inline void dump() const;
2354
2355
  inline pw_qpolynomial_list add(pw_qpolynomial el) const;
2356
  static inline pw_qpolynomial_list alloc(ctx ctx, int n);
2357
  inline pw_qpolynomial_list concat(pw_qpolynomial_list list2) const;
2358
  inline pw_qpolynomial_list drop(unsigned int first, unsigned int n) const;
2359
  inline stat foreach(const std::function<stat(pw_qpolynomial)> &fn) const;
2360
  static inline pw_qpolynomial_list from_pw_qpolynomial(pw_qpolynomial el);
2361
  inline pw_qpolynomial get_at(int index) const;
2362
  inline pw_qpolynomial get_pw_qpolynomial(int index) const;
2363
  inline pw_qpolynomial_list insert(unsigned int pos, pw_qpolynomial el) const;
2364
  inline int n_pw_qpolynomial() const;
2365
  inline pw_qpolynomial_list reverse() const;
2366
  inline pw_qpolynomial_list set_pw_qpolynomial(int index, pw_qpolynomial el) const;
2367
  inline int size() const;
2368
  inline pw_qpolynomial_list swap(unsigned int pos1, unsigned int pos2) const;
2369
};
2370
2371
// declarations for isl::qpolynomial
2372
inline qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2373
inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2374
2375
class qpolynomial {
2376
  friend inline qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2377
  friend inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2378
2379
  isl_qpolynomial *ptr = nullptr;
2380
2381
  inline explicit qpolynomial(__isl_take isl_qpolynomial *ptr);
2382
2383
public:
2384
  inline /* implicit */ qpolynomial();
2385
  inline /* implicit */ qpolynomial(const qpolynomial &obj);
2386
  inline /* implicit */ qpolynomial(std::nullptr_t);
2387
  inline qpolynomial &operator=(qpolynomial obj);
2388
  inline ~qpolynomial();
2389
  inline __isl_give isl_qpolynomial *copy() const &;
2390
  inline __isl_give isl_qpolynomial *copy() && = delete;
2391
  inline __isl_keep isl_qpolynomial *get() const;
2392
  inline __isl_give isl_qpolynomial *release();
2393
  inline bool is_null() const;
2394
  inline explicit operator bool() const;
2395
  inline ctx get_ctx() const;
2396
  inline void dump() const;
2397
2398
  inline qpolynomial add(qpolynomial qp2) const;
2399
  inline qpolynomial add_dims(isl::dim type, unsigned int n) const;
2400
  inline qpolynomial align_params(space model) const;
2401
  inline stat as_polynomial_on_domain(const basic_set &bset, const std::function<stat(basic_set, qpolynomial)> &fn) const;
2402
  inline unsigned int dim(isl::dim type) const;
2403
  inline qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2404
  inline val eval(point pnt) const;
2405
  inline stat foreach_term(const std::function<stat(term)> &fn) const;
2406
  static inline qpolynomial from_aff(aff aff);
2407
  static inline qpolynomial from_constraint(constraint c, isl::dim type, unsigned int pos);
2408
  static inline qpolynomial from_term(term term);
2409
  inline val get_constant_val() const;
2410
  inline space get_domain_space() const;
2411
  inline space get_space() const;
2412
  inline qpolynomial gist(set context) const;
2413
  inline qpolynomial gist_params(set context) const;
2414
  inline qpolynomial homogenize() const;
2415
  static inline qpolynomial infty_on_domain(space dim);
2416
  inline qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2417
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2418
  inline boolean is_infty() const;
2419
  inline boolean is_nan() const;
2420
  inline boolean is_neginfty() const;
2421
  inline boolean is_zero() const;
2422
  inline qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2423
  inline qpolynomial mul(qpolynomial qp2) const;
2424
  static inline qpolynomial nan_on_domain(space dim);
2425
  inline qpolynomial neg() const;
2426
  static inline qpolynomial neginfty_on_domain(space dim);
2427
  static inline qpolynomial one_on_domain(space dim);
2428
  inline boolean plain_is_equal(const qpolynomial &qp2) const;
2429
  inline qpolynomial pow(unsigned int power) const;
2430
  inline qpolynomial project_domain_on_params() const;
2431
  inline qpolynomial scale_down_val(val v) const;
2432
  inline qpolynomial scale_val(val v) const;
2433
  inline int sgn() const;
2434
  inline qpolynomial sub(qpolynomial qp2) const;
2435
  static inline qpolynomial val_on_domain(space space, val val);
2436
  static inline qpolynomial var_on_domain(space dim, isl::dim type, unsigned int pos);
2437
  static inline qpolynomial zero_on_domain(space dim);
2438
};
2439
2440
// declarations for isl::schedule
2441
inline schedule manage(__isl_take isl_schedule *ptr);
2442
inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2443
2444
class schedule {
2445
  friend inline schedule manage(__isl_take isl_schedule *ptr);
2446
  friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2447
2448
  isl_schedule *ptr = nullptr;
2449
2450
  inline explicit schedule(__isl_take isl_schedule *ptr);
2451
2452
public:
2453
  inline /* implicit */ schedule();
2454
  inline /* implicit */ schedule(const schedule &obj);
2455
  inline /* implicit */ schedule(std::nullptr_t);
2456
  inline explicit schedule(ctx ctx, const std::string &str);
2457
  inline schedule &operator=(schedule obj);
2458
  inline ~schedule();
2459
  inline __isl_give isl_schedule *copy() const &;
2460
  inline __isl_give isl_schedule *copy() && = delete;
2461
  inline __isl_keep isl_schedule *get() const;
2462
  inline __isl_give isl_schedule *release();
2463
  inline bool is_null() const;
2464
  inline explicit operator bool() const;
2465
  inline ctx get_ctx() const;
2466
  inline std::string to_str() const;
2467
  inline void dump() const;
2468
2469
  inline schedule align_params(space space) const;
2470
  static inline schedule empty(space space);
2471
  static inline schedule from_domain(union_set domain);
2472
  inline union_set get_domain() const;
2473
  inline union_map get_map() const;
2474
  inline schedule_node get_root() const;
2475
  inline schedule gist_domain_params(set context) const;
2476
  inline schedule insert_context(set context) const;
2477
  inline schedule insert_guard(set guard) const;
2478
  inline schedule insert_partial_schedule(multi_union_pw_aff partial) const;
2479
  inline schedule intersect_domain(union_set domain) const;
2480
  inline boolean plain_is_equal(const schedule &schedule2) const;
2481
  inline schedule pullback(union_pw_multi_aff upma) const;
2482
  inline schedule reset_user() const;
2483
  inline schedule sequence(schedule schedule2) const;
2484
};
2485
2486
// declarations for isl::schedule_constraints
2487
inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2488
inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2489
2490
class schedule_constraints {
2491
  friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2492
  friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2493
2494
  isl_schedule_constraints *ptr = nullptr;
2495
2496
  inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
2497
2498
public:
2499
  inline /* implicit */ schedule_constraints();
2500
  inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
2501
  inline /* implicit */ schedule_constraints(std::nullptr_t);
2502
  inline explicit schedule_constraints(ctx ctx, const std::string &str);
2503
  inline schedule_constraints &operator=(schedule_constraints obj);
2504
  inline ~schedule_constraints();
2505
  inline __isl_give isl_schedule_constraints *copy() const &;
2506
  inline __isl_give isl_schedule_constraints *copy() && = delete;
2507
  inline __isl_keep isl_schedule_constraints *get() const;
2508
  inline __isl_give isl_schedule_constraints *release();
2509
  inline bool is_null() const;
2510
  inline explicit operator bool() const;
2511
  inline ctx get_ctx() const;
2512
  inline std::string to_str() const;
2513
  inline void dump() const;
2514
2515
  inline schedule_constraints apply(union_map umap) const;
2516
  inline schedule compute_schedule() const;
2517
  inline union_map get_coincidence() const;
2518
  inline union_map get_conditional_validity() const;
2519
  inline union_map get_conditional_validity_condition() const;
2520
  inline set get_context() const;
2521
  inline union_set get_domain() const;
2522
  inline union_map get_proximity() const;
2523
  inline union_map get_validity() const;
2524
  static inline schedule_constraints on_domain(union_set domain);
2525
  inline schedule_constraints set_coincidence(union_map coincidence) const;
2526
  inline schedule_constraints set_conditional_validity(union_map condition, union_map validity) const;
2527
  inline schedule_constraints set_context(set context) const;
2528
  inline schedule_constraints set_proximity(union_map proximity) const;
2529
  inline schedule_constraints set_validity(union_map validity) const;
2530
};
2531
2532
// declarations for isl::schedule_node
2533
inline schedule_node manage(__isl_take isl_schedule_node *ptr);
2534
inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2535
2536
class schedule_node {
2537
  friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
2538
  friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2539
2540
  isl_schedule_node *ptr = nullptr;
2541
2542
  inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
2543
2544
public:
2545
  inline /* implicit */ schedule_node();
2546
  inline /* implicit */ schedule_node(const schedule_node &obj);
2547
  inline /* implicit */ schedule_node(std::nullptr_t);
2548
  inline schedule_node &operator=(schedule_node obj);
2549
  inline ~schedule_node();
2550
  inline __isl_give isl_schedule_node *copy() const &;
2551
  inline __isl_give isl_schedule_node *copy() && = delete;
2552
  inline __isl_keep isl_schedule_node *get() const;
2553
  inline __isl_give isl_schedule_node *release();
2554
  inline bool is_null() const;
2555
  inline explicit operator bool() const;
2556
  inline ctx get_ctx() const;
2557
  inline std::string to_str() const;
2558
  inline void dump() const;
2559
2560
  inline schedule_node align_params(space space) const;
2561
  inline schedule_node ancestor(int generation) const;
2562
  inline boolean band_member_get_coincident(int pos) const;
2563
  inline schedule_node band_member_set_coincident(int pos, int coincident) const;
2564
  inline schedule_node band_set_ast_build_options(union_set options) const;
2565
  inline schedule_node child(int pos) const;
2566
  inline set context_get_context() const;
2567
  inline schedule_node cut() const;
2568
  inline union_set domain_get_domain() const;
2569
  inline union_pw_multi_aff expansion_get_contraction() const;
2570
  inline union_map expansion_get_expansion() const;
2571
  inline union_map extension_get_extension() const;
2572
  inline union_set filter_get_filter() const;
2573
  inline schedule_node first_child() const;
2574
  inline stat foreach_ancestor_top_down(const std::function<stat(schedule_node)> &fn) const;
2575
  static inline schedule_node from_domain(union_set domain);
2576
  static inline schedule_node from_extension(union_map extension);
2577
  inline int get_ancestor_child_position(const schedule_node &ancestor) const;
2578
  inline schedule_node get_child(int pos) const;
2579
  inline int get_child_position() const;
2580
  inline union_set get_domain() const;
2581
  inline multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
2582
  inline union_map get_prefix_schedule_relation() const;
2583
  inline union_map get_prefix_schedule_union_map() const;
2584
  inline union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
2585
  inline schedule get_schedule() const;
2586
  inline int get_schedule_depth() const;
2587
  inline schedule_node get_shared_ancestor(const schedule_node &node2) const;
2588
  inline union_pw_multi_aff get_subtree_contraction() const;
2589
  inline union_map get_subtree_expansion() const;
2590
  inline union_map get_subtree_schedule_union_map() const;
2591
  inline int get_tree_depth() const;
2592
  inline union_set get_universe_domain() const;
2593
  inline schedule_node graft_after(schedule_node graft) const;
2594
  inline schedule_node graft_before(schedule_node graft) const;
2595
  inline schedule_node group(id group_id) const;
2596
  inline set guard_get_guard() const;
2597
  inline boolean has_children() const;
2598
  inline boolean has_next_sibling() const;
2599
  inline boolean has_parent() const;
2600
  inline boolean has_previous_sibling() const;
2601
  inline schedule_node insert_context(set context) const;
2602
  inline schedule_node insert_filter(union_set filter) const;
2603
  inline schedule_node insert_guard(set context) const;
2604
  inline schedule_node insert_mark(id mark) const;
2605
  inline schedule_node insert_partial_schedule(multi_union_pw_aff schedule) const;
2606
  inline schedule_node insert_sequence(union_set_list filters) const;
2607
  inline schedule_node insert_set(union_set_list filters) const;
2608
  inline boolean is_equal(const schedule_node &node2) const;
2609
  inline boolean is_subtree_anchored() const;
2610
  inline id mark_get_id() const;
2611
  inline int n_children() const;
2612
  inline schedule_node next_sibling() const;
2613
  inline schedule_node order_after(union_set filter) const;
2614
  inline schedule_node order_before(union_set filter) const;
2615
  inline schedule_node parent() const;
2616
  inline schedule_node previous_sibling() const;
2617
  inline schedule_node reset_user() const;
2618
  inline schedule_node root() const;
2619
  inline schedule_node sequence_splice_child(int pos) const;
2620
};
2621
2622
// declarations for isl::set
2623
inline set manage(__isl_take isl_set *ptr);
2624
inline set manage_copy(__isl_keep isl_set *ptr);
2625
2626
class set {
2627
  friend inline set manage(__isl_take isl_set *ptr);
2628
  friend inline set manage_copy(__isl_keep isl_set *ptr);
2629
2630
  isl_set *ptr = nullptr;
2631
2632
  inline explicit set(__isl_take isl_set *ptr);
2633
2634
public:
2635
  inline /* implicit */ set();
2636
  inline /* implicit */ set(const set &obj);
2637
  inline /* implicit */ set(std::nullptr_t);
2638
  inline explicit set(ctx ctx, const std::string &str);
2639
  inline /* implicit */ set(basic_set bset);
2640
  inline /* implicit */ set(point pnt);
2641
  inline explicit set(union_set uset);
2642
  inline set &operator=(set obj);
2643
  inline ~set();
2644
  inline __isl_give isl_set *copy() const &;
2645
  inline __isl_give isl_set *copy() && = delete;
2646
  inline __isl_keep isl_set *get() const;
2647
  inline __isl_give isl_set *release();
2648
  inline bool is_null() const;
2649
  inline explicit operator bool() const;
2650
  inline ctx get_ctx() const;
2651
  inline std::string to_str() const;
2652
  inline void dump() const;
2653
2654
  inline set add_constraint(constraint constraint) const;
2655
  inline set add_dims(isl::dim type, unsigned int n) const;
2656
  inline basic_set affine_hull() const;
2657
  inline set align_params(space model) const;
2658
  inline set apply(map map) const;
2659
  inline basic_set bounded_simple_hull() const;
2660
  static inline set box_from_points(point pnt1, point pnt2);
2661
  inline set coalesce() const;
2662
  inline basic_set coefficients() const;
2663
  inline set complement() const;
2664
  inline basic_set convex_hull() const;
2665
  inline val count_val() const;
2666
  inline set detect_equalities() const;
2667
  inline unsigned int dim(isl::dim type) const;
2668
  inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2669
  inline boolean dim_has_any_upper_bound(isl::dim type, unsigned int pos) const;
2670
  inline boolean dim_has_lower_bound(isl::dim type, unsigned int pos) const;
2671
  inline boolean dim_has_upper_bound(isl::dim type, unsigned int pos) const;
2672
  inline boolean dim_is_bounded(isl::dim type, unsigned int pos) const;
2673
  inline pw_aff dim_max(int pos) const;
2674
  inline pw_aff dim_min(int pos) const;
2675
  inline set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2676
  inline set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2677
  inline set drop_unused_params() const;
2678
  inline set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2679
  static inline set empty(space space);
2680
  inline set equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2681
  inline int find_dim_by_id(isl::dim type, const id &id) const;
2682
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2683
  inline set fix_si(isl::dim type, unsigned int pos, int value) const;
2684
  inline set fix_val(isl::dim type, unsigned int pos, val v) const;
2685
  inline set flat_product(set set2) const;
2686
  inline set flatten() const;
2687
  inline map flatten_map() const;
2688
  inline int follows_at(const set &set2, int pos) const;
2689
  inline stat foreach_basic_set(const std::function<stat(basic_set)> &fn) const;
2690
  inline stat foreach_point(const std::function<stat(point)> &fn) const;
2691
  static inline set from_multi_aff(multi_aff ma);
2692
  static inline set from_multi_pw_aff(multi_pw_aff mpa);
2693
  inline set from_params() const;
2694
  static inline set from_pw_aff(pw_aff pwaff);
2695
  static inline set from_pw_multi_aff(pw_multi_aff pma);
2696
  inline basic_set_list get_basic_set_list() const;
2697
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
2698
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2699
  inline space get_space() const;
2700
  inline val get_stride(int pos) const;
2701
  inline id get_tuple_id() const;
2702
  inline std::string get_tuple_name() const;
2703
  inline set gist(set context) const;
2704
  inline set gist_basic_set(basic_set context) const;
2705
  inline set gist_params(set context) const;
2706
  inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
2707
  inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
2708
  inline boolean has_equal_space(const set &set2) const;
2709
  inline boolean has_tuple_id() const;
2710
  inline boolean has_tuple_name() const;
2711
  inline map identity() const;
2712
  inline pw_aff indicator_function() const;
2713
  inline set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2714
  inline set intersect(set set2) const;
2715
  inline set intersect_params(set params) const;
2716
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2717
  inline boolean is_bounded() const;
2718
  inline boolean is_box() const;
2719
  inline boolean is_disjoint(const set &set2) const;
2720
  inline boolean is_empty() const;
2721
  inline boolean is_equal(const set &set2) const;
2722
  inline boolean is_params() const;
2723
  inline boolean is_singleton() const;
2724
  inline boolean is_strict_subset(const set &set2) const;
2725
  inline boolean is_subset(const set &set2) const;
2726
  inline boolean is_wrapping() const;
2727
  inline map lex_ge_set(set set2) const;
2728
  inline map lex_gt_set(set set2) const;
2729
  inline map lex_le_set(set set2) const;
2730
  inline map lex_lt_set(set set2) const;
2731
  inline set lexmax() const;
2732
  inline pw_multi_aff lexmax_pw_multi_aff() const;
2733
  inline set lexmin() const;
2734
  inline pw_multi_aff lexmin_pw_multi_aff() const;
2735
  inline set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2736
  inline set lower_bound_val(isl::dim type, unsigned int pos, val value) const;
2737
  inline val max_val(const aff &obj) const;
2738
  inline val min_val(const aff &obj) const;
2739
  inline set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2740
  inline int n_basic_set() const;
2741
  inline unsigned int n_dim() const;
2742
  static inline set nat_universe(space dim);
2743
  inline set neg() const;
2744
  inline set params() const;
2745
  inline int plain_cmp(const set &set2) const;
2746
  inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2747
  inline boolean plain_is_disjoint(const set &set2) const;
2748
  inline boolean plain_is_empty() const;
2749
  inline boolean plain_is_equal(const set &set2) const;
2750
  inline boolean plain_is_universe() const;
2751
  inline basic_set plain_unshifted_simple_hull() const;
2752
  inline basic_set polyhedral_hull() const;
2753
  inline set preimage_multi_aff(multi_aff ma) const;
2754
  inline set preimage_multi_pw_aff(multi_pw_aff mpa) const;
2755
  inline set preimage_pw_multi_aff(pw_multi_aff pma) const;
2756
  inline set product(set set2) const;
2757
  inline map project_onto_map(isl::dim type, unsigned int first, unsigned int n) const;
2758
  inline set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2759
  inline set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2760
  inline set remove_divs() const;
2761
  inline set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2762
  inline set remove_redundancies() const;
2763
  inline set remove_unknown_divs() const;
2764
  inline set reset_space(space dim) const;
2765
  inline set reset_tuple_id() const;
2766
  inline set reset_user() const;
2767
  inline basic_set sample() const;
2768
  inline point sample_point() const;
2769
  inline set set_dim_id(isl::dim type, unsigned int pos, id id) const;
2770
  inline set set_tuple_id(id id) const;
2771
  inline set set_tuple_name(const std::string &s) const;
2772
  inline basic_set simple_hull() const;
2773
  inline int size() const;
2774
  inline basic_set solutions() const;
2775
  inline set split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2776
  inline set subtract(set set2) const;
2777
  inline set sum(set set2) const;
2778
  inline set unite(set set2) const;
2779
  static inline set universe(space space);
2780
  inline basic_set unshifted_simple_hull() const;
2781
  inline basic_set unshifted_simple_hull_from_set_list(set_list list) const;
2782
  inline map unwrap() const;
2783
  inline set upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2784
  inline set upper_bound_val(isl::dim type, unsigned int pos, val value) const;
2785
  inline map wrapped_domain_map() const;
2786
};
2787
2788
// declarations for isl::set_list
2789
inline set_list manage(__isl_take isl_set_list *ptr);
2790
inline set_list manage_copy(__isl_keep isl_set_list *ptr);
2791
2792
class set_list {
2793
  friend inline set_list manage(__isl_take isl_set_list *ptr);
2794
  friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
2795
2796
  isl_set_list *ptr = nullptr;
2797
2798
  inline explicit set_list(__isl_take isl_set_list *ptr);
2799
2800
public:
2801
  inline /* implicit */ set_list();
2802
  inline /* implicit */ set_list(const set_list &obj);
2803
  inline /* implicit */ set_list(std::nullptr_t);
2804
  inline set_list &operator=(set_list obj);
2805
  inline ~set_list();
2806
  inline __isl_give isl_set_list *copy() const &;
2807
  inline __isl_give isl_set_list *copy() && = delete;
2808
  inline __isl_keep isl_set_list *get() const;
2809
  inline __isl_give isl_set_list *release();
2810
  inline bool is_null() const;
2811
  inline explicit operator bool() const;
2812
  inline ctx get_ctx() const;
2813
  inline void dump() const;
2814
2815
  inline set_list add(set el) const;
2816
  static inline set_list alloc(ctx ctx, int n);
2817
  inline set_list concat(set_list list2) const;
2818
  inline set_list drop(unsigned int first, unsigned int n) const;
2819
  inline stat foreach(const std::function<stat(set)> &fn) const;
2820
  static inline set_list from_set(set el);
2821
  inline set get_at(int index) const;
2822
  inline set get_set(int index) const;
2823
  inline set_list insert(unsigned int pos, set el) const;
2824
  inline int n_set() const;
2825
  inline set_list reverse() const;
2826
  inline set_list set_set(int index, set el) const;
2827
  inline int size() const;
2828
  inline set_list swap(unsigned int pos1, unsigned int pos2) const;
2829
  inline set unite() const;
2830
};
2831
2832
// declarations for isl::space
2833
inline space manage(__isl_take isl_space *ptr);
2834
inline space manage_copy(__isl_keep isl_space *ptr);
2835
2836
class space {
2837
  friend inline space manage(__isl_take isl_space *ptr);
2838
  friend inline space manage_copy(__isl_keep isl_space *ptr);
2839
2840
  isl_space *ptr = nullptr;
2841
2842
  inline explicit space(__isl_take isl_space *ptr);
2843
2844
public:
2845
  inline /* implicit */ space();
2846
  inline /* implicit */ space(const space &obj);
2847
  inline /* implicit */ space(std::nullptr_t);
2848
  inline explicit space(ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
2849
  inline explicit space(ctx ctx, unsigned int nparam, unsigned int dim);
2850
  inline space &operator=(space obj);
2851
  inline ~space();
2852
  inline __isl_give isl_space *copy() const &;
2853
  inline __isl_give isl_space *copy() && = delete;
2854
  inline __isl_keep isl_space *get() const;
2855
  inline __isl_give isl_space *release();
2856
  inline bool is_null() const;
2857
  inline explicit operator bool() const;
2858
  inline ctx get_ctx() const;
2859
  inline std::string to_str() const;
2860
  inline void dump() const;
2861
2862
  inline space add_dims(isl::dim type, unsigned int n) const;
2863
  inline space add_param_id(id id) const;
2864
  inline space align_params(space dim2) const;
2865
  inline boolean can_curry() const;
2866
  inline boolean can_range_curry() const;
2867
  inline boolean can_uncurry() const;
2868
  inline boolean can_zip() const;
2869
  inline space curry() const;
2870
  inline unsigned int dim(isl::dim type) const;
2871
  inline space domain() const;
2872
  inline space domain_factor_domain() const;
2873
  inline space domain_factor_range() const;
2874
  inline boolean domain_is_wrapping() const;
2875
  inline space domain_map() const;
2876
  inline space domain_product(space right) const;
2877
  inline space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
2878
  inline space factor_domain() const;
2879
  inline space factor_range() const;
2880
  inline int find_dim_by_id(isl::dim type, const id &id) const;
2881
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2882
  inline space flatten_domain() const;
2883
  inline space flatten_range() const;
2884
  inline space from_domain() const;
2885
  inline space from_range() const;
2886
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
2887
  inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2888
  inline id get_tuple_id(isl::dim type) const;
2889
  inline std::string get_tuple_name(isl::dim type) const;
2890
  inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
2891
  inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
2892
  inline boolean has_equal_params(const space &space2) const;
2893
  inline boolean has_equal_tuples(const space &space2) const;
2894
  inline boolean has_tuple_id(isl::dim type) const;
2895
  inline boolean has_tuple_name(isl::dim type) const;
2896
  inline space insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2897
  inline boolean is_domain(const space &space2) const;
2898
  inline boolean is_equal(const space &space2) const;
2899
  inline boolean is_map() const;
2900
  inline boolean is_params() const;
2901
  inline boolean is_product() const;
2902
  inline boolean is_range(const space &space2) const;
2903
  inline boolean is_set() const;
2904
  inline boolean is_wrapping() const;
2905
  inline space join(space right) const;
2906
  inline space map_from_domain_and_range(space range) const;
2907
  inline space map_from_set() const;
2908
  inline space move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2909
  inline space params() const;
2910
  static inline space params_alloc(ctx ctx, unsigned int nparam);
2911
  inline space product(space right) const;
2912
  inline space range() const;
2913
  inline space range_curry() const;
2914
  inline space range_factor_domain() const;
2915
  inline space range_factor_range() const;
2916
  inline boolean range_is_wrapping() const;
2917
  inline space range_map() const;
2918
  inline space range_product(space right) const;
2919
  inline space reset_tuple_id(isl::dim type) const;
2920
  inline space reset_user() const;
2921
  inline space reverse() const;
2922
  inline space set_dim_id(isl::dim type, unsigned int pos, id id) const;
2923
  inline space set_from_params() const;
2924
  inline space set_tuple_id(isl::dim type, id id) const;
2925
  inline space set_tuple_name(isl::dim type, const std::string &s) const;
2926
  inline boolean tuple_is_equal(isl::dim type1, const space &space2, isl::dim type2) const;
2927
  inline space uncurry() const;
2928
  inline space unwrap() const;
2929
  inline space wrap() const;
2930
  inline space zip() const;
2931
};
2932
2933
// declarations for isl::term
2934
inline term manage(__isl_take isl_term *ptr);
2935
inline term manage_copy(__isl_keep isl_term *ptr);
2936
2937
class term {
2938
  friend inline term manage(__isl_take isl_term *ptr);
2939
  friend inline term manage_copy(__isl_keep isl_term *ptr);
2940
2941
  isl_term *ptr = nullptr;
2942
2943
  inline explicit term(__isl_take isl_term *ptr);
2944
2945
public:
2946
  inline /* implicit */ term();
2947
  inline /* implicit */ term(const term &obj);
2948
  inline /* implicit */ term(std::nullptr_t);
2949
  inline term &operator=(term obj);
2950
  inline ~term();
2951
  inline __isl_give isl_term *copy() const &;
2952
  inline __isl_give isl_term *copy() && = delete;
2953
  inline __isl_keep isl_term *get() const;
2954
  inline __isl_give isl_term *release();
2955
  inline bool is_null() const;
2956
  inline explicit operator bool() const;
2957
  inline ctx get_ctx() const;
2958
2959
  inline unsigned int dim(isl::dim type) const;
2960
  inline val get_coefficient_val() const;
2961
  inline aff get_div(unsigned int pos) const;
2962
  inline int get_exp(isl::dim type, unsigned int pos) const;
2963
};
2964
2965
// declarations for isl::union_access_info
2966
inline union_access_info manage(__isl_take isl_union_access_info *ptr);
2967
inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2968
2969
class union_access_info {
2970
  friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
2971
  friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2972
2973
  isl_union_access_info *ptr = nullptr;
2974
2975
  inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
2976
2977
public:
2978
  inline /* implicit */ union_access_info();
2979
  inline /* implicit */ union_access_info(const union_access_info &obj);
2980
  inline /* implicit */ union_access_info(std::nullptr_t);
2981
  inline explicit union_access_info(union_map sink);
2982
  inline union_access_info &operator=(union_access_info obj);
2983
  inline ~union_access_info();
2984
  inline __isl_give isl_union_access_info *copy() const &;
2985
  inline __isl_give isl_union_access_info *copy() && = delete;
2986
  inline __isl_keep isl_union_access_info *get() const;
2987
  inline __isl_give isl_union_access_info *release();
2988
  inline bool is_null() const;
2989
  inline explicit operator bool() const;
2990
  inline ctx get_ctx() const;
2991
  inline std::string to_str() const;
2992
2993
  inline union_flow compute_flow() const;
2994
  inline union_access_info set_kill(union_map kill) const;
2995
  inline union_access_info set_may_source(union_map may_source) const;
2996
  inline union_access_info set_must_source(union_map must_source) const;
2997
  inline union_access_info set_schedule(schedule schedule) const;
2998
  inline union_access_info set_schedule_map(union_map schedule_map) const;
2999
};
3000
3001
// declarations for isl::union_flow
3002
inline union_flow manage(__isl_take isl_union_flow *ptr);
3003
inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3004
3005
class union_flow {
3006
  friend inline union_flow manage(__isl_take isl_union_flow *ptr);
3007
  friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3008
3009
  isl_union_flow *ptr = nullptr;
3010
3011
  inline explicit union_flow(__isl_take isl_union_flow *ptr);
3012
3013
public:
3014
  inline /* implicit */ union_flow();
3015
  inline /* implicit */ union_flow(const union_flow &obj);
3016
  inline /* implicit */ union_flow(std::nullptr_t);
3017
  inline union_flow &operator=(union_flow obj);
3018
  inline ~union_flow();
3019
  inline __isl_give isl_union_flow *copy() const &;
3020
  inline __isl_give isl_union_flow *copy() && = delete;
3021
  inline __isl_keep isl_union_flow *get() const;
3022
  inline __isl_give isl_union_flow *release();
3023
  inline bool is_null() const;
3024
  inline explicit operator bool() const;
3025
  inline ctx get_ctx() const;
3026
  inline std::string to_str() const;
3027
3028
  inline union_map get_full_may_dependence() const;
3029
  inline union_map get_full_must_dependence() const;
3030
  inline union_map get_may_dependence() const;
3031
  inline union_map get_may_no_source() const;
3032
  inline union_map get_must_dependence() const;
3033
  inline union_map get_must_no_source() const;
3034
};
3035
3036
// declarations for isl::union_map
3037
inline union_map manage(__isl_take isl_union_map *ptr);
3038
inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3039
3040
class union_map {
3041
  friend inline union_map manage(__isl_take isl_union_map *ptr);
3042
  friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3043
3044
  isl_union_map *ptr = nullptr;
3045
3046
  inline explicit union_map(__isl_take isl_union_map *ptr);
3047
3048
public:
3049
  inline /* implicit */ union_map();
3050
  inline /* implicit */ union_map(const union_map &obj);
3051
  inline /* implicit */ union_map(std::nullptr_t);
3052
  inline explicit union_map(union_pw_multi_aff upma);
3053
  inline /* implicit */ union_map(basic_map bmap);
3054
  inline /* implicit */ union_map(map map);
3055
  inline explicit union_map(ctx ctx, const std::string &str);
3056
  inline union_map &operator=(union_map obj);
3057
  inline ~union_map();
3058
  inline __isl_give isl_union_map *copy() const &;
3059
  inline __isl_give isl_union_map *copy() && = delete;
3060
  inline __isl_keep isl_union_map *get() const;
3061
  inline __isl_give isl_union_map *release();
3062
  inline bool is_null() const;
3063
  inline explicit operator bool() const;
3064
  inline ctx get_ctx() const;
3065
  inline std::string to_str() const;
3066
  inline void dump() const;
3067
3068
  inline union_map add_map(map map) const;
3069
  inline union_map affine_hull() const;
3070
  inline union_map align_params(space model) const;
3071
  inline union_map apply_domain(union_map umap2) const;
3072
  inline union_map apply_range(union_map umap2) const;
3073
  inline union_map coalesce() const;
3074
  inline boolean contains(const space &space) const;
3075
  inline union_map curry() const;
3076
  inline union_set deltas() const;
3077
  inline union_map deltas_map() const;
3078
  inline union_map detect_equalities() const;
3079
  inline unsigned int dim(isl::dim type) const;
3080
  inline union_set domain() const;
3081
  inline union_map domain_factor_domain() const;
3082
  inline union_map domain_factor_range() const;
3083
  inline union_map domain_map() const;
3084
  inline union_pw_multi_aff domain_map_union_pw_multi_aff() const;
3085
  inline union_map domain_product(union_map umap2) const;
3086
  static inline union_map empty(space space);
3087
  inline union_map eq_at(multi_union_pw_aff mupa) const;
3088
  inline map extract_map(space dim) const;
3089
  inline union_map factor_domain() const;
3090
  inline union_map factor_range() const;
3091
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3092
  inline union_map fixed_power(val exp) const;
3093
  inline union_map flat_domain_product(union_map umap2) const;
3094
  inline union_map flat_range_product(union_map umap2) const;
3095
  inline stat foreach_map(const std::function<stat(map)> &fn) const;
3096
  static inline union_map from(multi_union_pw_aff mupa);
3097
  static inline union_map from_domain(union_set uset);
3098
  static inline union_map from_domain_and_range(union_set domain, union_set range);
3099
  static inline union_map from_range(union_set uset);
3100
  static inline union_map from_union_pw_aff(union_pw_aff upa);
3101
  inline id get_dim_id(isl::dim type, unsigned int pos) const;
3102
  inline uint32_t get_hash() const;
3103
  inline map_list get_map_list() const;
3104
  inline space get_space() const;
3105
  inline union_map gist(union_map context) const;
3106
  inline union_map gist_domain(union_set uset) const;
3107
  inline union_map gist_params(set set) const;
3108
  inline union_map gist_range(union_set uset) const;
3109
  inline union_map intersect(union_map umap2) const;
3110
  inline union_map intersect_domain(union_set uset) const;
3111
  inline union_map intersect_params(set set) const;
3112
  inline union_map intersect_range(union_set uset) const;
3113
  inline union_map intersect_range_factor_range(union_map factor) const;
3114
  inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
3115
  inline boolean is_bijective() const;
3116
  inline boolean is_disjoint(const union_map &umap2) const;
3117
  inline boolean is_empty() const;
3118
  inline boolean is_equal(const union_map &umap2) const;
3119
  inline boolean is_identity() const;
3120
  inline boolean is_injective() const;
3121
  inline boolean is_single_valued() const;
3122
  inline boolean is_strict_subset(const union_map &umap2) const;
3123
  inline boolean is_subset(const union_map &umap2) const;
3124
  inline union_map lex_ge_union_map(union_map umap2) const;
3125
  inline union_map lex_gt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const;
3126
  inline union_map lex_gt_union_map(union_map umap2) const;
3127
  inline union_map lex_le_union_map(union_map umap2) const;
3128
  inline union_map lex_lt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const;
3129
  inline union_map lex_lt_union_map(union_map umap2) const;
3130
  inline union_map lexmax() const;
3131
  inline union_map lexmin() const;
3132
  inline int n_map() const;
3133
  inline set params() const;
3134
  inline boolean plain_is_empty() const;
3135
  inline boolean plain_is_injective() const;
3136
  inline union_map polyhedral_hull() const;
3137
  inline union_map preimage_domain_multi_aff(multi_aff ma) const;
3138
  inline union_map preimage_domain_multi_pw_aff(multi_pw_aff mpa) const;
3139
  inline union_map preimage_domain_pw_multi_aff(pw_multi_aff pma) const;
3140
  inline union_map preimage_domain_union_pw_multi_aff(union_pw_multi_aff upma) const;
3141
  inline union_map preimage_range_multi_aff(multi_aff ma) const;
3142
  inline union_map preimage_range_pw_multi_aff(pw_multi_aff pma) const;
3143
  inline union_map preimage_range_union_pw_multi_aff(union_pw_multi_aff upma) const;
3144
  inline union_map product(union_map umap2) const;
3145
  inline union_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
3146
  inline union_map project_out_all_params() const;
3147
  inline union_set range() const;
3148
  inline union_map range_curry() const;
3149
  inline union_map range_factor_domain() const;
3150
  inline union_map range_factor_range() const;
3151
  inline union_map range_map() const;
3152
  inline union_map range_product(union_map umap2) const;
3153
  inline union_map remove_divs() const;
3154
  inline union_map remove_redundancies() const;
3155
  inline union_map reset_user() const;
3156
  inline union_map reverse() const;
3157
  inline basic_map sample() const;
3158
  inline union_map simple_hull() const;
3159
  inline union_map subtract(union_map umap2) const;
3160
  inline union_map subtract_domain(union_set dom) const;
3161
  inline union_map subtract_range(union_set dom) const;
3162
  inline union_map uncurry() const;
3163
  inline union_map unite(union_map umap2) const;
3164
  inline union_map universe() const;
3165
  inline union_set wrap() const;
3166
  inline union_map zip() const;
3167
};
3168
3169
// declarations for isl::union_map_list
3170
inline union_map_list manage(__isl_take isl_union_map_list *ptr);
3171
inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
3172
3173
class union_map_list {
3174
  friend inline union_map_list manage(__isl_take isl_union_map_list *ptr);
3175
  friend inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
3176
3177
  isl_union_map_list *ptr = nullptr;
3178
3179
  inline explicit union_map_list(__isl_take isl_union_map_list *ptr);
3180
3181
public:
3182
  inline /* implicit */ union_map_list();
3183
  inline /* implicit */ union_map_list(const union_map_list &obj);
3184
  inline /* implicit */ union_map_list(std::nullptr_t);
3185
  inline union_map_list &operator=(union_map_list obj);
3186
  inline ~union_map_list();
3187
  inline __isl_give isl_union_map_list *copy() const &;
3188
  inline __isl_give isl_union_map_list *copy() && = delete;
3189
  inline __isl_keep isl_union_map_list *get() const;
3190
  inline __isl_give isl_union_map_list *release();
3191
  inline bool is_null() const;
3192
  inline explicit operator bool() const;
3193
  inline ctx get_ctx() const;
3194
  inline void dump() const;
3195
3196
  inline union_map_list add(union_map el) const;
3197
  static inline union_map_list alloc(ctx ctx, int n);
3198
  inline union_map_list concat(union_map_list list2) const;
3199
  inline union_map_list drop(unsigned int first, unsigned int n) const;
3200
  inline stat foreach(const std::function<stat(union_map)> &fn) const;
3201
  static inline union_map_list from_union_map(union_map el);
3202
  inline union_map get_at(int index) const;
3203
  inline union_map get_union_map(int index) const;
3204
  inline union_map_list insert(unsigned int pos, union_map el) const;
3205
  inline int n_union_map() const;
3206
  inline union_map_list reverse() const;
3207
  inline union_map_list set_union_map(int index, union_map el) const;
3208
  inline int size() const;
3209
  inline union_map_list swap(unsigned int pos1, unsigned int pos2) const;
3210
};
3211
3212
// declarations for isl::union_pw_aff
3213
inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3214
inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3215
3216
class union_pw_aff {
3217
  friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3218
  friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3219
3220
  isl_union_pw_aff *ptr = nullptr;
3221
3222
  inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
3223
3224
public:
3225
  inline /* implicit */ union_pw_aff();
3226
  inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
3227
  inline /* implicit */ union_pw_aff(std::nullptr_t);
3228
  inline /* implicit */ union_pw_aff(pw_aff pa);
3229
  inline explicit union_pw_aff(union_set domain, val v);
3230
  inline explicit union_pw_aff(ctx ctx, const std::string &str);
3231
  inline union_pw_aff &operator=(union_pw_aff obj);
3232
  inline ~union_pw_aff();
3233
  inline __isl_give isl_union_pw_aff *copy() const &;
3234
  inline __isl_give isl_union_pw_aff *copy() && = delete;
3235
  inline __isl_keep isl_union_pw_aff *get() const;
3236
  inline __isl_give isl_union_pw_aff *release();
3237
  inline bool is_null() const;
3238
  inline explicit operator bool() const;
3239
  inline ctx get_ctx() const;
3240
  inline std::string to_str() const;
3241
  inline void dump() const;
3242
3243
  inline union_pw_aff add(union_pw_aff upa2) const;
3244
  inline union_pw_aff add_pw_aff(pw_aff pa) const;
3245
  static inline union_pw_aff aff_on_domain(union_set domain, aff aff);
3246
  inline union_pw_aff align_params(space model) const;
3247
  inline union_pw_aff coalesce() const;
3248
  inline unsigned int dim(isl::dim type) const;
3249
  inline union_set domain() const;
3250
  inline union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3251
  static inline union_pw_aff empty(space space);
3252
  inline pw_aff extract_pw_aff(space space) const;
3253
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3254
  inline union_pw_aff floor() const;
3255
  inline stat foreach_pw_aff(const std::function<stat(pw_aff)> &fn) const;
3256
  inline pw_aff_list get_pw_aff_list() const;
3257
  inline space get_space() const;
3258
  inline union_pw_aff gist(union_set context) const;
3259
  inline union_pw_aff gist_params(set context) const;
3260
  inline union_pw_aff intersect_domain(union_set uset) const;
3261
  inline union_pw_aff intersect_params(set set) const;
3262
  inline boolean involves_nan() const;
3263
  inline val max_val() const;
3264
  inline val min_val() const;
3265
  inline union_pw_aff mod_val(val f) const;
3266
  inline int n_pw_aff() const;
3267
  inline union_pw_aff neg() const;
3268
  static inline union_pw_aff param_on_domain_id(union_set domain, id id);
3269
  inline boolean plain_is_equal(const union_pw_aff &upa2) const;
3270
  inline union_pw_aff pullback(union_pw_multi_aff upma) const;
3271
  static inline union_pw_aff pw_aff_on_domain(union_set domain, pw_aff pa);
3272
  inline union_pw_aff reset_user() const;
3273
  inline union_pw_aff scale_down_val(val v) const;
3274
  inline union_pw_aff scale_val(val v) const;
3275
  inline union_pw_aff sub(union_pw_aff upa2) const;
3276
  inline union_pw_aff subtract_domain(union_set uset) const;
3277
  inline union_pw_aff union_add(union_pw_aff upa2) const;
3278
  inline union_set zero_union_set() const;
3279
};
3280
3281
// declarations for isl::union_pw_aff_list
3282
inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3283
inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3284
3285
class union_pw_aff_list {
3286
  friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3287
  friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3288
3289
  isl_union_pw_aff_list *ptr = nullptr;
3290
3291
  inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3292
3293
public:
3294
  inline /* implicit */ union_pw_aff_list();
3295
  inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
3296
  inline /* implicit */ union_pw_aff_list(std::nullptr_t);
3297
  inline union_pw_aff_list &operator=(union_pw_aff_list obj);
3298
  inline ~union_pw_aff_list();
3299
  inline __isl_give isl_union_pw_aff_list *copy() const &;
3300
  inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3301
  inline __isl_keep isl_union_pw_aff_list *get() const;
3302
  inline __isl_give isl_union_pw_aff_list *release();
3303
  inline bool is_null() const;
3304
  inline explicit operator bool() const;
3305
  inline ctx get_ctx() const;
3306
  inline void dump() const;
3307
3308
  inline union_pw_aff_list add(union_pw_aff el) const;
3309
  static inline union_pw_aff_list alloc(ctx ctx, int n);
3310
  inline union_pw_aff_list concat(union_pw_aff_list list2) const;
3311
  inline union_pw_aff_list drop(unsigned int first, unsigned int n) const;
3312
  inline stat foreach(const std::function<stat(union_pw_aff)> &fn) const;
3313
  static inline union_pw_aff_list from_union_pw_aff(union_pw_aff el);
3314
  inline union_pw_aff get_at(int index) const;
3315
  inline union_pw_aff get_union_pw_aff(int index) const;
3316
  inline union_pw_aff_list insert(unsigned int pos, union_pw_aff el) const;
3317
  inline int n_union_pw_aff() const;
3318
  inline union_pw_aff_list reverse() const;
3319
  inline union_pw_aff_list set_union_pw_aff(int index, union_pw_aff el) const;
3320
  inline int size() const;
3321
  inline union_pw_aff_list swap(unsigned int pos1, unsigned int pos2) const;
3322
};
3323
3324
// declarations for isl::union_pw_multi_aff
3325
inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3326
inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3327
3328
class union_pw_multi_aff {
3329
  friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3330
  friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3331
3332
  isl_union_pw_multi_aff *ptr = nullptr;
3333
3334
  inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3335
3336
public:
3337
  inline /* implicit */ union_pw_multi_aff();
3338
  inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
3339
  inline /* implicit */ union_pw_multi_aff(std::nullptr_t);
3340
  inline /* implicit */ union_pw_multi_aff(aff aff);
3341
  inline /* implicit */ union_pw_multi_aff(pw_multi_aff pma);
3342
  inline explicit union_pw_multi_aff(union_set uset);
3343
  inline explicit union_pw_multi_aff(union_map umap);
3344
  inline explicit union_pw_multi_aff(ctx ctx, const std::string &str);
3345
  inline /* implicit */ union_pw_multi_aff(union_pw_aff upa);
3346
  inline explicit union_pw_multi_aff(multi_union_pw_aff mupa);
3347
  inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
3348
  inline ~union_pw_multi_aff();
3349
  inline __isl_give isl_union_pw_multi_aff *copy() const &;
3350
  inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
3351
  inline __isl_keep isl_union_pw_multi_aff *get() const;
3352
  inline __isl_give isl_union_pw_multi_aff *release();
3353
  inline bool is_null() const;
3354
  inline explicit operator bool() const;
3355
  inline ctx get_ctx() const;
3356
  inline std::string to_str() const;
3357
  inline void dump() const;
3358
3359
  inline union_pw_multi_aff add(union_pw_multi_aff upma2) const;
3360
  inline union_pw_multi_aff add_pw_multi_aff(pw_multi_aff pma) const;
3361
  inline union_pw_multi_aff align_params(space model) const;
3362
  inline union_pw_multi_aff coalesce() const;
3363
  inline unsigned int dim(isl::dim type) const;
3364
  inline union_set domain() const;
3365
  inline union_pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3366
  static inline union_pw_multi_aff empty(space space);
3367
  inline pw_multi_aff extract_pw_multi_aff(space space) const;
3368
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3369
  inline union_pw_multi_aff flat_range_product(union_pw_multi_aff upma2) const;
3370
  inline stat foreach_pw_multi_aff(const std::function<stat(pw_multi_aff)> &fn) const;
3371
  static inline union_pw_multi_aff from_union_set(union_set uset);
3372
  inline pw_multi_aff_list get_pw_multi_aff_list() const;
3373
  inline space get_space() const;
3374
  inline union_pw_aff get_union_pw_aff(int pos) const;
3375
  inline union_pw_multi_aff gist(union_set context) const;
3376
  inline union_pw_multi_aff gist_params(set context) const;
3377
  inline union_pw_multi_aff intersect_domain(union_set uset) const;
3378
  inline union_pw_multi_aff intersect_params(set set) const;
3379
  inline boolean involves_nan() const;
3380
  static inline union_pw_multi_aff multi_val_on_domain(union_set domain, multi_val mv);
3381
  inline int n_pw_multi_aff() const;
3382
  inline union_pw_multi_aff neg() const;
3383
  inline boolean plain_is_equal(const union_pw_multi_aff &upma2) const;
3384
  inline union_pw_multi_aff pullback(union_pw_multi_aff upma2) const;
3385
  inline union_pw_multi_aff reset_user() const;
3386
  inline union_pw_multi_aff scale_down_val(val val) const;
3387
  inline union_pw_multi_aff scale_multi_val(multi_val mv) const;
3388
  inline union_pw_multi_aff scale_val(val val) const;
3389
  inline union_pw_multi_aff sub(union_pw_multi_aff upma2) const;
3390
  inline union_pw_multi_aff subtract_domain(union_set uset) const;
3391
  inline union_pw_multi_aff union_add(union_pw_multi_aff upma2) const;
3392
};
3393
3394
// declarations for isl::union_pw_multi_aff_list
3395
inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3396
inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3397
3398
class union_pw_multi_aff_list {
3399
  friend inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3400
  friend inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3401
3402
  isl_union_pw_multi_aff_list *ptr = nullptr;
3403
3404
  inline explicit union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr);
3405
3406
public:
3407
  inline /* implicit */ union_pw_multi_aff_list();
3408
  inline /* implicit */ union_pw_multi_aff_list(const union_pw_multi_aff_list &obj);
3409
  inline /* implicit */ union_pw_multi_aff_list(std::nullptr_t);
3410
  inline union_pw_multi_aff_list &operator=(union_pw_multi_aff_list obj);
3411
  inline ~union_pw_multi_aff_list();
3412
  inline __isl_give isl_union_pw_multi_aff_list *copy() const &;
3413
  inline __isl_give isl_union_pw_multi_aff_list *copy() && = delete;
3414
  inline __isl_keep isl_union_pw_multi_aff_list *get() const;
3415
  inline __isl_give isl_union_pw_multi_aff_list *release();
3416
  inline bool is_null() const;
3417
  inline explicit operator bool() const;
3418
  inline ctx get_ctx() const;
3419
  inline void dump() const;
3420
3421
  inline union_pw_multi_aff_list add(union_pw_multi_aff el) const;
3422
  static inline union_pw_multi_aff_list alloc(ctx ctx, int n);
3423
  inline union_pw_multi_aff_list concat(union_pw_multi_aff_list list2) const;
3424
  inline union_pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3425
  inline stat foreach(const std::function<stat(union_pw_multi_aff)> &fn) const;
3426
  static inline union_pw_multi_aff_list from_union_pw_multi_aff(union_pw_multi_aff el);
3427
  inline union_pw_multi_aff get_at(int index) const;
3428
  inline union_pw_multi_aff get_union_pw_multi_aff(int index) const;
3429
  inline union_pw_multi_aff_list insert(unsigned int pos, union_pw_multi_aff el) const;
3430
  inline int n_union_pw_multi_aff() const;
3431
  inline union_pw_multi_aff_list reverse() const;
3432
  inline union_pw_multi_aff_list set_union_pw_multi_aff(int index, union_pw_multi_aff el) const;
3433
  inline int size() const;
3434
  inline union_pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const;
3435
};
3436
3437
// declarations for isl::union_pw_qpolynomial
3438
inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3439
inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3440
3441
class union_pw_qpolynomial {
3442
  friend inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3443
  friend inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3444
3445
  isl_union_pw_qpolynomial *ptr = nullptr;
3446
3447
  inline explicit union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr);
3448
3449
public:
3450
  inline /* implicit */ union_pw_qpolynomial();
3451
  inline /* implicit */ union_pw_qpolynomial(const union_pw_qpolynomial &obj);
3452
  inline /* implicit */ union_pw_qpolynomial(std::nullptr_t);
3453
  inline explicit union_pw_qpolynomial(ctx ctx, const std::string &str);
3454
  inline union_pw_qpolynomial &operator=(union_pw_qpolynomial obj);
3455
  inline ~union_pw_qpolynomial();
3456
  inline __isl_give isl_union_pw_qpolynomial *copy() const &;
3457
  inline __isl_give isl_union_pw_qpolynomial *copy() && = delete;
3458
  inline __isl_keep isl_union_pw_qpolynomial *get() const;
3459
  inline __isl_give isl_union_pw_qpolynomial *release();
3460
  inline bool is_null() const;
3461
  inline explicit operator bool() const;
3462
  inline ctx get_ctx() const;
3463
  inline std::string to_str() const;
3464
3465
  inline union_pw_qpolynomial add(union_pw_qpolynomial upwqp2) const;
3466
  inline union_pw_qpolynomial add_pw_qpolynomial(pw_qpolynomial pwqp) const;
3467
  inline union_pw_qpolynomial align_params(space model) const;
3468
  inline union_pw_qpolynomial coalesce() const;
3469
  inline unsigned int dim(isl::dim type) const;
3470
  inline union_set domain() const;
3471
  inline union_pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3472
  inline val eval(point pnt) const;
3473
  inline pw_qpolynomial extract_pw_qpolynomial(space dim) const;
3474
  inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3475
  inline stat foreach_pw_qpolynomial(const std::function<stat(pw_qpolynomial)> &fn) const;
3476
  static inline union_pw_qpolynomial from_pw_qpolynomial(pw_qpolynomial pwqp);
3477
  inline pw_qpolynomial_list get_pw_qpolynomial_list() const;
3478
  inline space get_space() const;
3479
  inline union_pw_qpolynomial gist(union_set context) const;
3480
  inline union_pw_qpolynomial gist_params(set context) const;
3481
  inline union_pw_qpolynomial intersect_domain(union_set uset) const;
3482
  inline union_pw_qpolynomial intersect_params(set set) const;
3483
  inline boolean involves_nan() const;
3484
  inline union_pw_qpolynomial mul(union_pw_qpolynomial upwqp2) const;
3485
  inline int n_pw_qpolynomial() const;
3486
  inline union_pw_qpolynomial neg() const;
3487
  inline boolean plain_is_equal(const union_pw_qpolynomial &upwqp2) const;
3488
  inline union_pw_qpolynomial reset_user() const;
3489
  inline union_pw_qpolynomial scale_down_val(val v) const;
3490
  inline union_pw_qpolynomial scale_val(val v) const;
3491
  inline union_pw_qpolynomial sub(union_pw_qpolynomial upwqp2) const;
3492
  inline union_pw_qpolynomial subtract_domain(union_set uset) const;
3493
  inline union_pw_qpolynomial to_polynomial(int sign) const;
3494
  static inline union_pw_qpolynomial zero(space dim);
3495
};
3496
3497
// declarations for isl::union_set
3498
inline union_set manage(__isl_take isl_union_set *ptr);
3499
inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3500
3501
class union_set {
3502
  friend inline union_set manage(__isl_take isl_union_set *ptr);
3503
  friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3504
3505
  isl_union_set *ptr = nullptr;
3506
3507
  inline explicit union_set(__isl_take isl_union_set *ptr);
3508
3509
public:
3510
  inline /* implicit */ union_set();
3511
  inline /* implicit */ union_set(const union_set &obj);
3512
  inline /* implicit */ union_set(std::nullptr_t);
3513
  inline /* implicit */ union_set(basic_set bset);
3514
  inline /* implicit */ union_set(set set);
3515
  inline /* implicit */ union_set(point pnt);
3516
  inline explicit union_set(ctx ctx, const std::string &str);
3517
  inline union_set &operator=(union_set obj);
3518
  inline ~union_set();
3519
  inline __isl_give isl_union_set *copy() const &;
3520
  inline __isl_give isl_union_set *copy() && = delete;
3521
  inline __isl_keep isl_union_set *get() const;
3522
  inline __isl_give isl_union_set *release();
3523
  inline bool is_null() const;
3524
  inline explicit operator bool() const;
3525
  inline ctx get_ctx() const;
3526
  inline std::string to_str() const;
3527
  inline void dump() const;
3528
3529
  inline union_set add_set(set set) const;
3530
  inline union_set affine_hull() const;
3531
  inline union_set align_params(space model) const;
3532
  inline union_set apply(union_map umap) const;
3533
  inline union_set coalesce() const;
3534
  inline union_set coefficients() const;
3535
  inline schedule compute_schedule(union_map validity, union_map proximity) const;
3536
  inline boolean contains(const space &space) const;
3537
  inline union_set detect_equalities() const;
3538
  inline unsigned int dim(isl::dim type) const;
3539
  static inline union_set empty(space space);
3540
  inline set extract_set(space dim) const;
3541
  inline stat foreach_point(const std::function<stat(point)> &fn) const;
3542
  inline stat foreach_set(const std::function<stat(set)> &fn) const;
3543
  inline basic_set_list get_basic_set_list() const;
3544
  inline uint32_t get_hash() const;
3545
  inline set_list get_set_list() const;
3546
  inline space get_space() const;
3547
  inline union_set gist(union_set context) const;
3548
  inline union_set gist_params(set set) const;
3549
  inline union_map identity() const;
3550
  inline union_pw_multi_aff identity_union_pw_multi_aff() const;
3551
  inline union_set intersect(union_set uset2) const;
3552
  inline union_set intersect_params(set set) const;
3553
  inline boolean is_disjoint(const union_set &uset2) const;
3554
  inline boolean is_empty() const;
3555
  inline boolean is_equal(const union_set &uset2) const;
3556
  inline boolean is_params() const;
3557
  inline boolean is_strict_subset(const union_set &uset2) const;
3558
  inline boolean is_subset(const union_set &uset2) const;
3559
  inline union_map lex_ge_union_set(union_set uset2) const;
3560
  inline union_map lex_gt_union_set(union_set uset2) const;
3561
  inline union_map lex_le_union_set(union_set uset2) const;
3562
  inline union_map lex_lt_union_set(union_set uset2) const;
3563
  inline union_set lexmax() const;
3564
  inline union_set lexmin() const;
3565
  inline multi_val min_multi_union_pw_aff(const multi_union_pw_aff &obj) const;
3566
  inline int n_set() const;
3567
  inline set params() const;
3568
  inline union_set polyhedral_hull() const;
3569
  inline union_set preimage(multi_aff ma) const;
3570
  inline union_set preimage(pw_multi_aff pma) const;
3571
  inline union_set preimage(union_pw_multi_aff upma) const;
3572
  inline union_set product(union_set uset2) const;
3573
  inline union_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
3574
  inline union_set remove_divs() const;
3575
  inline union_set remove_redundancies() const;
3576
  inline union_set reset_user() const;
3577
  inline basic_set sample() const;
3578
  inline point sample_point() const;
3579
  inline union_set simple_hull() const;
3580
  inline union_set solutions() const;
3581
  inline union_set subtract(union_set uset2) const;
3582
  inline union_set unite(union_set uset2) const;
3583
  inline union_set universe() const;
3584
  inline union_map unwrap() const;
3585
  inline union_map wrapped_domain_map() const;
3586
};
3587
3588
// declarations for isl::union_set_list
3589
inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3590
inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3591
3592
class union_set_list {
3593
  friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3594
  friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3595
3596
  isl_union_set_list *ptr = nullptr;
3597
3598
  inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
3599
3600
public:
3601
  inline /* implicit */ union_set_list();
3602
  inline /* implicit */ union_set_list(const union_set_list &obj);
3603
  inline /* implicit */ union_set_list(std::nullptr_t);
3604
  inline union_set_list &operator=(union_set_list obj);
3605
  inline ~union_set_list();
3606
  inline __isl_give isl_union_set_list *copy() const &;
3607
  inline __isl_give isl_union_set_list *copy() && = delete;
3608
  inline __isl_keep isl_union_set_list *get() const;
3609
  inline __isl_give isl_union_set_list *release();
3610
  inline bool is_null() const;
3611
  inline explicit operator bool() const;
3612
  inline ctx get_ctx() const;
3613
  inline void dump() const;
3614
3615
  inline union_set_list add(union_set el) const;
3616
  static inline union_set_list alloc(ctx ctx, int n);
3617
  inline union_set_list concat(union_set_list list2) const;
3618
  inline union_set_list drop(unsigned int first, unsigned int n) const;
3619
  inline stat foreach(const std::function<stat(union_set)> &fn) const;
3620
  static inline union_set_list from_union_set(union_set el);
3621
  inline union_set get_at(int index) const;
3622
  inline union_set get_union_set(int index) const;
3623
  inline union_set_list insert(unsigned int pos, union_set el) const;
3624
  inline int n_union_set() const;
3625
  inline union_set_list reverse() const;
3626
  inline union_set_list set_union_set(int index, union_set el) const;
3627
  inline int size() const;
3628
  inline union_set_list swap(unsigned int pos1, unsigned int pos2) const;
3629
  inline union_set unite() const;
3630
};
3631
3632
// declarations for isl::val
3633
inline val manage(__isl_take isl_val *ptr);
3634
inline val manage_copy(__isl_keep isl_val *ptr);
3635
3636
class val {
3637
  friend inline val manage(__isl_take isl_val *ptr);
3638
  friend inline val manage_copy(__isl_keep isl_val *ptr);
3639
3640
  isl_val *ptr = nullptr;
3641
3642
  inline explicit val(__isl_take isl_val *ptr);
3643
3644
public:
3645
  inline /* implicit */ val();
3646
  inline /* implicit */ val(const val &obj);
3647
  inline /* implicit */ val(std::nullptr_t);
3648
  inline explicit val(ctx ctx, const std::string &str);
3649
  inline explicit val(ctx ctx, long i);
3650
  inline val &operator=(val obj);
3651
  inline ~val();
3652
  inline __isl_give isl_val *copy() const &;
3653
  inline __isl_give isl_val *copy() && = delete;
3654
  inline __isl_keep isl_val *get() const;
3655
  inline __isl_give isl_val *release();
3656
  inline bool is_null() const;
3657
  inline explicit operator bool() const;
3658
  inline ctx get_ctx() const;
3659
  inline std::string to_str() const;
3660
  inline void dump() const;
3661
3662
  inline val abs() const;
3663
  inline boolean abs_eq(const val &v2) const;
3664
  inline val add(val v2) const;
3665
  inline val add_ui(unsigned long v2) const;
3666
  inline val ceil() const;
3667
  inline int cmp_si(long i) const;
3668
  inline val div(val v2) const;
3669
  inline val div_ui(unsigned long v2) const;
3670
  inline boolean eq(const val &v2) const;
3671
  inline val floor() const;
3672
  inline val gcd(val v2) const;
3673
  inline boolean ge(const val &v2) const;
3674
  inline uint32_t get_hash() const;
3675
  inline long get_num_si() const;
3676
  inline boolean gt(const val &v2) const;
3677
  inline boolean gt_si(long i) const;
3678
  static inline val infty(ctx ctx);
3679
  static inline val int_from_ui(ctx ctx, unsigned long u);
3680
  inline val inv() const;
3681
  inline boolean is_divisible_by(const val &v2) const;
3682
  inline boolean is_infty() const;
3683
  inline boolean is_int() const;
3684
  inline boolean is_nan() const;
3685
  inline boolean is_neg() const;
3686
  inline boolean is_neginfty() const;
3687
  inline boolean is_negone() const;
3688
  inline boolean is_nonneg() const;
3689
  inline boolean is_nonpos() const;
3690
  inline boolean is_one() const;
3691
  inline boolean is_pos() const;
3692
  inline boolean is_rat() const;
3693
  inline boolean is_zero() const;
3694
  inline boolean le(const val &v2) const;
3695
  inline boolean lt(const val &v2) const;
3696
  inline val max(val v2) const;
3697
  inline val min(val v2) const;
3698
  inline val mod(val v2) const;
3699
  inline val mul(val v2) const;
3700
  inline val mul_ui(unsigned long v2) const;
3701
  inline size_t n_abs_num_chunks(size_t size) const;
3702
  static inline val nan(ctx ctx);
3703
  inline boolean ne(const val &v2) const;
3704
  inline val neg() const;
3705
  static inline val neginfty(ctx ctx);
3706
  static inline val negone(ctx ctx);
3707
  static inline val one(ctx ctx);
3708
  inline val pow2() const;
3709
  inline val set_si(long i) const;
3710
  inline int sgn() const;
3711
  inline val sub(val v2) const;
3712
  inline val sub_ui(unsigned long v2) const;
3713
  inline val trunc() const;
3714
  static inline val zero(ctx ctx);
3715
};
3716
3717
// declarations for isl::val_list
3718
inline val_list manage(__isl_take isl_val_list *ptr);
3719
inline val_list manage_copy(__isl_keep isl_val_list *ptr);
3720
3721
class val_list {
3722
  friend inline val_list manage(__isl_take isl_val_list *ptr);
3723
  friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
3724
3725
  isl_val_list *ptr = nullptr;
3726
3727
  inline explicit val_list(__isl_take isl_val_list *ptr);
3728
3729
public:
3730
  inline /* implicit */ val_list();
3731
  inline /* implicit */ val_list(const val_list &obj);
3732
  inline /* implicit */ val_list(std::nullptr_t);
3733
  inline val_list &operator=(val_list obj);
3734
  inline ~val_list();
3735
  inline __isl_give isl_val_list *copy() const &;
3736
  inline __isl_give isl_val_list *copy() && = delete;
3737
  inline __isl_keep isl_val_list *get() const;
3738
  inline __isl_give isl_val_list *release();
3739
  inline bool is_null() const;
3740
  inline explicit operator bool() const;
3741
  inline ctx get_ctx() const;
3742
  inline void dump() const;
3743
3744
  inline val_list add(val el) const;
3745
  static inline val_list alloc(ctx ctx, int n);
3746
  inline val_list concat(val_list list2) const;
3747
  inline val_list drop(unsigned int first, unsigned int n) const;
3748
  inline stat foreach(const std::function<stat(val)> &fn) const;
3749
  static inline val_list from_val(val el);
3750
  inline val get_at(int index) const;
3751
  inline val get_val(int index) const;
3752
  inline val_list insert(unsigned int pos, val el) const;
3753
  inline int n_val() const;
3754
  inline val_list reverse() const;
3755
  inline val_list set_val(int index, val el) const;
3756
  inline int size() const;
3757
  inline val_list swap(unsigned int pos1, unsigned int pos2) const;
3758
};
3759
3760
// declarations for isl::vec
3761
inline vec manage(__isl_take isl_vec *ptr);
3762
inline vec manage_copy(__isl_keep isl_vec *ptr);
3763
3764
class vec {
3765
  friend inline vec manage(__isl_take isl_vec *ptr);
3766
  friend inline vec manage_copy(__isl_keep isl_vec *ptr);
3767
3768
  isl_vec *ptr = nullptr;
3769
3770
  inline explicit vec(__isl_take isl_vec *ptr);
3771
3772
public:
3773
  inline /* implicit */ vec();
3774
  inline /* implicit */ vec(const vec &obj);
3775
  inline /* implicit */ vec(std::nullptr_t);
3776
  inline vec &operator=(vec obj);
3777
  inline ~vec();
3778
  inline __isl_give isl_vec *copy() const &;
3779
  inline __isl_give isl_vec *copy() && = delete;
3780
  inline __isl_keep isl_vec *get() const;
3781
  inline __isl_give isl_vec *release();
3782
  inline bool is_null() const;
3783
  inline explicit operator bool() const;
3784
  inline ctx get_ctx() const;
3785
  inline void dump() const;
3786
3787
  inline vec add(vec vec2) const;
3788
  inline vec add_els(unsigned int n) const;
3789
  static inline vec alloc(ctx ctx, unsigned int size);
3790
  inline vec ceil() const;
3791
  inline vec clr() const;
3792
  inline int cmp_element(const vec &vec2, int pos) const;
3793
  inline vec concat(vec vec2) const;
3794
  inline vec drop_els(unsigned int pos, unsigned int n) const;
3795
  inline vec extend(unsigned int size) const;
3796
  inline val get_element_val(int pos) const;
3797
  inline vec insert_els(unsigned int pos, unsigned int n) const;
3798
  inline vec insert_zero_els(unsigned int pos, unsigned int n) const;
3799
  inline boolean is_equal(const vec &vec2) const;
3800
  inline vec mat_product(mat mat) const;
3801
  inline vec move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
3802
  inline vec neg() const;
3803
  inline vec set_element_si(int pos, int v) const;
3804
  inline vec set_element_val(int pos, val v) const;
3805
  inline vec set_si(int v) const;
3806
  inline vec set_val(val v) const;
3807
  inline int size() const;
3808
  inline vec sort() const;
3809
  static inline vec zero(ctx ctx, unsigned int size);
3810
  inline vec zero_extend(unsigned int size) const;
3811
};
3812
3813
// implementations for isl::aff
3814
2.75k
aff manage(__isl_take isl_aff *ptr) {
3815
2.75k
  return aff(ptr);
3816
2.75k
}
3817
0
aff manage_copy(__isl_keep isl_aff *ptr) {
3818
0
  ptr = isl_aff_copy(ptr);
3819
0
  return aff(ptr);
3820
0
}
3821
3822
aff::aff()
3823
550
    : ptr(nullptr) {}
3824
3825
aff::aff(const aff &obj)
3826
    : ptr(nullptr)
3827
1.70k
{
3828
1.70k
  ptr = obj.copy();
3829
1.70k
}
3830
aff::aff(std::nullptr_t)
3831
    : ptr(nullptr) {}
3832
3833
3834
aff::aff(__isl_take isl_aff *ptr)
3835
2.75k
    : ptr(ptr) {}
3836
3837
aff::aff(local_space ls)
3838
553
{
3839
553
  auto res = isl_aff_zero_on_domain(ls.release());
3840
553
  ptr = res;
3841
553
}
3842
aff::aff(local_space ls, val val)
3843
25
{
3844
25
  auto res = isl_aff_val_on_domain(ls.release(), val.release());
3845
25
  ptr = res;
3846
25
}
3847
aff::aff(ctx ctx, const std::string &str)
3848
{
3849
  auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
3850
  ptr = res;
3851
}
3852
3853
2.11k
aff &aff::operator=(aff obj) {
3854
2.11k
  std::swap(this->ptr, obj.ptr);
3855
2.11k
  return *this;
3856
2.11k
}
3857
3858
5.59k
aff::~aff() {
3859
5.59k
  if (ptr)
3860
3.44k
    isl_aff_free(ptr);
3861
5.59k
}
3862
3863
3.30k
__isl_give isl_aff *aff::copy() const & {
3864
3.30k
  return isl_aff_copy(ptr);
3865
3.30k
}
3866
3867
322
__isl_keep isl_aff *aff::get() const {
3868
322
  return ptr;
3869
322
}
3870
3871
1.58k
__isl_give isl_aff *aff::release() {
3872
1.58k
  isl_aff *tmp = ptr;
3873
1.58k
  ptr = nullptr;
3874
1.58k
  return tmp;
3875
1.58k
}
3876
3877
0
bool aff::is_null() const {
3878
0
  return ptr == nullptr;
3879
0
}
3880
0
aff::operator bool() const {
3881
0
  return !is_null();
3882
0
}
3883
3884
3885
0
ctx aff::get_ctx() const {
3886
0
  return ctx(isl_aff_get_ctx(ptr));
3887
0
}
3888
0
std::string aff::to_str() const {
3889
0
  char *Tmp = isl_aff_to_str(get());
3890
0
  if (!Tmp)
3891
0
    return "";
3892
0
  std::string S(Tmp);
3893
0
  free(Tmp);
3894
0
  return S;
3895
0
}
3896
3897
3898
0
void aff::dump() const {
3899
0
  isl_aff_dump(get());
3900
0
}
3901
3902
3903
aff aff::add(aff aff2) const
3904
17
{
3905
17
  auto res = isl_aff_add(copy(), aff2.release());
3906
17
  return manage(res);
3907
17
}
3908
3909
aff aff::add_coefficient_si(isl::dim type, int pos, int v) const
3910
0
{
3911
0
  auto res = isl_aff_add_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
3912
0
  return manage(res);
3913
0
}
3914
3915
aff aff::add_coefficient_val(isl::dim type, int pos, val v) const
3916
0
{
3917
0
  auto res = isl_aff_add_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
3918
0
  return manage(res);
3919
0
}
3920
3921
aff aff::add_constant_num_si(int v) const
3922
0
{
3923
0
  auto res = isl_aff_add_constant_num_si(copy(), v);
3924
0
  return manage(res);
3925
0
}
3926
3927
aff aff::add_constant_si(int v) const
3928
549
{
3929
549
  auto res = isl_aff_add_constant_si(copy(), v);
3930
549
  return manage(res);
3931
549
}
3932
3933
aff aff::add_constant_val(val v) const
3934
0
{
3935
0
  auto res = isl_aff_add_constant_val(copy(), v.release());
3936
0
  return manage(res);
3937
0
}
3938
3939
aff aff::add_dims(isl::dim type, unsigned int n) const
3940
0
{
3941
0
  auto res = isl_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
3942
0
  return manage(res);
3943
0
}
3944
3945
aff aff::align_params(space model) const
3946
0
{
3947
0
  auto res = isl_aff_align_params(copy(), model.release());
3948
0
  return manage(res);
3949
0
}
3950
3951
aff aff::ceil() const
3952
0
{
3953
0
  auto res = isl_aff_ceil(copy());
3954
0
  return manage(res);
3955
0
}
3956
3957
int aff::coefficient_sgn(isl::dim type, int pos) const
3958
0
{
3959
0
  auto res = isl_aff_coefficient_sgn(get(), static_cast<enum isl_dim_type>(type), pos);
3960
0
  return res;
3961
0
}
3962
3963
int aff::dim(isl::dim type) const
3964
0
{
3965
0
  auto res = isl_aff_dim(get(), static_cast<enum isl_dim_type>(type));
3966
0
  return res;
3967
0
}
3968
3969
aff aff::div(aff aff2) const
3970
17
{
3971
17
  auto res = isl_aff_div(copy(), aff2.release());
3972
17
  return manage(res);
3973
17
}
3974
3975
aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
3976
0
{
3977
0
  auto res = isl_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
3978
0
  return manage(res);
3979
0
}
3980
3981
basic_set aff::eq_basic_set(aff aff2) const
3982
0
{
3983
0
  auto res = isl_aff_eq_basic_set(copy(), aff2.release());
3984
0
  return manage(res);
3985
0
}
3986
3987
set aff::eq_set(aff aff2) const
3988
0
{
3989
0
  auto res = isl_aff_eq_set(copy(), aff2.release());
3990
0
  return manage(res);
3991
0
}
3992
3993
val aff::eval(point pnt) const
3994
0
{
3995
0
  auto res = isl_aff_eval(copy(), pnt.release());
3996
0
  return manage(res);
3997
0
}
3998
3999
int aff::find_dim_by_name(isl::dim type, const std::string &name) const
4000
0
{
4001
0
  auto res = isl_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
4002
0
  return res;
4003
0
}
4004
4005
aff aff::floor() const
4006
17
{
4007
17
  auto res = isl_aff_floor(copy());
4008
17
  return manage(res);
4009
17
}
4010
4011
aff aff::from_range() const
4012
0
{
4013
0
  auto res = isl_aff_from_range(copy());
4014
0
  return manage(res);
4015
0
}
4016
4017
basic_set aff::ge_basic_set(aff aff2) const
4018
0
{
4019
0
  auto res = isl_aff_ge_basic_set(copy(), aff2.release());
4020
0
  return manage(res);
4021
0
}
4022
4023
set aff::ge_set(aff aff2) const
4024
0
{
4025
0
  auto res = isl_aff_ge_set(copy(), aff2.release());
4026
0
  return manage(res);
4027
0
}
4028
4029
val aff::get_coefficient_val(isl::dim type, int pos) const
4030
0
{
4031
0
  auto res = isl_aff_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
4032
0
  return manage(res);
4033
0
}
4034
4035
val aff::get_constant_val() const
4036
158
{
4037
158
  auto res = isl_aff_get_constant_val(get());
4038
158
  return manage(res);
4039
158
}
4040
4041
val aff::get_denominator_val() const
4042
5
{
4043
5
  auto res = isl_aff_get_denominator_val(get());
4044
5
  return manage(res);
4045
5
}
4046
4047
std::string aff::get_dim_name(isl::dim type, unsigned int pos) const
4048
0
{
4049
0
  auto res = isl_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
4050
0
  std::string tmp(res);
4051
0
  return tmp;
4052
0
}
4053
4054
aff aff::get_div(int pos) const
4055
0
{
4056
0
  auto res = isl_aff_get_div(get(), pos);
4057
0
  return manage(res);
4058
0
}
4059
4060
local_space aff::get_domain_local_space() const
4061
0
{
4062
0
  auto res = isl_aff_get_domain_local_space(get());
4063
0
  return manage(res);
4064
0
}
4065
4066
space aff::get_domain_space() const
4067
0
{
4068
0
  auto res = isl_aff_get_domain_space(get());
4069
0
  return manage(res);
4070
0
}
4071
4072
uint32_t aff::get_hash() const
4073
0
{
4074
0
  auto res = isl_aff_get_hash(get());
4075
0
  return res;
4076
0
}
4077
4078
local_space aff::get_local_space() const
4079
0
{
4080
0
  auto res = isl_aff_get_local_space(get());
4081
0
  return manage(res);
4082
0
}
4083
4084
space aff::get_space() const
4085
0
{
4086
0
  auto res = isl_aff_get_space(get());
4087
0
  return manage(res);
4088
0
}
4089
4090
aff aff::gist(set context) const
4091
0
{
4092
0
  auto res = isl_aff_gist(copy(), context.release());
4093
0
  return manage(res);
4094
0
}
4095
4096
aff aff::gist_params(set context) const
4097
0
{
4098
0
  auto res = isl_aff_gist_params(copy(), context.release());
4099
0
  return manage(res);
4100
0
}
4101
4102
basic_set aff::gt_basic_set(aff aff2) const
4103
0
{
4104
0
  auto res = isl_aff_gt_basic_set(copy(), aff2.release());
4105
0
  return manage(res);
4106
0
}
4107
4108
set aff::gt_set(aff aff2) const
4109
0
{
4110
0
  auto res = isl_aff_gt_set(copy(), aff2.release());
4111
0
  return manage(res);
4112
0
}
4113
4114
aff aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
4115
0
{
4116
0
  auto res = isl_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
4117
0
  return manage(res);
4118
0
}
4119
4120
boolean aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
4121
0
{
4122
0
  auto res = isl_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
4123
0
  return manage(res);
4124
0
}
4125
4126
boolean aff::is_cst() const
4127
159
{
4128
159
  auto res = isl_aff_is_cst(get());
4129
159
  return manage(res);
4130
159
}
4131
4132
boolean aff::is_nan() const
4133
0
{
4134
0
  auto res = isl_aff_is_nan(get());
4135
0
  return manage(res);
4136
0
}
4137
4138
basic_set aff::le_basic_set(aff aff2) const
4139
0
{
4140
0
  auto res = isl_aff_le_basic_set(copy(), aff2.release());
4141
0
  return manage(res);
4142
0
}
4143
4144
set aff::le_set(aff aff2) const
4145
0
{
4146
0
  auto res = isl_aff_le_set(copy(), aff2.release());
4147
0
  return manage(res);
4148
0
}
4149
4150
basic_set aff::lt_basic_set(aff aff2) const
4151
0
{
4152
0
  auto res = isl_aff_lt_basic_set(copy(), aff2.release());
4153
0
  return manage(res);
4154
0
}
4155
4156
set aff::lt_set(aff aff2) const
4157
0
{
4158
0
  auto res = isl_aff_lt_set(copy(), aff2.release());
4159
0
  return manage(res);
4160
0
}
4161
4162
aff aff::mod(val mod) const
4163
17
{
4164
17
  auto res = isl_aff_mod_val(copy(), mod.release());
4165
17
  return manage(res);
4166
17
}
4167
4168
aff aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
4169
0
{
4170
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);
4171
0
  return manage(res);
4172
0
}
4173
4174
aff aff::mul(aff aff2) const
4175
0
{
4176
0
  auto res = isl_aff_mul(copy(), aff2.release());
4177
0
  return manage(res);
4178
0
}
4179
4180
aff aff::nan_on_domain(local_space ls)
4181
0
{
4182
0
  auto res = isl_aff_nan_on_domain(ls.release());
4183
0
  return manage(res);
4184
0
}
4185
4186
set aff::ne_set(aff aff2) const
4187
0
{
4188
0
  auto res = isl_aff_ne_set(copy(), aff2.release());
4189
0
  return manage(res);
4190
0
}
4191
4192
aff aff::neg() const
4193
0
{
4194
0
  auto res = isl_aff_neg(copy());
4195
0
  return manage(res);
4196
0
}
4197
4198
basic_set aff::neg_basic_set() const
4199
0
{
4200
0
  auto res = isl_aff_neg_basic_set(copy());
4201
0
  return manage(res);
4202
0
}
4203
4204
aff aff::param_on_domain_space_id(space space, id id)
4205
0
{
4206
0
  auto res = isl_aff_param_on_domain_space_id(space.release(), id.release());
4207
0
  return manage(res);
4208
0
}
4209
4210
boolean aff::plain_is_equal(const aff &aff2) const
4211
0
{
4212
0
  auto res = isl_aff_plain_is_equal(get(), aff2.get());
4213
0
  return manage(res);
4214
0
}
4215
4216
boolean aff::plain_is_zero() const
4217
0
{
4218
0
  auto res = isl_aff_plain_is_zero(get());
4219
0
  return manage(res);
4220
0
}
4221
4222
aff aff::project_domain_on_params() const
4223
0
{
4224
0
  auto res = isl_aff_project_domain_on_params(copy());
4225
0
  return manage(res);
4226
0
}
4227
4228
aff aff::pullback(multi_aff ma) const
4229
34
{
4230
34
  auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
4231
34
  return manage(res);
4232
34
}
4233
4234
aff aff::pullback_aff(aff aff2) const
4235
0
{
4236
0
  auto res = isl_aff_pullback_aff(copy(), aff2.release());
4237
0
  return manage(res);
4238
0
}
4239
4240
aff aff::scale(val v) const
4241
0
{
4242
0
  auto res = isl_aff_scale_val(copy(), v.release());
4243
0
  return manage(res);
4244
0
}
4245
4246
aff aff::scale_down(val v) const
4247
0
{
4248
0
  auto res = isl_aff_scale_down_val(copy(), v.release());
4249
0
  return manage(res);
4250
0
}
4251
4252
aff aff::scale_down_ui(unsigned int f) const
4253
0
{
4254
0
  auto res = isl_aff_scale_down_ui(copy(), f);
4255
0
  return manage(res);
4256
0
}
4257
4258
aff aff::set_coefficient_si(isl::dim type, int pos, int v) const
4259
0
{
4260
0
  auto res = isl_aff_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
4261
0
  return manage(res);
4262
0
}
4263
4264
aff aff::set_coefficient_val(isl::dim type, int pos, val v) const
4265
0
{
4266
0
  auto res = isl_aff_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
4267
0
  return manage(res);
4268
0
}
4269
4270
aff aff::set_constant_si(int v) const
4271
949
{
4272
949
  auto res = isl_aff_set_constant_si(copy(), v);
4273
949
  return manage(res);
4274
949
}
4275
4276
aff aff::set_constant_val(val v) const
4277
0
{
4278
0
  auto res = isl_aff_set_constant_val(copy(), v.release());
4279
0
  return manage(res);
4280
0
}
4281
4282
aff aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
4283
0
{
4284
0
  auto res = isl_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
4285
0
  return manage(res);
4286
0
}
4287
4288
aff aff::set_tuple_id(isl::dim type, id id) const
4289
0
{
4290
0
  auto res = isl_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
4291
0
  return manage(res);
4292
0
}
4293
4294
aff aff::sub(aff aff2) const
4295
0
{
4296
0
  auto res = isl_aff_sub(copy(), aff2.release());
4297
0
  return manage(res);
4298
0
}
4299
4300
aff aff::var_on_domain(local_space ls, isl::dim type, unsigned int pos)
4301
41
{
4302
41
  auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
4303
41
  return manage(res);
4304
41
}
4305
4306
basic_set aff::zero_basic_set() const
4307
0
{
4308
0
  auto res = isl_aff_zero_basic_set(copy());
4309
0
  return manage(res);
4310
0
}
4311
4312
// implementations for isl::aff_list
4313
0
aff_list manage(__isl_take isl_aff_list *ptr) {
4314
0
  return aff_list(ptr);
4315
0
}
4316
0
aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
4317
0
  ptr = isl_aff_list_copy(ptr);
4318
0
  return aff_list(ptr);
4319
0
}
4320
4321
aff_list::aff_list()
4322
    : ptr(nullptr) {}
4323
4324
aff_list::aff_list(const aff_list &obj)
4325
    : ptr(nullptr)
4326
{
4327
  ptr = obj.copy();
4328
}
4329
aff_list::aff_list(std::nullptr_t)
4330
    : ptr(nullptr) {}
4331
4332
4333
aff_list::aff_list(__isl_take isl_aff_list *ptr)
4334
    : ptr(ptr) {}
4335
4336
4337
0
aff_list &aff_list::operator=(aff_list obj) {
4338
0
  std::swap(this->ptr, obj.ptr);
4339
0
  return *this;
4340
0
}
4341
4342
aff_list::~aff_list() {
4343
  if (ptr)
4344
    isl_aff_list_free(ptr);
4345
}
4346
4347
0
__isl_give isl_aff_list *aff_list::copy() const & {
4348
0
  return isl_aff_list_copy(ptr);
4349
0
}
4350
4351
0
__isl_keep isl_aff_list *aff_list::get() const {
4352
0
  return ptr;
4353
0
}
4354
4355
0
__isl_give isl_aff_list *aff_list::release() {
4356
0
  isl_aff_list *tmp = ptr;
4357
0
  ptr = nullptr;
4358
0
  return tmp;
4359
0
}
4360
4361
0
bool aff_list::is_null() const {
4362
0
  return ptr == nullptr;
4363
0
}
4364
0
aff_list::operator bool() const {
4365
0
  return !is_null();
4366
0
}
4367
4368
4369
0
ctx aff_list::get_ctx() const {
4370
0
  return ctx(isl_aff_list_get_ctx(ptr));
4371
0
}
4372
4373
0
void aff_list::dump() const {
4374
0
  isl_aff_list_dump(get());
4375
0
}
4376
4377
4378
aff_list aff_list::add(aff el) const
4379
0
{
4380
0
  auto res = isl_aff_list_add(copy(), el.release());
4381
0
  return manage(res);
4382
0
}
4383
4384
aff_list aff_list::alloc(ctx ctx, int n)
4385
0
{
4386
0
  auto res = isl_aff_list_alloc(ctx.release(), n);
4387
0
  return manage(res);
4388
0
}
4389
4390
aff_list aff_list::concat(aff_list list2) const
4391
0
{
4392
0
  auto res = isl_aff_list_concat(copy(), list2.release());
4393
0
  return manage(res);
4394
0
}
4395
4396
aff_list aff_list::drop(unsigned int first, unsigned int n) const
4397
0
{
4398
0
  auto res = isl_aff_list_drop(copy(), first, n);
4399
0
  return manage(res);
4400
0
}
4401
4402
stat aff_list::foreach(const std::function<stat(aff)> &fn) const
4403
0
{
4404
0
  struct fn_data {
4405
0
    const std::function<stat(aff)> *func;
4406
0
  } fn_data = { &fn };
4407
0
  auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
4408
0
    auto *data = static_cast<struct fn_data *>(arg_1);
4409
0
    stat ret = (*data->func)(manage(arg_0));
4410
0
    return ret.release();
4411
0
  };
4412
0
  auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
4413
0
  return manage(res);
4414
0
}
4415
4416
aff_list aff_list::from_aff(aff el)
4417
0
{
4418
0
  auto res = isl_aff_list_from_aff(el.release());
4419
0
  return manage(res);
4420
0
}
4421
4422
aff aff_list::get_aff(int index) const
4423
0
{
4424
0
  auto res = isl_aff_list_get_aff(get(), index);
4425
0
  return manage(res);
4426
0
}
4427
4428
aff aff_list::get_at(int index) const
4429
0
{
4430
0
  auto res = isl_aff_list_get_at(get(), index);
4431
0
  return manage(res);
4432
0
}
4433
4434
aff_list aff_list::insert(unsigned int pos, aff el) const
4435
0
{
4436
0
  auto res = isl_aff_list_insert(copy(), pos, el.release());
4437
0
  return manage(res);
4438
0
}
4439
4440
int aff_list::n_aff() const
4441
0
{
4442
0
  auto res = isl_aff_list_n_aff(get());
4443
0
  return res;
4444
0
}
4445
4446
aff_list aff_list::reverse() const
4447
0
{
4448
0
  auto res = isl_aff_list_reverse(copy());
4449
0
  return manage(res);
4450
0
}
4451
4452
aff_list aff_list::set_aff(int index, aff el) const
4453
0
{
4454
0
  auto res = isl_aff_list_set_aff(copy(), index, el.release());
4455
0
  return manage(res);
4456
0
}
4457
4458
int aff_list::size() const
4459
0
{
4460
0
  auto res = isl_aff_list_size(get());
4461
0
  return res;
4462
0
}
4463
4464
aff_list aff_list::swap(unsigned int pos1, unsigned int pos2) const
4465
0
{
4466
0
  auto res = isl_aff_list_swap(copy(), pos1, pos2);
4467
0
  return manage(res);
4468
0
}
4469
4470
// implementations for isl::ast_build
4471
12
ast_build manage(__isl_take isl_ast_build *ptr) {
4472
12
  return ast_build(ptr);
4473
12
}
4474
710
ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
4475
710
  ptr = isl_ast_build_copy(ptr);
4476
710
  return ast_build(ptr);
4477
710
}
4478
4479
ast_build::ast_build()
4480
    : ptr(nullptr) {}
4481
4482
ast_build::ast_build(const ast_build &obj)
4483
    : ptr(nullptr)
4484
545
{
4485
545
  ptr = obj.copy();
4486
545
}
4487
ast_build::ast_build(std::nullptr_t)
4488
9.29k
    : ptr(nullptr) {}
4489
4490
4491
ast_build::ast_build(__isl_take isl_ast_build *ptr)
4492
722
    : ptr(ptr) {}
4493
4494
ast_build::ast_build(ctx ctx)
4495
{
4496
  auto res = isl_ast_build_alloc(ctx.release());
4497
  ptr = res;
4498
}
4499
4500
533
ast_build &ast_build::operator=(ast_build obj) {
4501
533
  std::swap(this->ptr, obj.ptr);
4502
533
  return *this;
4503
533
}
4504
4505
10.5k
ast_build::~ast_build() {
4506
10.5k
  if (ptr)
4507
1.26k
    isl_ast_build_free(ptr);
4508
10.5k
}
4509
4510
557
__isl_give isl_ast_build *ast_build::copy() const & {
4511
557
  return isl_ast_build_copy(ptr);
4512
557
}
4513
4514
708
__isl_keep isl_ast_build *ast_build::get() const {
4515
708
  return ptr;
4516
708
}
4517
4518
0
__isl_give isl_ast_build *ast_build::release() {
4519
0
  isl_ast_build *tmp = ptr;
4520
0
  ptr = nullptr;
4521
0
  return tmp;
4522
0
}
4523
4524
0
bool ast_build::is_null() const {
4525
0
  return ptr == nullptr;
4526
0
}
4527
0
ast_build::operator bool() const {
4528
0
  return !is_null();
4529
0
}
4530
4531
4532
348
ctx ast_build::get_ctx() const {
4533
348
  return ctx(isl_ast_build_get_ctx(ptr));
4534
348
}
4535
4536
4537
ast_expr ast_build::access_from(pw_multi_aff pma) const
4538
682
{
4539
682
  auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
4540
682
  return manage(res);
4541
682
}
4542
4543
ast_expr ast_build::access_from(multi_pw_aff mpa) const
4544
0
{
4545
0
  auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
4546
0
  return manage(res);
4547
0
}
4548
4549
ast_node ast_build::ast_from_schedule(union_map schedule) const
4550
0
{
4551
0
  auto res = isl_ast_build_ast_from_schedule(get(), schedule.release());
4552
0
  return manage(res);
4553
0
}
4554
4555
ast_expr ast_build::call_from(pw_multi_aff pma) const
4556
0
{
4557
0
  auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
4558
0
  return manage(res);
4559
0
}
4560
4561
ast_expr ast_build::call_from(multi_pw_aff mpa) const
4562
0
{
4563
0
  auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
4564
0
  return manage(res);
4565
0
}
4566
4567
ast_expr ast_build::expr_from(set set) const
4568
11
{
4569
11
  auto res = isl_ast_build_expr_from_set(get(), set.release());
4570
11
  return manage(res);
4571
11
}
4572
4573
ast_expr ast_build::expr_from(pw_aff pa) const
4574
1
{
4575
1
  auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
4576
1
  return manage(res);
4577
1
}
4578
4579
ast_build ast_build::from_context(set set)
4580
0
{
4581
0
  auto res = isl_ast_build_from_context(set.release());
4582
0
  return manage(res);
4583
0
}
4584
4585
union_map ast_build::get_schedule() const
4586
14
{
4587
14
  auto res = isl_ast_build_get_schedule(get());
4588
14
  return manage(res);
4589
14
}
4590
4591
space ast_build::get_schedule_space() const
4592
0
{
4593
0
  auto res = isl_ast_build_get_schedule_space(get());
4594
0
  return manage(res);
4595
0
}
4596
4597
ast_node ast_build::node_from_schedule(schedule schedule) const
4598
0
{
4599
0
  auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
4600
0
  return manage(res);
4601
0
}
4602
4603
ast_node ast_build::node_from_schedule_map(union_map schedule) const
4604
0
{
4605
0
  auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
4606
0
  return manage(res);
4607
0
}
4608
4609
ast_build ast_build::restrict(set set) const
4610
12
{
4611
12
  auto res = isl_ast_build_restrict(copy(), set.release());
4612
12
  return manage(res);
4613
12
}
4614
4615
// implementations for isl::ast_expr
4616
7.43k
ast_expr manage(__isl_take isl_ast_expr *ptr) {
4617
7.43k
  return ast_expr(ptr);
4618
7.43k
}
4619
301
ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
4620
301
  ptr = isl_ast_expr_copy(ptr);
4621
301
  return ast_expr(ptr);
4622
301
}
4623
4624
ast_expr::ast_expr()
4625
516
    : ptr(nullptr) {}
4626
4627
ast_expr::ast_expr(const ast_expr &obj)
4628
    : ptr(nullptr)
4629
3.40k
{
4630
3.40k
  ptr = obj.copy();
4631
3.40k
}
4632
ast_expr::ast_expr(std::nullptr_t)
4633
    : ptr(nullptr) {}
4634
4635
4636
ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
4637
7.73k
    : ptr(ptr) {}
4638
4639
4640
1.02k
ast_expr &ast_expr::operator=(ast_expr obj) {
4641
1.02k
  std::swap(this->ptr, obj.ptr);
4642
1.02k
  return *this;
4643
1.02k
}
4644
4645
11.6k
ast_expr::~ast_expr() {
4646
11.6k
  if (ptr)
4647
9.35k
    isl_ast_expr_free(ptr);
4648
11.6k
}
4649
4650
4.43k
__isl_give isl_ast_expr *ast_expr::copy() const & {
4651
4.43k
  return isl_ast_expr_copy(ptr);
4652
4.43k
}
4653
4654
11.0k
__isl_keep isl_ast_expr *ast_expr::get() const {
4655
11.0k
  return ptr;
4656
11.0k
}
4657
4658
1.78k
__isl_give isl_ast_expr *ast_expr::release() {
4659
1.78k
  isl_ast_expr *tmp = ptr;
4660
1.78k
  ptr = nullptr;
4661
1.78k
  return tmp;
4662
1.78k
}
4663
4664
342
bool ast_expr::is_null() const {
4665
342
  return ptr == nullptr;
4666
342
}
4667
0
ast_expr::operator bool() const {
4668
0
  return !is_null();
4669
0
}
4670
4671
4672
0
ctx ast_expr::get_ctx() const {
4673
0
  return ctx(isl_ast_expr_get_ctx(ptr));
4674
0
}
4675
0
std::string ast_expr::to_str() const {
4676
0
  char *Tmp = isl_ast_expr_to_str(get());
4677
0
  if (!Tmp)
4678
0
    return "";
4679
0
  std::string S(Tmp);
4680
0
  free(Tmp);
4681
0
  return S;
4682
0
}
4683
4684
4685
0
void ast_expr::dump() const {
4686
0
  isl_ast_expr_dump(get());
4687
0
}
4688
4689
4690
ast_expr ast_expr::access(ast_expr_list indices) const
4691
0
{
4692
0
  auto res = isl_ast_expr_access(copy(), indices.release());
4693
0
  return manage(res);
4694
0
}
4695
4696
ast_expr ast_expr::add(ast_expr expr2) const
4697
0
{
4698
0
  auto res = isl_ast_expr_add(copy(), expr2.release());
4699
0
  return manage(res);
4700
0
}
4701
4702
ast_expr ast_expr::address_of() const
4703
680
{
4704
680
  auto res = isl_ast_expr_address_of(copy());
4705
680
  return manage(res);
4706
680
}
4707
4708
ast_expr ast_expr::call(ast_expr_list arguments) const
4709
0
{
4710
0
  auto res = isl_ast_expr_call(copy(), arguments.release());
4711
0
  return manage(res);
4712
0
}
4713
4714
ast_expr ast_expr::div(ast_expr expr2) const
4715
0
{
4716
0
  auto res = isl_ast_expr_div(copy(), expr2.release());
4717
0
  return manage(res);
4718
0
}
4719
4720
ast_expr ast_expr::eq(ast_expr expr2) const
4721
0
{
4722
0
  auto res = isl_ast_expr_eq(copy(), expr2.release());
4723
0
  return manage(res);
4724
0
}
4725
4726
ast_expr ast_expr::from_id(id id)
4727
0
{
4728
0
  auto res = isl_ast_expr_from_id(id.release());
4729
0
  return manage(res);
4730
0
}
4731
4732
ast_expr ast_expr::from_val(val v)
4733
348
{
4734
348
  auto res = isl_ast_expr_from_val(v.release());
4735
348
  return manage(res);
4736
348
}
4737
4738
ast_expr ast_expr::ge(ast_expr expr2) const
4739
0
{
4740
0
  auto res = isl_ast_expr_ge(copy(), expr2.release());
4741
0
  return manage(res);
4742
0
}
4743
4744
id ast_expr::get_id() const
4745
993
{
4746
993
  auto res = isl_ast_expr_get_id(get());
4747
993
  return manage(res);
4748
993
}
4749
4750
ast_expr ast_expr::get_op_arg(int pos) const
4751
3.59k
{
4752
3.59k
  auto res = isl_ast_expr_get_op_arg(get(), pos);
4753
3.59k
  return manage(res);
4754
3.59k
}
4755
4756
int ast_expr::get_op_n_arg() const
4757
0
{
4758
0
  auto res = isl_ast_expr_get_op_n_arg(get());
4759
0
  return res;
4760
0
}
4761
4762
val ast_expr::get_val() const
4763
945
{
4764
945
  auto res = isl_ast_expr_get_val(get());
4765
945
  return manage(res);
4766
945
}
4767
4768
ast_expr ast_expr::gt(ast_expr expr2) const
4769
0
{
4770
0
  auto res = isl_ast_expr_gt(copy(), expr2.release());
4771
0
  return manage(res);
4772
0
}
4773
4774
boolean ast_expr::is_equal(const ast_expr &expr2) const
4775
0
{
4776
0
  auto res = isl_ast_expr_is_equal(get(), expr2.get());
4777
0
  return manage(res);
4778
0
}
4779
4780
ast_expr ast_expr::le(ast_expr expr2) const
4781
340
{
4782
340
  auto res = isl_ast_expr_le(copy(), expr2.release());
4783
340
  return manage(res);
4784
340
}
4785
4786
ast_expr ast_expr::lt(ast_expr expr2) const
4787
0
{
4788
0
  auto res = isl_ast_expr_lt(copy(), expr2.release());
4789
0
  return manage(res);
4790
0
}
4791
4792
ast_expr ast_expr::mul(ast_expr expr2) const
4793
0
{
4794
0
  auto res = isl_ast_expr_mul(copy(), expr2.release());
4795
0
  return manage(res);
4796
0
}
4797
4798
ast_expr ast_expr::neg() const
4799
0
{
4800
0
  auto res = isl_ast_expr_neg(copy());
4801
0
  return manage(res);
4802
0
}
4803
4804
ast_expr ast_expr::pdiv_q(ast_expr expr2) const
4805
0
{
4806
0
  auto res = isl_ast_expr_pdiv_q(copy(), expr2.release());
4807
0
  return manage(res);
4808
0
}
4809
4810
ast_expr ast_expr::pdiv_r(ast_expr expr2) const
4811
0
{
4812
0
  auto res = isl_ast_expr_pdiv_r(copy(), expr2.release());
4813
0
  return manage(res);
4814
0
}
4815
4816
ast_expr ast_expr::set_op_arg(int pos, ast_expr arg) const
4817
0
{
4818
0
  auto res = isl_ast_expr_set_op_arg(copy(), pos, arg.release());
4819
0
  return manage(res);
4820
0
}
4821
4822
ast_expr ast_expr::sub(ast_expr expr2) const
4823
0
{
4824
0
  auto res = isl_ast_expr_sub(copy(), expr2.release());
4825
0
  return manage(res);
4826
0
}
4827
4828
ast_expr ast_expr::substitute_ids(id_to_ast_expr id2expr) const
4829
0
{
4830
0
  auto res = isl_ast_expr_substitute_ids(copy(), id2expr.release());
4831
0
  return manage(res);
4832
0
}
4833
4834
std::string ast_expr::to_C_str() const
4835
0
{
4836
0
  auto res = isl_ast_expr_to_C_str(get());
4837
0
  std::string tmp(res);
4838
0
  free(res);
4839
0
  return tmp;
4840
0
}
4841
4842
// implementations for isl::ast_expr_list
4843
0
ast_expr_list manage(__isl_take isl_ast_expr_list *ptr) {
4844
0
  return ast_expr_list(ptr);
4845
0
}
4846
0
ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr) {
4847
0
  ptr = isl_ast_expr_list_copy(ptr);
4848
0
  return ast_expr_list(ptr);
4849
0
}
4850
4851
ast_expr_list::ast_expr_list()
4852
    : ptr(nullptr) {}
4853
4854
ast_expr_list::ast_expr_list(const ast_expr_list &obj)
4855
    : ptr(nullptr)
4856
{
4857
  ptr = obj.copy();
4858
}
4859
ast_expr_list::ast_expr_list(std::nullptr_t)
4860
    : ptr(nullptr) {}
4861
4862
4863
ast_expr_list::ast_expr_list(__isl_take isl_ast_expr_list *ptr)
4864
    : ptr(ptr) {}
4865
4866
4867
0
ast_expr_list &ast_expr_list::operator=(ast_expr_list obj) {
4868
0
  std::swap(this->ptr, obj.ptr);
4869
0
  return *this;
4870
0
}
4871
4872
ast_expr_list::~ast_expr_list() {
4873
  if (ptr)
4874
    isl_ast_expr_list_free(ptr);
4875
}
4876
4877
0
__isl_give isl_ast_expr_list *ast_expr_list::copy() const & {
4878
0
  return isl_ast_expr_list_copy(ptr);
4879
0
}
4880
4881
0
__isl_keep isl_ast_expr_list *ast_expr_list::get() const {
4882
0
  return ptr;
4883
0
}
4884
4885
0
__isl_give isl_ast_expr_list *ast_expr_list::release() {
4886
0
  isl_ast_expr_list *tmp = ptr;
4887
0
  ptr = nullptr;
4888
0
  return tmp;
4889
0
}
4890
4891
0
bool ast_expr_list::is_null() const {
4892
0
  return ptr == nullptr;
4893
0
}
4894
0
ast_expr_list::operator bool() const {
4895
0
  return !is_null();
4896
0
}
4897
4898
4899
0
ctx ast_expr_list::get_ctx() const {
4900
0
  return ctx(isl_ast_expr_list_get_ctx(ptr));
4901
0
}
4902
4903
0
void ast_expr_list::dump() const {
4904
0
  isl_ast_expr_list_dump(get());
4905
0
}
4906
4907
4908
ast_expr_list ast_expr_list::add(ast_expr el) const
4909
0
{
4910
0
  auto res = isl_ast_expr_list_add(copy(), el.release());
4911
0
  return manage(res);
4912
0
}
4913
4914
ast_expr_list ast_expr_list::alloc(ctx ctx, int n)
4915
0
{
4916
0
  auto res = isl_ast_expr_list_alloc(ctx.release(), n);
4917
0
  return manage(res);
4918
0
}
4919
4920
ast_expr_list ast_expr_list::concat(ast_expr_list list2) const
4921
0
{
4922
0
  auto res = isl_ast_expr_list_concat(copy(), list2.release());
4923
0
  return manage(res);
4924
0
}
4925
4926
ast_expr_list ast_expr_list::drop(unsigned int first, unsigned int n) const
4927
0
{
4928
0
  auto res = isl_ast_expr_list_drop(copy(), first, n);
4929
0
  return manage(res);
4930
0
}
4931
4932
stat ast_expr_list::foreach(const std::function<stat(ast_expr)> &fn) const
4933
0
{
4934
0
  struct fn_data {
4935
0
    const std::function<stat(ast_expr)> *func;
4936
0
  } fn_data = { &fn };
4937
0
  auto fn_lambda = [](isl_ast_expr *arg_0, void *arg_1) -> isl_stat {
4938
0
    auto *data = static_cast<struct fn_data *>(arg_1);
4939
0
    stat ret = (*data->func)(manage(arg_0));
4940
0
    return ret.release();
4941
0
  };
4942
0
  auto res = isl_ast_expr_list_foreach(get(), fn_lambda, &fn_data);
4943
0
  return manage(res);
4944
0
}
4945
4946
ast_expr_list ast_expr_list::from_ast_expr(ast_expr el)
4947
0
{
4948
0
  auto res = isl_ast_expr_list_from_ast_expr(el.release());
4949
0
  return manage(res);
4950
0
}
4951
4952
ast_expr ast_expr_list::get_ast_expr(int index) const
4953
0
{
4954
0
  auto res = isl_ast_expr_list_get_ast_expr(get(), index);
4955
0
  return manage(res);
4956
0
}
4957
4958
ast_expr ast_expr_list::get_at(int index) const
4959
0
{
4960
0
  auto res = isl_ast_expr_list_get_at(get(), index);
4961
0
  return manage(res);
4962
0
}
4963
4964
ast_expr_list ast_expr_list::insert(unsigned int pos, ast_expr el) const
4965
0
{
4966
0
  auto res = isl_ast_expr_list_insert(copy(), pos, el.release());
4967
0
  return manage(res);
4968
0
}
4969
4970
int ast_expr_list::n_ast_expr() const
4971
0
{
4972
0
  auto res = isl_ast_expr_list_n_ast_expr(get());
4973
0
  return res;
4974
0
}
4975
4976
ast_expr_list ast_expr_list::reverse() const
4977
0
{
4978
0
  auto res = isl_ast_expr_list_reverse(copy());
4979
0
  return manage(res);
4980
0
}
4981
4982
ast_expr_list ast_expr_list::set_ast_expr(int index, ast_expr el) const
4983
0
{
4984
0
  auto res = isl_ast_expr_list_set_ast_expr(copy(), index, el.release());
4985
0
  return manage(res);
4986
0
}
4987
4988
int ast_expr_list::size() const
4989
0
{
4990
0
  auto res = isl_ast_expr_list_size(get());
4991
0
  return res;
4992
0
}
4993
4994
ast_expr_list ast_expr_list::swap(unsigned int pos1, unsigned int pos2) const
4995
0
{
4996
0
  auto res = isl_ast_expr_list_swap(copy(), pos1, pos2);
4997
0
  return manage(res);
4998
0
}
4999
5000
// implementations for isl::ast_node
5001
874
ast_node manage(__isl_take isl_ast_node *ptr) {
5002
874
  return ast_node(ptr);
5003
874
}
5004
65
ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
5005
65
  ptr = isl_ast_node_copy(ptr);
5006
65
  return ast_node(ptr);
5007
65
}
5008
5009
ast_node::ast_node()
5010
    : ptr(nullptr) {}
5011
5012
ast_node::ast_node(const ast_node &obj)
5013
    : ptr(nullptr)
5014
587
{
5015
587
  ptr = obj.copy();
5016
587
}
5017
ast_node::ast_node(std::nullptr_t)
5018
    : ptr(nullptr) {}
5019
5020
5021
ast_node::ast_node(__isl_take isl_ast_node *ptr)
5022
939
    : ptr(ptr) {}
5023
5024
5025
0
ast_node &ast_node::operator=(ast_node obj) {
5026
0
  std::swap(this->ptr, obj.ptr);
5027
0
  return *this;
5028
0
}
5029
5030
1.52k
ast_node::~ast_node() {
5031
1.52k
  if (ptr)
5032
1.24k
    isl_ast_node_free(ptr);
5033
1.52k
}
5034
5035
587
__isl_give isl_ast_node *ast_node::copy() const & {
5036
587
  return isl_ast_node_copy(ptr);
5037
587
}
5038
5039
2.50k
__isl_keep isl_ast_node *ast_node::get() const {
5040
2.50k
  return ptr;
5041
2.50k
}
5042
5043
283
__isl_give isl_ast_node *ast_node::release() {
5044
283
  isl_ast_node *tmp = ptr;
5045
283
  ptr = nullptr;
5046
283
  return tmp;
5047
283
}
5048
5049
0
bool ast_node::is_null() const {
5050
0
  return ptr == nullptr;
5051
0
}
5052
0
ast_node::operator bool() const {
5053
0
  return !is_null();
5054
0
}
5055
5056
5057
0
ctx ast_node::get_ctx() const {
5058
0
  return ctx(isl_ast_node_get_ctx(ptr));
5059
0
}
5060
0
std::string ast_node::to_str() const {
5061
0
  char *Tmp = isl_ast_node_to_str(get());
5062
0
  if (!Tmp)
5063
0
    return "";
5064
0
  std::string S(Tmp);
5065
0
  free(Tmp);
5066
0
  return S;
5067
0
}
5068
5069
5070
0
void ast_node::dump() const {
5071
0
  isl_ast_node_dump(get());
5072
0
}
5073
5074
5075
ast_node ast_node::alloc_user(ast_expr expr)
5076
0
{
5077
0
  auto res = isl_ast_node_alloc_user(expr.release());
5078
0
  return manage(res);
5079
0
}
5080
5081
ast_node_list ast_node::block_get_children() const
5082
2
{
5083
2
  auto res = isl_ast_node_block_get_children(get());
5084
2
  return manage(res);
5085
2
}
5086
5087
ast_node ast_node::for_get_body() const
5088
588
{
5089
588
  auto res = isl_ast_node_for_get_body(get());
5090
588
  return manage(res);
5091
588
}
5092
5093
ast_expr ast_node::for_get_cond() const
5094
345
{
5095
345
  auto res = isl_ast_node_for_get_cond(get());
5096
345
  return manage(res);
5097
345
}
5098
5099
ast_expr ast_node::for_get_inc() const
5100
304
{
5101
304
  auto res = isl_ast_node_for_get_inc(get());
5102
304
  return manage(res);
5103
304
}
5104
5105
ast_expr ast_node::for_get_init() const
5106
304
{
5107
304
  auto res = isl_ast_node_for_get_init(get());
5108
304
  return manage(res);
5109
304
}
5110
5111
ast_expr ast_node::for_get_iterator() const
5112
628
{
5113
628
  auto res = isl_ast_node_for_get_iterator(get());
5114
628
  return manage(res);
5115
628
}
5116
5117
boolean ast_node::for_is_degenerate() const
5118
0
{
5119
0
  auto res = isl_ast_node_for_is_degenerate(get());
5120
0
  return manage(res);
5121
0
}
5122
5123
id ast_node::get_annotation() const
5124
0
{
5125
0
  auto res = isl_ast_node_get_annotation(get());
5126
0
  return manage(res);
5127
0
}
5128
5129
ast_expr ast_node::if_get_cond() const
5130
0
{
5131
0
  auto res = isl_ast_node_if_get_cond(get());
5132
0
  return manage(res);
5133
0
}
5134
5135
ast_node ast_node::if_get_else() const
5136
0
{
5137
0
  auto res = isl_ast_node_if_get_else(get());
5138
0
  return manage(res);
5139
0
}
5140
5141
ast_node ast_node::if_get_then() const
5142
0
{
5143
0
  auto res = isl_ast_node_if_get_then(get());
5144
0
  return manage(res);
5145
0
}
5146
5147
boolean ast_node::if_has_else() const
5148
0
{
5149
0
  auto res = isl_ast_node_if_has_else(get());
5150
0
  return manage(res);
5151
0
}
5152
5153
id ast_node::mark_get_id() const
5154
19
{
5155
19
  auto res = isl_ast_node_mark_get_id(get());
5156
19
  return manage(res);
5157
19
}
5158
5159
ast_node ast_node::mark_get_node() const
5160
0
{
5161
0
  auto res = isl_ast_node_mark_get_node(get());
5162
0
  return manage(res);
5163
0
}
5164
5165
ast_node ast_node::set_annotation(id annotation) const
5166
0
{
5167
0
  auto res = isl_ast_node_set_annotation(copy(), annotation.release());
5168
0
  return manage(res);
5169
0
}
5170
5171
std::string ast_node::to_C_str() const
5172
0
{
5173
0
  auto res = isl_ast_node_to_C_str(get());
5174
0
  std::string tmp(res);
5175
0
  free(res);
5176
0
  return tmp;
5177
0
}
5178
5179
ast_expr ast_node::user_get_expr() const
5180
2
{
5181
2
  auto res = isl_ast_node_user_get_expr(get());
5182
2
  return manage(res);
5183
2
}
5184
5185
// implementations for isl::ast_node_list
5186
2
ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
5187
2
  return ast_node_list(ptr);
5188
2
}
5189
0
ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
5190
0
  ptr = isl_ast_node_list_copy(ptr);
5191
0
  return ast_node_list(ptr);
5192
0
}
5193
5194
ast_node_list::ast_node_list()
5195
    : ptr(nullptr) {}
5196
5197
ast_node_list::ast_node_list(const ast_node_list &obj)
5198
    : ptr(nullptr)
5199
{
5200
  ptr = obj.copy();
5201
}
5202
ast_node_list::ast_node_list(std::nullptr_t)
5203
    : ptr(nullptr) {}
5204
5205
5206
ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
5207
2
    : ptr(ptr) {}
5208
5209
5210
0
ast_node_list &ast_node_list::operator=(ast_node_list obj) {
5211
0
  std::swap(this->ptr, obj.ptr);
5212
0
  return *this;
5213
0
}
5214
5215
2
ast_node_list::~ast_node_list() {
5216
2
  if (ptr)
5217
2
    isl_ast_node_list_free(ptr);
5218
2
}
5219
5220
0
__isl_give isl_ast_node_list *ast_node_list::copy() const & {
5221
0
  return isl_ast_node_list_copy(ptr);
5222
0
}
5223
5224
5
__isl_keep isl_ast_node_list *ast_node_list::get() const {
5225
5
  return ptr;
5226
5
}
5227
5228
0
__isl_give isl_ast_node_list *ast_node_list::release() {
5229
0
  isl_ast_node_list *tmp = ptr;
5230
0
  ptr = nullptr;
5231
0
  return tmp;
5232
0
}
5233
5234
0
bool ast_node_list::is_null() const {
5235
0
  return ptr == nullptr;
5236
0
}
5237
0
ast_node_list::operator bool() const {
5238
0
  return !is_null();
5239
0
}
5240
5241
5242
0
ctx ast_node_list::get_ctx() const {
5243
0
  return ctx(isl_ast_node_list_get_ctx(ptr));
5244
0
}
5245
5246
0
void ast_node_list::dump() const {
5247
0
  isl_ast_node_list_dump(get());
5248
0
}
5249
5250
5251
ast_node_list ast_node_list::add(ast_node el) const
5252
0
{
5253
0
  auto res = isl_ast_node_list_add(copy(), el.release());
5254
0
  return manage(res);
5255
0
}
5256
5257
ast_node_list ast_node_list::alloc(ctx ctx, int n)
5258
0
{
5259
0
  auto res = isl_ast_node_list_alloc(ctx.release(), n);
5260
0
  return manage(res);
5261
0
}
5262
5263
ast_node_list ast_node_list::concat(ast_node_list list2) const
5264
0
{
5265
0
  auto res = isl_ast_node_list_concat(copy(), list2.release());
5266
0
  return manage(res);
5267
0
}
5268
5269
ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
5270
0
{
5271
0
  auto res = isl_ast_node_list_drop(copy(), first, n);
5272
0
  return manage(res);
5273
0
}
5274
5275
stat ast_node_list::foreach(const std::function<stat(ast_node)> &fn) const
5276
0
{
5277
0
  struct fn_data {
5278
0
    const std::function<stat(ast_node)> *func;
5279
0
  } fn_data = { &fn };
5280
0
  auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
5281
0
    auto *data = static_cast<struct fn_data *>(arg_1);
5282
0
    stat ret = (*data->func)(manage(arg_0));
5283
0
    return ret.release();
5284
0
  };
5285
0
  auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
5286
0
  return manage(res);
5287
0
}
5288
5289
ast_node_list ast_node_list::from_ast_node(ast_node el)
5290
0
{
5291
0
  auto res = isl_ast_node_list_from_ast_node(el.release());
5292
0
  return manage(res);
5293
0
}
5294
5295
ast_node ast_node_list::get_ast_node(int index) const
5296
0
{
5297
0
  auto res = isl_ast_node_list_get_ast_node(get(), index);
5298
0
  return manage(res);
5299
0
}
5300
5301
ast_node ast_node_list::get_at(int index) const
5302
3
{
5303
3
  auto res = isl_ast_node_list_get_at(get(), index);
5304
3
  return manage(res);
5305
3
}
5306
5307
ast_node_list ast_node_list::insert(unsigned int pos, ast_node el) const
5308
0
{
5309
0
  auto res = isl_ast_node_list_insert(copy(), pos, el.release());
5310
0
  return manage(res);
5311
0
}
5312
5313
int ast_node_list::n_ast_node() const
5314
0
{
5315
0
  auto res = isl_ast_node_list_n_ast_node(get());
5316
0
  return res;
5317
0
}
5318
5319
ast_node_list ast_node_list::reverse() const
5320
0
{
5321
0
  auto res = isl_ast_node_list_reverse(copy());
5322
0
  return manage(res);
5323
0
}
5324
5325
ast_node_list ast_node_list::set_ast_node(int index, ast_node el) const
5326
0
{
5327
0
  auto res = isl_ast_node_list_set_ast_node(copy(), index, el.release());
5328
0
  return manage(res);
5329
0
}
5330
5331
int ast_node_list::size() const
5332
2
{
5333
2
  auto res = isl_ast_node_list_size(get());
5334
2
  return res;
5335
2
}
5336
5337
ast_node_list ast_node_list::swap(unsigned int pos1, unsigned int pos2) const
5338
0
{
5339
0
  auto res = isl_ast_node_list_swap(copy(), pos1, pos2);
5340
0
  return manage(res);
5341
0
}
5342
5343
// implementations for isl::basic_map
5344
2.05k
basic_map manage(__isl_take isl_basic_map *ptr) {
5345
2.05k
  return basic_map(ptr);
5346
2.05k
}
5347
0
basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
5348
0
  ptr = isl_basic_map_copy(ptr);
5349
0
  return basic_map(ptr);
5350
0
}
5351
5352
basic_map::basic_map()
5353
0
    : ptr(nullptr) {}
5354
5355
basic_map::basic_map(const basic_map &obj)
5356
    : ptr(nullptr)
5357
549
{
5358
549
  ptr = obj.copy();
5359
549
}
5360
basic_map::basic_map(std::nullptr_t)
5361
    : ptr(nullptr) {}
5362
5363
5364
basic_map::basic_map(__isl_take isl_basic_map *ptr)
5365
2.05k
    : ptr(ptr) {}
5366
5367
basic_map::basic_map(ctx ctx, const std::string &str)
5368
{
5369
  auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
5370
  ptr = res;
5371
}
5372
5373
1.36k
basic_map &basic_map::operator=(basic_map obj) {
5374
1.36k
  std::swap(this->ptr, obj.ptr);
5375
1.36k
  return *this;
5376
1.36k
}
5377
5378
2.60k
basic_map::~basic_map() {
5379
2.60k
  if (ptr)
5380
2.12k
    isl_basic_map_free(ptr);
5381
2.60k
}
5382
5383
1.91k
__isl_give isl_basic_map *basic_map::copy() const & {
5384
1.91k
  return isl_basic_map_copy(ptr);
5385
1.91k
}
5386
5387
208
__isl_keep isl_basic_map *basic_map::get() const {
5388
208
  return ptr;
5389
208
}
5390
5391
480
__isl_give isl_basic_map *basic_map::release() {
5392
480
  isl_basic_map *tmp = ptr;
5393
480
  ptr = nullptr;
5394
480
  return tmp;
5395
480
}
5396
5397
0
bool basic_map::is_null() const {
5398
0
  return ptr == nullptr;
5399
0
}
5400
0
basic_map::operator bool() const {
5401
0
  return !is_null();
5402
0
}
5403
5404
5405
0
ctx basic_map::get_ctx() const {
5406
0
  return ctx(isl_basic_map_get_ctx(ptr));
5407
0
}
5408
0
std::string basic_map::to_str() const {
5409
0
  char *Tmp = isl_basic_map_to_str(get());
5410
0
  if (!Tmp)
5411
0
    return "";
5412
0
  std::string S(Tmp);
5413
0
  free(Tmp);
5414
0
  return S;
5415
0
}
5416
5417
5418
0
void basic_map::dump() const {
5419
0
  isl_basic_map_dump(get());
5420
0
}
5421
5422
5423
basic_map basic_map::add_constraint(constraint constraint) const
5424
0
{
5425
0
  auto res = isl_basic_map_add_constraint(copy(), constraint.release());
5426
0
  return manage(res);
5427
0
}
5428
5429
basic_map basic_map::add_dims(isl::dim type, unsigned int n) const
5430
0
{
5431
0
  auto res = isl_basic_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
5432
0
  return manage(res);
5433
0
}
5434
5435
basic_map basic_map::affine_hull() const
5436
0
{
5437
0
  auto res = isl_basic_map_affine_hull(copy());
5438
0
  return manage(res);
5439
0
}
5440
5441
basic_map basic_map::align_params(space model) const
5442
0
{
5443
0
  auto res = isl_basic_map_align_params(copy(), model.release());
5444
0
  return manage(res);
5445
0
}
5446
5447
basic_map basic_map::apply_domain(basic_map bmap2) const
5448
0
{
5449
0
  auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
5450
0
  return manage(res);
5451
0
}
5452
5453
basic_map basic_map::apply_range(basic_map bmap2) const
5454
0
{
5455
0
  auto res = isl_basic_map_apply_range(copy(), bmap2.release());
5456
0
  return manage(res);
5457
0
}
5458
5459
boolean basic_map::can_curry() const
5460
0
{
5461
0
  auto res = isl_basic_map_can_curry(get());
5462
0
  return manage(res);
5463
0
}
5464
5465
boolean basic_map::can_uncurry() const
5466
0
{
5467
0
  auto res = isl_basic_map_can_uncurry(get());
5468
0
  return manage(res);
5469
0
}
5470
5471
boolean basic_map::can_zip() const
5472
0
{
5473
0
  auto res = isl_basic_map_can_zip(get());
5474
0
  return manage(res);
5475
0
}
5476
5477
basic_map basic_map::curry() const
5478
0
{
5479
0
  auto res = isl_basic_map_curry(copy());
5480
0
  return manage(res);
5481
0
}
5482
5483
basic_set basic_map::deltas() const
5484
0
{
5485
0
  auto res = isl_basic_map_deltas(copy());
5486
0
  return manage(res);
5487
0
}
5488
5489
basic_map basic_map::deltas_map() const
5490
0
{
5491
0
  auto res = isl_basic_map_deltas_map(copy());
5492
0
  return manage(res);
5493
0
}
5494
5495
basic_map basic_map::detect_equalities() const
5496
0
{
5497
0
  auto res = isl_basic_map_detect_equalities(copy());
5498
0
  return manage(res);
5499
0
}
5500
5501
unsigned int basic_map::dim(isl::dim type) const
5502
0
{
5503
0
  auto res = isl_basic_map_dim(get(), static_cast<enum isl_dim_type>(type));
5504
0
  return res;
5505
0
}
5506
5507
basic_set basic_map::domain() const
5508
0
{
5509
0
  auto res = isl_basic_map_domain(copy());
5510
0
  return manage(res);
5511
0
}
5512
5513
basic_map basic_map::domain_map() const
5514
0
{
5515
0
  auto res = isl_basic_map_domain_map(copy());
5516
0
  return manage(res);
5517
0
}
5518
5519
basic_map basic_map::domain_product(basic_map bmap2) const
5520
0
{
5521
0
  auto res = isl_basic_map_domain_product(copy(), bmap2.release());
5522
0
  return manage(res);
5523
0
}
5524
5525
basic_map basic_map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5526
0
{
5527
0
  auto res = isl_basic_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5528
0
  return manage(res);
5529
0
}
5530
5531
basic_map basic_map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5532
0
{
5533
0
  auto res = isl_basic_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5534
0
  return manage(res);
5535
0
}
5536
5537
basic_map basic_map::drop_unused_params() const
5538
0
{
5539
0
  auto res = isl_basic_map_drop_unused_params(copy());
5540
0
  return manage(res);
5541
0
}
5542
5543
basic_map basic_map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
5544
0
{
5545
0
  auto res = isl_basic_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
5546
0
  return manage(res);
5547
0
}
5548
5549
basic_map basic_map::empty(space space)
5550
0
{
5551
0
  auto res = isl_basic_map_empty(space.release());
5552
0
  return manage(res);
5553
0
}
5554
5555
basic_map basic_map::equal(space dim, unsigned int n_equal)
5556
49
{
5557
49
  auto res = isl_basic_map_equal(dim.release(), n_equal);
5558
49
  return manage(res);
5559
49
}
5560
5561
mat basic_map::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const
5562
0
{
5563
0
  auto res = isl_basic_map_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5564
0
  return manage(res);
5565
0
}
5566
5567
basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5568
1.36k
{
5569
1.36k
  auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5570
1.36k
  return manage(res);
5571
1.36k
}
5572
5573
int basic_map::find_dim_by_name(isl::dim type, const std::string &name) const
5574
0
{
5575
0
  auto res = isl_basic_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
5576
0
  return res;
5577
0
}
5578
5579
basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
5580
{
5581
  auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5582
  return manage(res);
5583
}
5584
5585
basic_map basic_map::fix_val(isl::dim type, unsigned int pos, val v) const
5586
0
{
5587
0
  auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
5588
0
  return manage(res);
5589
0
}
5590
5591
basic_map basic_map::flat_product(basic_map bmap2) const
5592
0
{
5593
0
  auto res = isl_basic_map_flat_product(copy(), bmap2.release());
5594
0
  return manage(res);
5595
0
}
5596
5597
basic_map basic_map::flat_range_product(basic_map bmap2) const
5598
0
{
5599
0
  auto res = isl_basic_map_flat_range_product(copy(), bmap2.release());
5600
0
  return manage(res);
5601
0
}
5602
5603
basic_map basic_map::flatten() const
5604
0
{
5605
0
  auto res = isl_basic_map_flatten(copy());
5606
0
  return manage(res);
5607
0
}
5608
5609
basic_map basic_map::flatten_domain() const
5610
0
{
5611
0
  auto res = isl_basic_map_flatten_domain(copy());
5612
0
  return manage(res);
5613
0
}
5614
5615
basic_map basic_map::flatten_range() const
5616
0
{
5617
0
  auto res = isl_basic_map_flatten_range(copy());
5618
0
  return manage(res);
5619
0
}
5620
5621
stat basic_map::foreach_constraint(const std::function<stat(constraint)> &fn) const
5622
0
{
5623
0
  struct fn_data {
5624
0
    const std::function<stat(constraint)> *func;
5625
0
  } fn_data = { &fn };
5626
0
  auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
5627
0
    auto *data = static_cast<struct fn_data *>(arg_1);
5628
0
    stat ret = (*data->func)(manage(arg_0));
5629
0
    return ret.release();
5630
0
  };
5631
0
  auto res = isl_basic_map_foreach_constraint(get(), fn_lambda, &fn_data);
5632
0
  return manage(res);
5633
0
}
5634
5635
basic_map basic_map::from_aff(aff aff)
5636
0
{
5637
0
  auto res = isl_basic_map_from_aff(aff.release());
5638
0
  return manage(res);
5639
0
}
5640
5641
basic_map basic_map::from_aff_list(space domain_space, aff_list list)
5642
0
{
5643
0
  auto res = isl_basic_map_from_aff_list(domain_space.release(), list.release());
5644
0
  return manage(res);
5645
0
}
5646
5647
basic_map basic_map::from_constraint(constraint constraint)
5648
0
{
5649
0
  auto res = isl_basic_map_from_constraint(constraint.release());
5650
0
  return manage(res);
5651
0
}
5652
5653
basic_map basic_map::from_domain(basic_set bset)
5654
0
{
5655
0
  auto res = isl_basic_map_from_domain(bset.release());
5656
0
  return manage(res);
5657
0
}
5658
5659
basic_map basic_map::from_domain_and_range(basic_set domain, basic_set range)
5660
60
{
5661
60
  auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release());
5662
60
  return manage(res);
5663
60
}
5664
5665
basic_map basic_map::from_multi_aff(multi_aff maff)
5666
0
{
5667
0
  auto res = isl_basic_map_from_multi_aff(maff.release());
5668
0
  return manage(res);
5669
0
}
5670
5671
basic_map basic_map::from_qpolynomial(qpolynomial qp)
5672
0
{
5673
0
  auto res = isl_basic_map_from_qpolynomial(qp.release());
5674
0
  return manage(res);
5675
0
}
5676
5677
basic_map basic_map::from_range(basic_set bset)
5678
0
{
5679
0
  auto res = isl_basic_map_from_range(bset.release());
5680
0
  return manage(res);
5681
0
}
5682
5683
constraint_list basic_map::get_constraint_list() const
5684
0
{
5685
0
  auto res = isl_basic_map_get_constraint_list(get());
5686
0
  return manage(res);
5687
0
}
5688
5689
std::string basic_map::get_dim_name(isl::dim type, unsigned int pos) const
5690
0
{
5691
0
  auto res = isl_basic_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
5692
0
  std::string tmp(res);
5693
0
  return tmp;
5694
0
}
5695
5696
aff basic_map::get_div(int pos) const
5697
0
{
5698
0
  auto res = isl_basic_map_get_div(get(), pos);
5699
0
  return manage(res);
5700
0
}
5701
5702
local_space basic_map::get_local_space() const
5703
0
{
5704
0
  auto res = isl_basic_map_get_local_space(get());
5705
0
  return manage(res);
5706
0
}
5707
5708
space basic_map::get_space() const
5709
0
{
5710
0
  auto res = isl_basic_map_get_space(get());
5711
0
  return manage(res);
5712
0
}
5713
5714
std::string basic_map::get_tuple_name(isl::dim type) const
5715
0
{
5716
0
  auto res = isl_basic_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
5717
0
  std::string tmp(res);
5718
0
  return tmp;
5719
0
}
5720
5721
basic_map basic_map::gist(basic_map context) const
5722
0
{
5723
0
  auto res = isl_basic_map_gist(copy(), context.release());
5724
0
  return manage(res);
5725
0
}
5726
5727
basic_map basic_map::gist_domain(basic_set context) const
5728
0
{
5729
0
  auto res = isl_basic_map_gist_domain(copy(), context.release());
5730
0
  return manage(res);
5731
0
}
5732
5733
boolean basic_map::has_dim_id(isl::dim type, unsigned int pos) const
5734
0
{
5735
0
  auto res = isl_basic_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
5736
0
  return manage(res);
5737
0
}
5738
5739
basic_map basic_map::identity(space dim)
5740
0
{
5741
0
  auto res = isl_basic_map_identity(dim.release());
5742
0
  return manage(res);
5743
0
}
5744
5745
boolean basic_map::image_is_bounded() const
5746
0
{
5747
0
  auto res = isl_basic_map_image_is_bounded(get());
5748
0
  return manage(res);
5749
0
}
5750
5751
mat basic_map::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const
5752
0
{
5753
0
  auto res = isl_basic_map_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5754
0
  return manage(res);
5755
0
}
5756
5757
basic_map basic_map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
5758
0
{
5759
0
  auto res = isl_basic_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
5760
0
  return manage(res);
5761
0
}
5762
5763
basic_map basic_map::intersect(basic_map bmap2) const
5764
0
{
5765
0
  auto res = isl_basic_map_intersect(copy(), bmap2.release());
5766
0
  return manage(res);
5767
0
}
5768
5769
basic_map basic_map::intersect_domain(basic_set bset) const
5770
0
{
5771
0
  auto res = isl_basic_map_intersect_domain(copy(), bset.release());
5772
0
  return manage(res);
5773
0
}
5774
5775
basic_map basic_map::intersect_range(basic_set bset) const
5776
0
{
5777
0
  auto res = isl_basic_map_intersect_range(copy(), bset.release());
5778
0
  return manage(res);
5779
0
}
5780
5781
boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
5782
0
{
5783
0
  auto res = isl_basic_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
5784
0
  return manage(res);
5785
0
}
5786
5787
boolean basic_map::is_disjoint(const basic_map &bmap2) const
5788
0
{
5789
0
  auto res = isl_basic_map_is_disjoint(get(), bmap2.get());
5790
0
  return manage(res);
5791
0
}
5792
5793
boolean basic_map::is_empty() const
5794
0
{
5795
0
  auto res = isl_basic_map_is_empty(get());
5796
0
  return manage(res);
5797
0
}
5798
5799
boolean basic_map::is_equal(const basic_map &bmap2) const
5800
{
5801
  auto res = isl_basic_map_is_equal(get(), bmap2.get());
5802
  return manage(res);
5803
}
5804
5805
boolean basic_map::is_rational() const
5806
0
{
5807
0
  auto res = isl_basic_map_is_rational(get());
5808
0
  return manage(res);
5809
0
}
5810
5811
boolean basic_map::is_single_valued() const
5812
0
{
5813
0
  auto res = isl_basic_map_is_single_valued(get());
5814
0
  return manage(res);
5815
0
}
5816
5817
boolean basic_map::is_strict_subset(const basic_map &bmap2) const
5818
0
{
5819
0
  auto res = isl_basic_map_is_strict_subset(get(), bmap2.get());
5820
0
  return manage(res);
5821
0
}
5822
5823
boolean basic_map::is_subset(const basic_map &bmap2) const
5824
0
{
5825
0
  auto res = isl_basic_map_is_subset(get(), bmap2.get());
5826
0
  return manage(res);
5827
0
}
5828
5829
boolean basic_map::is_universe() const
5830
0
{
5831
0
  auto res = isl_basic_map_is_universe(get());
5832
0
  return manage(res);
5833
0
}
5834
5835
basic_map basic_map::less_at(space dim, unsigned int pos)
5836
0
{
5837
0
  auto res = isl_basic_map_less_at(dim.release(), pos);
5838
0
  return manage(res);
5839
0
}
5840
5841
map basic_map::lexmax() const
5842
0
{
5843
0
  auto res = isl_basic_map_lexmax(copy());
5844
0
  return manage(res);
5845
0
}
5846
5847
map basic_map::lexmin() const
5848
0
{
5849
0
  auto res = isl_basic_map_lexmin(copy());
5850
0
  return manage(res);
5851
0
}
5852
5853
pw_multi_aff basic_map::lexmin_pw_multi_aff() const
5854
0
{
5855
0
  auto res = isl_basic_map_lexmin_pw_multi_aff(copy());
5856
0
  return manage(res);
5857
0
}
5858
5859
basic_map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
5860
0
{
5861
0
  auto res = isl_basic_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5862
0
  return manage(res);
5863
0
}
5864
5865
basic_map basic_map::more_at(space dim, unsigned int pos)
5866
0
{
5867
0
  auto res = isl_basic_map_more_at(dim.release(), pos);
5868
0
  return manage(res);
5869
0
}
5870
5871
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
5872
0
{
5873
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);
5874
0
  return manage(res);
5875
0
}
5876
5877
int basic_map::n_constraint() const
5878
0
{
5879
0
  auto res = isl_basic_map_n_constraint(get());
5880
0
  return res;
5881
0
}
5882
5883
basic_map basic_map::nat_universe(space dim)
5884
0
{
5885
0
  auto res = isl_basic_map_nat_universe(dim.release());
5886
0
  return manage(res);
5887
0
}
5888
5889
basic_map basic_map::neg() const
5890
0
{
5891
0
  auto res = isl_basic_map_neg(copy());
5892
0
  return manage(res);
5893
0
}
5894
5895
basic_map basic_map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5896
0
{
5897
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);
5898
0
  return manage(res);
5899
0
}
5900
5901
basic_map basic_map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5902
0
{
5903
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);
5904
0
  return manage(res);
5905
0
}
5906
5907
val basic_map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
5908
204
{
5909
204
  auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
5910
204
  return manage(res);
5911
204
}
5912
5913
boolean basic_map::plain_is_empty() const
5914
0
{
5915
0
  auto res = isl_basic_map_plain_is_empty(get());
5916
0
  return manage(res);
5917
0
}
5918
5919
boolean basic_map::plain_is_universe() const
5920
0
{
5921
0
  auto res = isl_basic_map_plain_is_universe(get());
5922
0
  return manage(res);
5923
0
}
5924
5925
basic_map basic_map::preimage_domain_multi_aff(multi_aff ma) const
5926
0
{
5927
0
  auto res = isl_basic_map_preimage_domain_multi_aff(copy(), ma.release());
5928
0
  return manage(res);
5929
0
}
5930
5931
basic_map basic_map::preimage_range_multi_aff(multi_aff ma) const
5932
0
{
5933
0
  auto res = isl_basic_map_preimage_range_multi_aff(copy(), ma.release());
5934
0
  return manage(res);
5935
0
}
5936
5937
basic_map basic_map::product(basic_map bmap2) const
5938
0
{
5939
0
  auto res = isl_basic_map_product(copy(), bmap2.release());
5940
0
  return manage(res);
5941
0
}
5942
5943
basic_map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
5944
0
{
5945
0
  auto res = isl_basic_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
5946
0
  return manage(res);
5947
0
}
5948
5949
basic_set basic_map::range() const
5950
0
{
5951
0
  auto res = isl_basic_map_range(copy());
5952
0
  return manage(res);
5953
0
}
5954
5955
basic_map basic_map::range_map() const
5956
0
{
5957
0
  auto res = isl_basic_map_range_map(copy());
5958
0
  return manage(res);
5959
0
}
5960
5961
basic_map basic_map::range_product(basic_map bmap2) const
5962
0
{
5963
0
  auto res = isl_basic_map_range_product(copy(), bmap2.release());
5964
0
  return manage(res);
5965
0
}
5966
5967
basic_map basic_map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
5968
0
{
5969
0
  auto res = isl_basic_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5970
0
  return manage(res);
5971
0
}
5972
5973
basic_map basic_map::remove_divs() const
5974
0
{
5975
0
  auto res = isl_basic_map_remove_divs(copy());
5976
0
  return manage(res);
5977
0
}
5978
5979
basic_map basic_map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5980
0
{
5981
0
  auto res = isl_basic_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5982
0
  return manage(res);
5983
0
}
5984
5985
basic_map basic_map::remove_redundancies() const
5986
0
{
5987
0
  auto res = isl_basic_map_remove_redundancies(copy());
5988
0
  return manage(res);
5989
0
}
5990
5991
basic_map basic_map::reverse() const
5992
0
{
5993
0
  auto res = isl_basic_map_reverse(copy());
5994
0
  return manage(res);
5995
0
}
5996
5997
basic_map basic_map::sample() const
5998
0
{
5999
0
  auto res = isl_basic_map_sample(copy());
6000
0
  return manage(res);
6001
0
}
6002
6003
basic_map basic_map::set_tuple_id(isl::dim type, id id) const
6004
0
{
6005
0
  auto res = isl_basic_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
6006
0
  return manage(res);
6007
0
}
6008
6009
basic_map basic_map::set_tuple_name(isl::dim type, const std::string &s) const
6010
0
{
6011
0
  auto res = isl_basic_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
6012
0
  return manage(res);
6013
0
}
6014
6015
basic_map basic_map::sum(basic_map bmap2) const
6016
0
{
6017
0
  auto res = isl_basic_map_sum(copy(), bmap2.release());
6018
0
  return manage(res);
6019
0
}
6020
6021
basic_map basic_map::uncurry() const
6022
0
{
6023
0
  auto res = isl_basic_map_uncurry(copy());
6024
0
  return manage(res);
6025
0
}
6026
6027
map basic_map::unite(basic_map bmap2) const
6028
0
{
6029
0
  auto res = isl_basic_map_union(copy(), bmap2.release());
6030
0
  return manage(res);
6031
0
}
6032
6033
basic_map basic_map::universe(space space)
6034
341
{
6035
341
  auto res = isl_basic_map_universe(space.release());
6036
341
  return manage(res);
6037
341
}
6038
6039
basic_map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
6040
0
{
6041
0
  auto res = isl_basic_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6042
0
  return manage(res);
6043
0
}
6044
6045
basic_set basic_map::wrap() const
6046
0
{
6047
0
  auto res = isl_basic_map_wrap(copy());
6048
0
  return manage(res);
6049
0
}
6050
6051
basic_map basic_map::zip() const
6052
0
{
6053
0
  auto res = isl_basic_map_zip(copy());
6054
0
  return manage(res);
6055
0
}
6056
6057
// implementations for isl::basic_map_list
6058
216
basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
6059
216
  return basic_map_list(ptr);
6060
216
}
6061
0
basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
6062
0
  ptr = isl_basic_map_list_copy(ptr);
6063
0
  return basic_map_list(ptr);
6064
0
}
6065
6066
basic_map_list::basic_map_list()
6067
    : ptr(nullptr) {}
6068
6069
basic_map_list::basic_map_list(const basic_map_list &obj)
6070
    : ptr(nullptr)
6071
{
6072
  ptr = obj.copy();
6073
}
6074
basic_map_list::basic_map_list(std::nullptr_t)
6075
    : ptr(nullptr) {}
6076
6077
6078
basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr)
6079
216
    : ptr(ptr) {}
6080
6081
6082
0
basic_map_list &basic_map_list::operator=(basic_map_list obj) {
6083
0
  std::swap(this->ptr, obj.ptr);
6084
0
  return *this;
6085
0
}
6086
6087
216
basic_map_list::~basic_map_list() {
6088
216
  if (ptr)
6089
216
    isl_basic_map_list_free(ptr);
6090
216
}
6091
6092
0
__isl_give isl_basic_map_list *basic_map_list::copy() const & {
6093
0
  return isl_basic_map_list_copy(ptr);
6094
0
}
6095
6096
450
__isl_keep isl_basic_map_list *basic_map_list::get() const {
6097
450
  return ptr;
6098
450
}
6099
6100
0
__isl_give isl_basic_map_list *basic_map_list::release() {
6101
0
  isl_basic_map_list *tmp = ptr;
6102
0
  ptr = nullptr;
6103
0
  return tmp;
6104
0
}
6105
6106
0
bool basic_map_list::is_null() const {
6107
0
  return ptr == nullptr;
6108
0
}
6109
0
basic_map_list::operator bool() const {
6110
0
  return !is_null();
6111
0
}
6112
6113
6114
0
ctx basic_map_list::get_ctx() const {
6115
0
  return ctx(isl_basic_map_list_get_ctx(ptr));
6116
0
}
6117
6118
0
void basic_map_list::dump() const {
6119
0
  isl_basic_map_list_dump(get());
6120
0
}
6121
6122
6123
basic_map_list basic_map_list::add(basic_map el) const
6124
0
{
6125
0
  auto res = isl_basic_map_list_add(copy(), el.release());
6126
0
  return manage(res);
6127
0
}
6128
6129
basic_map_list basic_map_list::alloc(ctx ctx, int n)
6130
0
{
6131
0
  auto res = isl_basic_map_list_alloc(ctx.release(), n);
6132
0
  return manage(res);
6133
0
}
6134
6135
basic_map_list basic_map_list::concat(basic_map_list list2) const
6136
0
{
6137
0
  auto res = isl_basic_map_list_concat(copy(), list2.release());
6138
0
  return manage(res);
6139
0
}
6140
6141
basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const
6142
0
{
6143
0
  auto res = isl_basic_map_list_drop(copy(), first, n);
6144
0
  return manage(res);
6145
0
}
6146
6147
stat basic_map_list::foreach(const std::function<stat(basic_map)> &fn) const
6148
0
{
6149
0
  struct fn_data {
6150
0
    const std::function<stat(basic_map)> *func;
6151
0
  } fn_data = { &fn };
6152
0
  auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
6153
0
    auto *data = static_cast<struct fn_data *>(arg_1);
6154
0
    stat ret = (*data->func)(manage(arg_0));
6155
0
    return ret.release();
6156
0
  };
6157
0
  auto res = isl_basic_map_list_foreach(get(), fn_lambda, &fn_data);
6158
0
  return manage(res);
6159
0
}
6160
6161
basic_map_list basic_map_list::from_basic_map(basic_map el)
6162
0
{
6163
0
  auto res = isl_basic_map_list_from_basic_map(el.release());
6164
0
  return manage(res);
6165
0
}
6166
6167
basic_map basic_map_list::get_at(int index) const
6168
234
{
6169
234
  auto res = isl_basic_map_list_get_at(get(), index);
6170
234
  return manage(res);
6171
234
}
6172
6173
basic_map basic_map_list::get_basic_map(int index) const
6174
0
{
6175
0
  auto res = isl_basic_map_list_get_basic_map(get(), index);
6176
0
  return manage(res);
6177
0
}
6178
6179
basic_map_list basic_map_list::insert(unsigned int pos, basic_map el) const
6180
0
{
6181
0
  auto res = isl_basic_map_list_insert(copy(), pos, el.release());
6182
0
  return manage(res);
6183
0
}
6184
6185
int basic_map_list::n_basic_map() const
6186
0
{
6187
0
  auto res = isl_basic_map_list_n_basic_map(get());
6188
0
  return res;
6189
0
}
6190
6191
basic_map_list basic_map_list::reverse() const
6192
0
{
6193
0
  auto res = isl_basic_map_list_reverse(copy());
6194
0
  return manage(res);
6195
0
}
6196
6197
basic_map_list basic_map_list::set_basic_map(int index, basic_map el) const
6198
0
{
6199
0
  auto res = isl_basic_map_list_set_basic_map(copy(), index, el.release());
6200
0
  return manage(res);
6201
0
}
6202
6203
int basic_map_list::size() const
6204
216
{
6205
216
  auto res = isl_basic_map_list_size(get());
6206
216
  return res;
6207
216
}
6208
6209
basic_map_list basic_map_list::swap(unsigned int pos1, unsigned int pos2) const
6210
0
{
6211
0
  auto res = isl_basic_map_list_swap(copy(), pos1, pos2);
6212
0
  return manage(res);
6213
0
}
6214
6215
// implementations for isl::basic_set
6216
3.92k
basic_set manage(__isl_take isl_basic_set *ptr) {
6217
3.92k
  return basic_set(ptr);
6218
3.92k
}
6219
0
basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
6220
0
  ptr = isl_basic_set_copy(ptr);
6221
0
  return basic_set(ptr);
6222
0
}
6223
6224
basic_set::basic_set()
6225
    : ptr(nullptr) {}
6226
6227
basic_set::basic_set(const basic_set &obj)
6228
    : ptr(nullptr)
6229
2.47k
{
6230
2.47k
  ptr = obj.copy();
6231
2.47k
}
6232
basic_set::basic_set(std::nullptr_t)
6233
    : ptr(nullptr) {}
6234
6235
6236
basic_set::basic_set(__isl_take isl_basic_set *ptr)
6237
3.92k
    : ptr(ptr) {}
6238
6239
basic_set::basic_set(ctx ctx, const std::string &str)
6240
{
6241
  auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
6242
  ptr = res;
6243
}
6244
basic_set::basic_set(point pnt)
6245
{
6246
  auto res = isl_basic_set_from_point(pnt.release());
6247
  ptr = res;
6248
}
6249
6250
362
basic_set &basic_set::operator=(basic_set obj) {
6251
362
  std::swap(this->ptr, obj.ptr);
6252
362
  return *this;
6253
362
}
6254
6255
6.41k
basic_set::~basic_set() {
6256
6.41k
  if (ptr)
6257
4.18k
    isl_basic_set_free(ptr);
6258
6.41k
}
6259
6260
2.84k
__isl_give isl_basic_set *basic_set::copy() const & {
6261
2.84k
  return isl_basic_set_copy(ptr);
6262
2.84k
}
6263
6264
4.35k
__isl_keep isl_basic_set *basic_set::get() const {
6265
4.35k
  return ptr;
6266
4.35k
}
6267
6268
2.22k
__isl_give isl_basic_set *basic_set::release() {
6269
2.22k
  isl_basic_set *tmp = ptr;
6270
2.22k
  ptr = nullptr;
6271
2.22k
  return tmp;
6272
2.22k
}
6273
6274
0
bool basic_set::is_null() const {
6275
0
  return ptr == nullptr;
6276
0
}
6277
0
basic_set::operator bool() const {
6278
0
  return !is_null();
6279
0
}
6280
6281
6282
0
ctx basic_set::get_ctx() const {
6283
0
  return ctx(isl_basic_set_get_ctx(ptr));
6284
0
}
6285
0
std::string basic_set::to_str() const {
6286
0
  char *Tmp = isl_basic_set_to_str(get());
6287
0
  if (!Tmp)
6288
0
    return "";
6289
0
  std::string S(Tmp);
6290
0
  free(Tmp);
6291
0
  return S;
6292
0
}
6293
6294
6295
0
void basic_set::dump() const {
6296
0
  isl_basic_set_dump(get());
6297
0
}
6298
6299
6300
basic_set basic_set::affine_hull() const
6301
0
{
6302
0
  auto res = isl_basic_set_affine_hull(copy());
6303
0
  return manage(res);
6304
0
}
6305
6306
basic_set basic_set::align_params(space model) const
6307
0
{
6308
0
  auto res = isl_basic_set_align_params(copy(), model.release());
6309
0
  return manage(res);
6310
0
}
6311
6312
basic_set basic_set::apply(basic_map bmap) const
6313
0
{
6314
0
  auto res = isl_basic_set_apply(copy(), bmap.release());
6315
0
  return manage(res);
6316
0
}
6317
6318
basic_set basic_set::box_from_points(point pnt1, point pnt2)
6319
0
{
6320
0
  auto res = isl_basic_set_box_from_points(pnt1.release(), pnt2.release());
6321
0
  return manage(res);
6322
0
}
6323
6324
basic_set basic_set::coefficients() const
6325
0
{
6326
0
  auto res = isl_basic_set_coefficients(copy());
6327
0
  return manage(res);
6328
0
}
6329
6330
basic_set basic_set::detect_equalities() const
6331
0
{
6332
0
  auto res = isl_basic_set_detect_equalities(copy());
6333
0
  return manage(res);
6334
0
}
6335
6336
unsigned int basic_set::dim(isl::dim type) const
6337
1.28k
{
6338
1.28k
  auto res = isl_basic_set_dim(get(), static_cast<enum isl_dim_type>(type));
6339
1.28k
  return res;
6340
1.28k
}
6341
6342
val basic_set::dim_max_val(int pos) const
6343
0
{
6344
0
  auto res = isl_basic_set_dim_max_val(copy(), pos);
6345
0
  return manage(res);
6346
0
}
6347
6348
basic_set basic_set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6349
0
{
6350
0
  auto res = isl_basic_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6351
0
  return manage(res);
6352
0
}
6353
6354
basic_set basic_set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6355
0
{
6356
0
  auto res = isl_basic_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6357
0
  return manage(res);
6358
0
}
6359
6360
basic_set basic_set::drop_unused_params() const
6361
0
{
6362
0
  auto res = isl_basic_set_drop_unused_params(copy());
6363
0
  return manage(res);
6364
0
}
6365
6366
basic_set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
6367
0
{
6368
0
  auto res = isl_basic_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
6369
0
  return manage(res);
6370
0
}
6371
6372
basic_set basic_set::empty(space space)
6373
0
{
6374
0
  auto res = isl_basic_set_empty(space.release());
6375
0
  return manage(res);
6376
0
}
6377
6378
mat basic_set::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const
6379
0
{
6380
0
  auto res = isl_basic_set_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
6381
0
  return manage(res);
6382
0
}
6383
6384
basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const
6385
362
{
6386
362
  auto res = isl_basic_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6387
362
  return manage(res);
6388
362
}
6389
6390
basic_set basic_set::fix_val(isl::dim type, unsigned int pos, val v) const
6391
0
{
6392
0
  auto res = isl_basic_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
6393
0
  return manage(res);
6394
0
}
6395
6396
basic_set basic_set::flat_product(basic_set bset2) const
6397
0
{
6398
0
  auto res = isl_basic_set_flat_product(copy(), bset2.release());
6399
0
  return manage(res);
6400
0
}
6401
6402
basic_set basic_set::flatten() const
6403
0
{
6404
0
  auto res = isl_basic_set_flatten(copy());
6405
0
  return manage(res);
6406
0
}
6407
6408
stat basic_set::foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<stat(constraint, constraint, basic_set)> &fn) const
6409
0
{
6410
0
  struct fn_data {
6411
0
    const std::function<stat(constraint, constraint, basic_set)> *func;
6412
0
  } fn_data = { &fn };
6413
0
  auto fn_lambda = [](isl_constraint *arg_0, isl_constraint *arg_1, isl_basic_set *arg_2, void *arg_3) -> isl_stat {
6414
0
    auto *data = static_cast<struct fn_data *>(arg_3);
6415
0
    stat ret = (*data->func)(manage(arg_0), manage(arg_1), manage(arg_2));
6416
0
    return ret.release();
6417
0
  };
6418
0
  auto res = isl_basic_set_foreach_bound_pair(get(), static_cast<enum isl_dim_type>(type), pos, fn_lambda, &fn_data);
6419
0
  return manage(res);
6420
0
}
6421
6422
stat basic_set::foreach_constraint(const std::function<stat(constraint)> &fn) const
6423
0
{
6424
0
  struct fn_data {
6425
0
    const std::function<stat(constraint)> *func;
6426
0
  } fn_data = { &fn };
6427
0
  auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
6428
0
    auto *data = static_cast<struct fn_data *>(arg_1);
6429
0
    stat ret = (*data->func)(manage(arg_0));
6430
0
    return ret.release();
6431
0
  };
6432
0
  auto res = isl_basic_set_foreach_constraint(get(), fn_lambda, &fn_data);
6433
0
  return manage(res);
6434
0
}
6435
6436
basic_set basic_set::from_constraint(constraint constraint)
6437
0
{
6438
0
  auto res = isl_basic_set_from_constraint(constraint.release());
6439
0
  return manage(res);
6440
0
}
6441
6442
basic_set basic_set::from_multi_aff(multi_aff ma)
6443
0
{
6444
0
  auto res = isl_basic_set_from_multi_aff(ma.release());
6445
0
  return manage(res);
6446
0
}
6447
6448
basic_set basic_set::from_params() const
6449
0
{
6450
0
  auto res = isl_basic_set_from_params(copy());
6451
0
  return manage(res);
6452
0
}
6453
6454
constraint_list basic_set::get_constraint_list() const
6455
0
{
6456
0
  auto res = isl_basic_set_get_constraint_list(get());
6457
0
  return manage(res);
6458
0
}
6459
6460
id basic_set::get_dim_id(isl::dim type, unsigned int pos) const
6461
0
{
6462
0
  auto res = isl_basic_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
6463
0
  return manage(res);
6464
0
}
6465
6466
std::string basic_set::get_dim_name(isl::dim type, unsigned int pos) const
6467
0
{
6468
0
  auto res = isl_basic_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
6469
0
  std::string tmp(res);
6470
0
  return tmp;
6471
0
}
6472
6473
aff basic_set::get_div(int pos) const
6474
5
{
6475
5
  auto res = isl_basic_set_get_div(get(), pos);
6476
5
  return manage(res);
6477
5
}
6478
6479
local_space basic_set::get_local_space() const
6480
0
{
6481
0
  auto res = isl_basic_set_get_local_space(get());
6482
0
  return manage(res);
6483
0
}
6484
6485
space basic_set::get_space() const
6486
0
{
6487
0
  auto res = isl_basic_set_get_space(get());
6488
0
  return manage(res);
6489
0
}
6490
6491
std::string basic_set::get_tuple_name() const
6492
0
{
6493
0
  auto res = isl_basic_set_get_tuple_name(get());
6494
0
  std::string tmp(res);
6495
0
  return tmp;
6496
0
}
6497
6498
basic_set basic_set::gist(basic_set context) const
6499
0
{
6500
0
  auto res = isl_basic_set_gist(copy(), context.release());
6501
0
  return manage(res);
6502
0
}
6503
6504
mat basic_set::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const
6505
0
{
6506
0
  auto res = isl_basic_set_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
6507
0
  return manage(res);
6508
0
}
6509
6510
basic_set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
6511
0
{
6512
0
  auto res = isl_basic_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
6513
0
  return manage(res);
6514
0
}
6515
6516
basic_set basic_set::intersect(basic_set bset2) const
6517
0
{
6518
0
  auto res = isl_basic_set_intersect(copy(), bset2.release());
6519
0
  return manage(res);
6520
0
}
6521
6522
basic_set basic_set::intersect_params(basic_set bset2) const
6523
0
{
6524
0
  auto res = isl_basic_set_intersect_params(copy(), bset2.release());
6525
0
  return manage(res);
6526
0
}
6527
6528
boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
6529
0
{
6530
0
  auto res = isl_basic_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
6531
0
  return manage(res);
6532
0
}
6533
6534
boolean basic_set::is_bounded() const
6535
2.33k
{
6536
2.33k
  auto res = isl_basic_set_is_bounded(get());
6537
2.33k
  return manage(res);
6538
2.33k
}
6539
6540
boolean basic_set::is_disjoint(const basic_set &bset2) const
6541
0
{
6542
0
  auto res = isl_basic_set_is_disjoint(get(), bset2.get());
6543
0
  return manage(res);
6544
0
}
6545
6546
boolean basic_set::is_empty() const
6547
0
{
6548
0
  auto res = isl_basic_set_is_empty(get());
6549
0
  return manage(res);
6550
0
}
6551
6552
boolean basic_set::is_equal(const basic_set &bset2) const
6553
367
{
6554
367
  auto res = isl_basic_set_is_equal(get(), bset2.get());
6555
367
  return manage(res);
6556
367
}
6557
6558
int basic_set::is_rational() const
6559
0
{
6560
0
  auto res = isl_basic_set_is_rational(get());
6561
0
  return res;
6562
0
}
6563
6564
boolean basic_set::is_subset(const basic_set &bset2) const
6565
0
{
6566
0
  auto res = isl_basic_set_is_subset(get(), bset2.get());
6567
0
  return manage(res);
6568
0
}
6569
6570
boolean basic_set::is_universe() const
6571
0
{
6572
0
  auto res = isl_basic_set_is_universe(get());
6573
0
  return manage(res);
6574
0
}
6575
6576
boolean basic_set::is_wrapping() const
6577
0
{
6578
0
  auto res = isl_basic_set_is_wrapping(get());
6579
0
  return manage(res);
6580
0
}
6581
6582
set basic_set::lexmax() const
6583
0
{
6584
0
  auto res = isl_basic_set_lexmax(copy());
6585
0
  return manage(res);
6586
0
}
6587
6588
set basic_set::lexmin() const
6589
0
{
6590
0
  auto res = isl_basic_set_lexmin(copy());
6591
0
  return manage(res);
6592
0
}
6593
6594
basic_set basic_set::lower_bound_val(isl::dim type, unsigned int pos, val value) const
6595
0
{
6596
0
  auto res = isl_basic_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
6597
0
  return manage(res);
6598
0
}
6599
6600
val basic_set::max_val(const aff &obj) const
6601
0
{
6602
0
  auto res = isl_basic_set_max_val(get(), obj.get());
6603
0
  return manage(res);
6604
0
}
6605
6606
basic_set basic_set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
6607
0
{
6608
0
  auto res = isl_basic_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
6609
0
  return manage(res);
6610
0
}
6611
6612
int basic_set::n_constraint() const
6613
0
{
6614
0
  auto res = isl_basic_set_n_constraint(get());
6615
0
  return res;
6616
0
}
6617
6618
unsigned int basic_set::n_dim() const
6619
0
{
6620
0
  auto res = isl_basic_set_n_dim(get());
6621
0
  return res;
6622
0
}
6623
6624
basic_set basic_set::nat_universe(space dim)
6625
0
{
6626
0
  auto res = isl_basic_set_nat_universe(dim.release());
6627
0
  return manage(res);
6628
0
}
6629
6630
basic_set basic_set::neg() const
6631
0
{
6632
0
  auto res = isl_basic_set_neg(copy());
6633
0
  return manage(res);
6634
0
}
6635
6636
basic_set basic_set::params() const
6637
0
{
6638
0
  auto res = isl_basic_set_params(copy());
6639
0
  return manage(res);
6640
0
}
6641
6642
boolean basic_set::plain_is_empty() const
6643
0
{
6644
0
  auto res = isl_basic_set_plain_is_empty(get());
6645
0
  return manage(res);
6646
0
}
6647
6648
boolean basic_set::plain_is_equal(const basic_set &bset2) const
6649
0
{
6650
0
  auto res = isl_basic_set_plain_is_equal(get(), bset2.get());
6651
0
  return manage(res);
6652
0
}
6653
6654
boolean basic_set::plain_is_universe() const
6655
0
{
6656
0
  auto res = isl_basic_set_plain_is_universe(get());
6657
0
  return manage(res);
6658
0
}
6659
6660
basic_set basic_set::positive_orthant(space space)
6661
0
{
6662
0
  auto res = isl_basic_set_positive_orthant(space.release());
6663
0
  return manage(res);
6664
0
}
6665
6666
basic_set basic_set::preimage_multi_aff(multi_aff ma) const
6667
0
{
6668
0
  auto res = isl_basic_set_preimage_multi_aff(copy(), ma.release());
6669
0
  return manage(res);
6670
0
}
6671
6672
basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
6673
0
{
6674
0
  auto res = isl_basic_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
6675
0
  return manage(res);
6676
0
}
6677
6678
mat basic_set::reduced_basis() const
6679
0
{
6680
0
  auto res = isl_basic_set_reduced_basis(get());
6681
0
  return manage(res);
6682
0
}
6683
6684
basic_set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
6685
0
{
6686
0
  auto res = isl_basic_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6687
0
  return manage(res);
6688
0
}
6689
6690
basic_set basic_set::remove_divs() const
6691
0
{
6692
0
  auto res = isl_basic_set_remove_divs(copy());
6693
0
  return manage(res);
6694
0
}
6695
6696
basic_set basic_set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6697
0
{
6698
0
  auto res = isl_basic_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6699
0
  return manage(res);
6700
0
}
6701
6702
basic_set basic_set::remove_redundancies() const
6703
0
{
6704
0
  auto res = isl_basic_set_remove_redundancies(copy());
6705
0
  return manage(res);
6706
0
}
6707
6708
basic_set basic_set::remove_unknown_divs() const
6709
0
{
6710
0
  auto res = isl_basic_set_remove_unknown_divs(copy());
6711
0
  return manage(res);
6712
0
}
6713
6714
basic_set basic_set::sample() const
6715
0
{
6716
0
  auto res = isl_basic_set_sample(copy());
6717
0
  return manage(res);
6718
0
}
6719
6720
point basic_set::sample_point() const
6721
0
{
6722
0
  auto res = isl_basic_set_sample_point(copy());
6723
0
  return manage(res);
6724
0
}
6725
6726
basic_set basic_set::set_tuple_id(id id) const
6727
0
{
6728
0
  auto res = isl_basic_set_set_tuple_id(copy(), id.release());
6729
0
  return manage(res);
6730
0
}
6731
6732
basic_set basic_set::set_tuple_name(const std::string &s) const
6733
0
{
6734
0
  auto res = isl_basic_set_set_tuple_name(copy(), s.c_str());
6735
0
  return manage(res);
6736
0
}
6737
6738
basic_set basic_set::solutions() const
6739
0
{
6740
0
  auto res = isl_basic_set_solutions(copy());
6741
0
  return manage(res);
6742
0
}
6743
6744
set basic_set::unite(basic_set bset2) const
6745
{
6746
  auto res = isl_basic_set_union(copy(), bset2.release());
6747
  return manage(res);
6748
}
6749
6750
basic_set basic_set::universe(space space)
6751
120
{
6752
120
  auto res = isl_basic_set_universe(space.release());
6753
120
  return manage(res);
6754
120
}
6755
6756
basic_map basic_set::unwrap() const
6757
0
{
6758
0
  auto res = isl_basic_set_unwrap(copy());
6759
0
  return manage(res);
6760
0
}
6761
6762
basic_set basic_set::upper_bound_val(isl::dim type, unsigned int pos, val value) const
6763
0
{
6764
0
  auto res = isl_basic_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
6765
0
  return manage(res);
6766
0
}
6767
6768
// implementations for isl::basic_set_list
6769
2.11k
basic_set_list manage(__isl_take isl_basic_set_list *ptr) {
6770
2.11k
  return basic_set_list(ptr);
6771
2.11k
}
6772
0
basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) {
6773
0
  ptr = isl_basic_set_list_copy(ptr);
6774
0
  return basic_set_list(ptr);
6775
0
}
6776
6777
basic_set_list::basic_set_list()
6778
    : ptr(nullptr) {}
6779
6780
basic_set_list::basic_set_list(const basic_set_list &obj)
6781
    : ptr(nullptr)
6782
{
6783
  ptr = obj.copy();
6784
}
6785
basic_set_list::basic_set_list(std::nullptr_t)
6786
    : ptr(nullptr) {}
6787
6788
6789
basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr)
6790
2.11k
    : ptr(ptr) {}
6791
6792
6793
0
basic_set_list &basic_set_list::operator=(basic_set_list obj) {
6794
0
  std::swap(this->ptr, obj.ptr);
6795
0
  return *this;
6796
0
}
6797
6798
2.11k
basic_set_list::~basic_set_list() {
6799
2.11k
  if (ptr)
6800
2.11k
    isl_basic_set_list_free(ptr);
6801
2.11k
}
6802
6803
0
__isl_give isl_basic_set_list *basic_set_list::copy() const & {
6804
0
  return isl_basic_set_list_copy(ptr);
6805
0
}
6806
6807
4.90k
__isl_keep isl_basic_set_list *basic_set_list::get() const {
6808
4.90k
  return ptr;
6809
4.90k
}
6810
6811
0
__isl_give isl_basic_set_list *basic_set_list::release() {
6812
0
  isl_basic_set_list *tmp = ptr;
6813
0
  ptr = nullptr;
6814
0
  return tmp;
6815
0
}
6816
6817
0
bool basic_set_list::is_null() const {
6818
0
  return ptr == nullptr;
6819
0
}
6820
0
basic_set_list::operator bool() const {
6821
0
  return !is_null();
6822
0
}
6823
6824
6825
0
ctx basic_set_list::get_ctx() const {
6826
0
  return ctx(isl_basic_set_list_get_ctx(ptr));
6827
0
}
6828
6829
0
void basic_set_list::dump() const {
6830
0
  isl_basic_set_list_dump(get());
6831
0
}
6832
6833
6834
basic_set_list basic_set_list::add(basic_set el) const
6835
0
{
6836
0
  auto res = isl_basic_set_list_add(copy(), el.release());
6837
0
  return manage(res);
6838
0
}
6839
6840
basic_set_list basic_set_list::alloc(ctx ctx, int n)
6841
0
{
6842
0
  auto res = isl_basic_set_list_alloc(ctx.release(), n);
6843
0
  return manage(res);
6844
0
}
6845
6846
basic_set_list basic_set_list::coefficients() const
6847
0
{
6848
0
  auto res = isl_basic_set_list_coefficients(copy());
6849
0
  return manage(res);
6850
0
}
6851
6852
basic_set_list basic_set_list::concat(basic_set_list list2) const
6853
0
{
6854
0
  auto res = isl_basic_set_list_concat(copy(), list2.release());
6855
0
  return manage(res);
6856
0
}
6857
6858
basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const
6859
0
{
6860
0
  auto res = isl_basic_set_list_drop(copy(), first, n);
6861
0
  return manage(res);
6862
0
}
6863
6864
stat basic_set_list::foreach(const std::function<stat(basic_set)> &fn) const
6865
0
{
6866
0
  struct fn_data {
6867
0
    const std::function<stat(basic_set)> *func;
6868
0
  } fn_data = { &fn };
6869
0
  auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
6870
0
    auto *data = static_cast<struct fn_data *>(arg_1);
6871
0
    stat ret = (*data->func)(manage(arg_0));
6872
0
    return ret.release();
6873
0
  };
6874
0
  auto res = isl_basic_set_list_foreach(get(), fn_lambda, &fn_data);
6875
0
  return manage(res);
6876
0
}
6877
6878
basic_set_list basic_set_list::from_basic_set(basic_set el)
6879
0
{
6880
0
  auto res = isl_basic_set_list_from_basic_set(el.release());
6881
0
  return manage(res);
6882
0
}
6883
6884
basic_set basic_set_list::get_at(int index) const
6885
2.79k
{
6886
2.79k
  auto res = isl_basic_set_list_get_at(get(), index);
6887
2.79k
  return manage(res);
6888
2.79k
}
6889
6890
basic_set basic_set_list::get_basic_set(int index) const
6891
0
{
6892
0
  auto res = isl_basic_set_list_get_basic_set(get(), index);
6893
0
  return manage(res);
6894
0
}
6895
6896
basic_set_list basic_set_list::insert(unsigned int pos, basic_set el) const
6897
0
{
6898
0
  auto res = isl_basic_set_list_insert(copy(), pos, el.release());
6899
0
  return manage(res);
6900
0
}
6901
6902
int basic_set_list::n_basic_set() const
6903
0
{
6904
0
  auto res = isl_basic_set_list_n_basic_set(get());
6905
0
  return res;
6906
0
}
6907
6908
basic_set_list basic_set_list::reverse() const
6909
0
{
6910
0
  auto res = isl_basic_set_list_reverse(copy());
6911
0
  return manage(res);
6912
0
}
6913
6914
basic_set_list basic_set_list::set_basic_set(int index, basic_set el) const
6915
0
{
6916
0
  auto res = isl_basic_set_list_set_basic_set(copy(), index, el.release());
6917
0
  return manage(res);
6918
0
}
6919
6920
int basic_set_list::size() const
6921
2.11k
{
6922
2.11k
  auto res = isl_basic_set_list_size(get());
6923
2.11k
  return res;
6924
2.11k
}
6925
6926
basic_set_list basic_set_list::swap(unsigned int pos1, unsigned int pos2) const
6927
0
{
6928
0
  auto res = isl_basic_set_list_swap(copy(), pos1, pos2);
6929
0
  return manage(res);
6930
0
}
6931
6932
// implementations for isl::constraint
6933
11.4k
constraint manage(__isl_take isl_constraint *ptr) {
6934
11.4k
  return constraint(ptr);
6935
11.4k
}
6936
0
constraint manage_copy(__isl_keep isl_constraint *ptr) {
6937
0
  ptr = isl_constraint_copy(ptr);
6938
0
  return constraint(ptr);
6939
0
}
6940
6941
constraint::constraint()
6942
332
    : ptr(nullptr) {}
6943
6944
constraint::constraint(const constraint &obj)
6945
    : ptr(nullptr)
6946
3.02k
{
6947
3.02k
  ptr = obj.copy();
6948
3.02k
}
6949
constraint::constraint(std::nullptr_t)
6950
    : ptr(nullptr) {}
6951
6952
6953
constraint::constraint(__isl_take isl_constraint *ptr)
6954
11.4k
    : ptr(ptr) {}
6955
6956
6957
9.12k
constraint &constraint::operator=(constraint obj) {
6958
9.12k
  std::swap(this->ptr, obj.ptr);
6959
9.12k
  return *this;
6960
9.12k
}
6961
6962
14.8k
constraint::~constraint() {
6963
14.8k
  if (ptr)
6964
11.4k
    isl_constraint_free(ptr);
6965
14.8k
}
6966
6967
11.4k
__isl_give isl_constraint *constraint::copy() const & {
6968
11.4k
  return isl_constraint_copy(ptr);
6969
11.4k
}
6970
6971
0
__isl_keep isl_constraint *constraint::get() const {
6972
0
  return ptr;
6973
0
}
6974
6975
3.02k
__isl_give isl_constraint *constraint::release() {
6976
3.02k
  isl_constraint *tmp = ptr;
6977
3.02k
  ptr = nullptr;
6978
3.02k
  return tmp;
6979
3.02k
}
6980
6981
0
bool constraint::is_null() const {
6982
0
  return ptr == nullptr;
6983
0
}
6984
0
constraint::operator bool() const {
6985
0
  return !is_null();
6986
0
}
6987
6988
6989
0
ctx constraint::get_ctx() const {
6990
0
  return ctx(isl_constraint_get_ctx(ptr));
6991
0
}
6992
6993
0
void constraint::dump() const {
6994
0
  isl_constraint_dump(get());
6995
0
}
6996
6997
6998
constraint constraint::alloc_equality(local_space ls)
6999
2.25k
{
7000
2.25k
  auto res = isl_constraint_alloc_equality(ls.release());
7001
2.25k
  return manage(res);
7002
2.25k
}
7003
7004
constraint constraint::alloc_inequality(local_space ls)
7005
770
{
7006
770
  auto res = isl_constraint_alloc_inequality(ls.release());
7007
770
  return manage(res);
7008
770
}
7009
7010
int constraint::cmp_last_non_zero(const constraint &c2) const
7011
0
{
7012
0
  auto res = isl_constraint_cmp_last_non_zero(get(), c2.get());
7013
0
  return res;
7014
0
}
7015
7016
aff constraint::get_aff() const
7017
0
{
7018
0
  auto res = isl_constraint_get_aff(get());
7019
0
  return manage(res);
7020
0
}
7021
7022
aff constraint::get_bound(isl::dim type, int pos) const
7023
0
{
7024
0
  auto res = isl_constraint_get_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7025
0
  return manage(res);
7026
0
}
7027
7028
val constraint::get_coefficient_val(isl::dim type, int pos) const
7029
0
{
7030
0
  auto res = isl_constraint_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
7031
0
  return manage(res);
7032
0
}
7033
7034
val constraint::get_constant_val() const
7035
0
{
7036
0
  auto res = isl_constraint_get_constant_val(get());
7037
0
  return manage(res);
7038
0
}
7039
7040
std::string constraint::get_dim_name(isl::dim type, unsigned int pos) const
7041
0
{
7042
0
  auto res = isl_constraint_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7043
0
  std::string tmp(res);
7044
0
  return tmp;
7045
0
}
7046
7047
aff constraint::get_div(int pos) const
7048
0
{
7049
0
  auto res = isl_constraint_get_div(get(), pos);
7050
0
  return manage(res);
7051
0
}
7052
7053
local_space constraint::get_local_space() const
7054
0
{
7055
0
  auto res = isl_constraint_get_local_space(get());
7056
0
  return manage(res);
7057
0
}
7058
7059
space constraint::get_space() const
7060
0
{
7061
0
  auto res = isl_constraint_get_space(get());
7062
0
  return manage(res);
7063
0
}
7064
7065
boolean constraint::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
7066
0
{
7067
0
  auto res = isl_constraint_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
7068
0
  return manage(res);
7069
0
}
7070
7071
int constraint::is_div_constraint() const
7072
0
{
7073
0
  auto res = isl_constraint_is_div_constraint(get());
7074
0
  return res;
7075
0
}
7076
7077
boolean constraint::is_lower_bound(isl::dim type, unsigned int pos) const
7078
0
{
7079
0
  auto res = isl_constraint_is_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7080
0
  return manage(res);
7081
0
}
7082
7083
boolean constraint::is_upper_bound(isl::dim type, unsigned int pos) const
7084
0
{
7085
0
  auto res = isl_constraint_is_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7086
0
  return manage(res);
7087
0
}
7088
7089
int constraint::plain_cmp(const constraint &c2) const
7090
0
{
7091
0
  auto res = isl_constraint_plain_cmp(get(), c2.get());
7092
0
  return res;
7093
0
}
7094
7095
constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const
7096
6.24k
{
7097
6.24k
  auto res = isl_constraint_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
7098
6.24k
  return manage(res);
7099
6.24k
}
7100
7101
constraint constraint::set_coefficient_val(isl::dim type, int pos, val v) const
7102
0
{
7103
0
  auto res = isl_constraint_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
7104
0
  return manage(res);
7105
0
}
7106
7107
constraint constraint::set_constant_si(int v) const
7108
2.06k
{
7109
2.06k
  auto res = isl_constraint_set_constant_si(copy(), v);
7110
2.06k
  return manage(res);
7111
2.06k
}
7112
7113
constraint constraint::set_constant_val(val v) const
7114
110
{
7115
110
  auto res = isl_constraint_set_constant_val(copy(), v.release());
7116
110
  return manage(res);
7117
110
}
7118
7119
// implementations for isl::constraint_list
7120
0
constraint_list manage(__isl_take isl_constraint_list *ptr) {
7121
0
  return constraint_list(ptr);
7122
0
}
7123
0
constraint_list manage_copy(__isl_keep isl_constraint_list *ptr) {
7124
0
  ptr = isl_constraint_list_copy(ptr);
7125
0
  return constraint_list(ptr);
7126
0
}
7127
7128
constraint_list::constraint_list()
7129
    : ptr(nullptr) {}
7130
7131
constraint_list::constraint_list(const constraint_list &obj)
7132
    : ptr(nullptr)
7133
{
7134
  ptr = obj.copy();
7135
}
7136
constraint_list::constraint_list(std::nullptr_t)
7137
    : ptr(nullptr) {}
7138
7139
7140
constraint_list::constraint_list(__isl_take isl_constraint_list *ptr)
7141
    : ptr(ptr) {}
7142
7143
7144
0
constraint_list &constraint_list::operator=(constraint_list obj) {
7145
0
  std::swap(this->ptr, obj.ptr);
7146
0
  return *this;
7147
0
}
7148
7149
constraint_list::~constraint_list() {
7150
  if (ptr)
7151
    isl_constraint_list_free(ptr);
7152
}
7153
7154
0
__isl_give isl_constraint_list *constraint_list::copy() const & {
7155
0
  return isl_constraint_list_copy(ptr);
7156
0
}
7157
7158
0
__isl_keep isl_constraint_list *constraint_list::get() const {
7159
0
  return ptr;
7160
0
}
7161
7162
0
__isl_give isl_constraint_list *constraint_list::release() {
7163
0
  isl_constraint_list *tmp = ptr;
7164
0
  ptr = nullptr;
7165
0
  return tmp;
7166
0
}
7167
7168
0
bool constraint_list::is_null() const {
7169
0
  return ptr == nullptr;
7170
0
}
7171
0
constraint_list::operator bool() const {
7172
0
  return !is_null();
7173
0
}
7174
7175
7176
0
ctx constraint_list::get_ctx() const {
7177
0
  return ctx(isl_constraint_list_get_ctx(ptr));
7178
0
}
7179
7180
0
void constraint_list::dump() const {
7181
0
  isl_constraint_list_dump(get());
7182
0
}
7183
7184
7185
constraint_list constraint_list::add(constraint el) const
7186
0
{
7187
0
  auto res = isl_constraint_list_add(copy(), el.release());
7188
0
  return manage(res);
7189
0
}
7190
7191
constraint_list constraint_list::alloc(ctx ctx, int n)
7192
0
{
7193
0
  auto res = isl_constraint_list_alloc(ctx.release(), n);
7194
0
  return manage(res);
7195
0
}
7196
7197
constraint_list constraint_list::concat(constraint_list list2) const
7198
0
{
7199
0
  auto res = isl_constraint_list_concat(copy(), list2.release());
7200
0
  return manage(res);
7201
0
}
7202
7203
constraint_list constraint_list::drop(unsigned int first, unsigned int n) const
7204
0
{
7205
0
  auto res = isl_constraint_list_drop(copy(), first, n);
7206
0
  return manage(res);
7207
0
}
7208
7209
stat constraint_list::foreach(const std::function<stat(constraint)> &fn) const
7210
0
{
7211
0
  struct fn_data {
7212
0
    const std::function<stat(constraint)> *func;
7213
0
  } fn_data = { &fn };
7214
0
  auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
7215
0
    auto *data = static_cast<struct fn_data *>(arg_1);
7216
0
    stat ret = (*data->func)(manage(arg_0));
7217
0
    return ret.release();
7218
0
  };
7219
0
  auto res = isl_constraint_list_foreach(get(), fn_lambda, &fn_data);
7220
0
  return manage(res);
7221
0
}
7222
7223
constraint_list constraint_list::from_constraint(constraint el)
7224
0
{
7225
0
  auto res = isl_constraint_list_from_constraint(el.release());
7226
0
  return manage(res);
7227
0
}
7228
7229
constraint constraint_list::get_at(int index) const
7230
0
{
7231
0
  auto res = isl_constraint_list_get_at(get(), index);
7232
0
  return manage(res);
7233
0
}
7234
7235
constraint constraint_list::get_constraint(int index) const
7236
0
{
7237
0
  auto res = isl_constraint_list_get_constraint(get(), index);
7238
0
  return manage(res);
7239
0
}
7240
7241
constraint_list constraint_list::insert(unsigned int pos, constraint el) const
7242
0
{
7243
0
  auto res = isl_constraint_list_insert(copy(), pos, el.release());
7244
0
  return manage(res);
7245
0
}
7246
7247
int constraint_list::n_constraint() const
7248
0
{
7249
0
  auto res = isl_constraint_list_n_constraint(get());
7250
0
  return res;
7251
0
}
7252
7253
constraint_list constraint_list::reverse() const
7254
0
{
7255
0
  auto res = isl_constraint_list_reverse(copy());
7256
0
  return manage(res);
7257
0
}
7258
7259
constraint_list constraint_list::set_constraint(int index, constraint el) const
7260
0
{
7261
0
  auto res = isl_constraint_list_set_constraint(copy(), index, el.release());
7262
0
  return manage(res);
7263
0
}
7264
7265
int constraint_list::size() const
7266
0
{
7267
0
  auto res = isl_constraint_list_size(get());
7268
0
  return res;
7269
0
}
7270
7271
constraint_list constraint_list::swap(unsigned int pos1, unsigned int pos2) const
7272
0
{
7273
0
  auto res = isl_constraint_list_swap(copy(), pos1, pos2);
7274
0
  return manage(res);
7275
0
}
7276
7277
// implementations for isl::fixed_box
7278
0
fixed_box manage(__isl_take isl_fixed_box *ptr) {
7279
0
  return fixed_box(ptr);
7280
0
}
7281
0
fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
7282
0
  ptr = isl_fixed_box_copy(ptr);
7283
0
  return fixed_box(ptr);
7284
0
}
7285
7286
fixed_box::fixed_box()
7287
    : ptr(nullptr) {}
7288
7289
fixed_box::fixed_box(const fixed_box &obj)
7290
    : ptr(nullptr)
7291
{
7292
  ptr = obj.copy();
7293
}
7294
fixed_box::fixed_box(std::nullptr_t)
7295
    : ptr(nullptr) {}
7296
7297
7298
fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
7299
    : ptr(ptr) {}
7300
7301
7302
0
fixed_box &fixed_box::operator=(fixed_box obj) {
7303
0
  std::swap(this->ptr, obj.ptr);
7304
0
  return *this;
7305
0
}
7306
7307
fixed_box::~fixed_box() {
7308
  if (ptr)
7309
    isl_fixed_box_free(ptr);
7310
}
7311
7312
0
__isl_give isl_fixed_box *fixed_box::copy() const & {
7313
0
  return isl_fixed_box_copy(ptr);
7314
0
}
7315
7316
0
__isl_keep isl_fixed_box *fixed_box::get() const {
7317
0
  return ptr;
7318
0
}
7319
7320
0
__isl_give isl_fixed_box *fixed_box::release() {
7321
0
  isl_fixed_box *tmp = ptr;
7322
0
  ptr = nullptr;
7323
0
  return tmp;
7324
0
}
7325
7326
0
bool fixed_box::is_null() const {
7327
0
  return ptr == nullptr;
7328
0
}
7329
0
fixed_box::operator bool() const {
7330
0
  return !is_null();
7331
0
}
7332
7333
7334
0
ctx fixed_box::get_ctx() const {
7335
0
  return ctx(isl_fixed_box_get_ctx(ptr));
7336
0
}
7337
7338
7339
multi_aff fixed_box::get_offset() const
7340
0
{
7341
0
  auto res = isl_fixed_box_get_offset(get());
7342
0
  return manage(res);
7343
0
}
7344
7345
multi_val fixed_box::get_size() const
7346
0
{
7347
0
  auto res = isl_fixed_box_get_size(get());
7348
0
  return manage(res);
7349
0
}
7350
7351
space fixed_box::get_space() const
7352
0
{
7353
0
  auto res = isl_fixed_box_get_space(get());
7354
0
  return manage(res);
7355
0
}
7356
7357
boolean fixed_box::is_valid() const
7358
0
{
7359
0
  auto res = isl_fixed_box_is_valid(get());
7360
0
  return manage(res);
7361
0
}
7362
7363
// implementations for isl::id
7364
48.8k
id manage(__isl_take isl_id *ptr) {
7365
48.8k
  return id(ptr);
7366
48.8k
}
7367
0
id manage_copy(__isl_keep isl_id *ptr) {
7368
0
  ptr = isl_id_copy(ptr);
7369
0
  return id(ptr);
7370
0
}
7371
7372
id::id()
7373
20.0k
    : ptr(nullptr) {}
7374
7375
id::id(const id &obj)
7376
    : ptr(nullptr)
7377
27.5k
{
7378
27.5k
  ptr = obj.copy();
7379
27.5k
}
7380
id::id(std::nullptr_t)
7381
0
    : ptr(nullptr) {}
7382
7383
7384
id::id(__isl_take isl_id *ptr)
7385
48.8k
    : ptr(ptr) {}
7386
7387
7388
9.23k
id &id::operator=(id obj) {
7389
9.23k
  std::swap(this->ptr, obj.ptr);
7390
9.23k
  return *this;
7391
9.23k
}
7392
7393
96.3k
id::~id() {
7394
96.3k
  if (ptr)
7395
51.6k
    isl_id_free(ptr);
7396
96.3k
}
7397
7398
27.5k
__isl_give isl_id *id::copy() const & {
7399
27.5k
  return isl_id_copy(ptr);
7400
27.5k
}
7401
7402
34.4k
__isl_keep isl_id *id::get() const {
7403
34.4k
  return ptr;
7404
34.4k
}
7405
7406
35.4k
__isl_give isl_id *id::release() {
7407
35.4k
  isl_id *tmp = ptr;
7408
35.4k
  ptr = nullptr;
7409
35.4k
  return tmp;
7410
35.4k
}
7411
7412
539
bool id::is_null() const {
7413
539
  return ptr == nullptr;
7414
539
}
7415
168
id::operator bool() const {
7416
168
  return !is_null();
7417
168
}
7418
7419
7420
10.0k
ctx id::get_ctx() const {
7421
10.0k
  return ctx(isl_id_get_ctx(ptr));
7422
10.0k
}
7423
0
std::string id::to_str() const {
7424
0
  char *Tmp = isl_id_to_str(get());
7425
0
  if (!Tmp)
7426
0
    return "";
7427
0
  std::string S(Tmp);
7428
0
  free(Tmp);
7429
0
  return S;
7430
0
}
7431
7432
7433
0
void id::dump() const {
7434
0
  isl_id_dump(get());
7435
0
}
7436
7437
7438
id id::alloc(ctx ctx, const std::string &name, void * user)
7439
11.9k
{
7440
11.9k
  auto res = isl_id_alloc(ctx.release(), name.c_str(), user);
7441
11.9k
  return manage(res);
7442
11.9k
}
7443
7444
uint32_t id::get_hash() const
7445
0
{
7446
0
  auto res = isl_id_get_hash(get());
7447
0
  return res;
7448
0
}
7449
7450
std::string id::get_name() const
7451
4.02k
{
7452
4.02k
  auto res = isl_id_get_name(get());
7453
4.02k
  std::string tmp(res);
7454
4.02k
  return tmp;
7455
4.02k
}
7456
7457
void * id::get_user() const
7458
29.1k
{
7459
29.1k
  auto res = isl_id_get_user(get());
7460
29.1k
  return res;
7461
29.1k
}
7462
7463
// implementations for isl::id_list
7464
0
id_list manage(__isl_take isl_id_list *ptr) {
7465
0
  return id_list(ptr);
7466
0
}
7467
0
id_list manage_copy(__isl_keep isl_id_list *ptr) {
7468
0
  ptr = isl_id_list_copy(ptr);
7469
0
  return id_list(ptr);
7470
0
}
7471
7472
id_list::id_list()
7473
    : ptr(nullptr) {}
7474
7475
id_list::id_list(const id_list &obj)
7476
    : ptr(nullptr)
7477
{
7478
  ptr = obj.copy();
7479
}
7480
id_list::id_list(std::nullptr_t)
7481
    : ptr(nullptr) {}
7482
7483
7484
id_list::id_list(__isl_take isl_id_list *ptr)
7485
    : ptr(ptr) {}
7486
7487
7488
0
id_list &id_list::operator=(id_list obj) {
7489
0
  std::swap(this->ptr, obj.ptr);
7490
0
  return *this;
7491
0
}
7492
7493
id_list::~id_list() {
7494
  if (ptr)
7495
    isl_id_list_free(ptr);
7496
}
7497
7498
0
__isl_give isl_id_list *id_list::copy() const & {
7499
0
  return isl_id_list_copy(ptr);
7500
0
}
7501
7502
0
__isl_keep isl_id_list *id_list::get() const {
7503
0
  return ptr;
7504
0
}
7505
7506
0
__isl_give isl_id_list *id_list::release() {
7507
0
  isl_id_list *tmp = ptr;
7508
0
  ptr = nullptr;
7509
0
  return tmp;
7510
0
}
7511
7512
0
bool id_list::is_null() const {
7513
0
  return ptr == nullptr;
7514
0
}
7515
0
id_list::operator bool() const {
7516
0
  return !is_null();
7517
0
}
7518
7519
7520
0
ctx id_list::get_ctx() const {
7521
0
  return ctx(isl_id_list_get_ctx(ptr));
7522
0
}
7523
7524
0
void id_list::dump() const {
7525
0
  isl_id_list_dump(get());
7526
0
}
7527
7528
7529
id_list id_list::add(id el) const
7530
0
{
7531
0
  auto res = isl_id_list_add(copy(), el.release());
7532
0
  return manage(res);
7533
0
}
7534
7535
id_list id_list::alloc(ctx ctx, int n)
7536
0
{
7537
0
  auto res = isl_id_list_alloc(ctx.release(), n);
7538
0
  return manage(res);
7539
0
}
7540
7541
id_list id_list::concat(id_list list2) const
7542
0
{
7543
0
  auto res = isl_id_list_concat(copy(), list2.release());
7544
0
  return manage(res);
7545
0
}
7546
7547
id_list id_list::drop(unsigned int first, unsigned int n) const
7548
0
{
7549
0
  auto res = isl_id_list_drop(copy(), first, n);
7550
0
  return manage(res);
7551
0
}
7552
7553
stat id_list::foreach(const std::function<stat(id)> &fn) const
7554
0
{
7555
0
  struct fn_data {
7556
0
    const std::function<stat(id)> *func;
7557
0
  } fn_data = { &fn };
7558
0
  auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
7559
0
    auto *data = static_cast<struct fn_data *>(arg_1);
7560
0
    stat ret = (*data->func)(manage(arg_0));
7561
0
    return ret.release();
7562
0
  };
7563
0
  auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
7564
0
  return manage(res);
7565
0
}
7566
7567
id_list id_list::from_id(id el)
7568
0
{
7569
0
  auto res = isl_id_list_from_id(el.release());
7570
0
  return manage(res);
7571
0
}
7572
7573
id id_list::get_at(int index) const
7574
0
{
7575
0
  auto res = isl_id_list_get_at(get(), index);
7576
0
  return manage(res);
7577
0
}
7578
7579
id id_list::get_id(int index) const
7580
0
{
7581
0
  auto res = isl_id_list_get_id(get(), index);
7582
0
  return manage(res);
7583
0
}
7584
7585
id_list id_list::insert(unsigned int pos, id el) const
7586
0
{
7587
0
  auto res = isl_id_list_insert(copy(), pos, el.release());
7588
0
  return manage(res);
7589
0
}
7590
7591
int id_list::n_id() const
7592
0
{
7593
0
  auto res = isl_id_list_n_id(get());
7594
0
  return res;
7595
0
}
7596
7597
id_list id_list::reverse() const
7598
0
{
7599
0
  auto res = isl_id_list_reverse(copy());
7600
0
  return manage(res);
7601
0
}
7602
7603
id_list id_list::set_id(int index, id el) const
7604
0
{
7605
0
  auto res = isl_id_list_set_id(copy(), index, el.release());
7606
0
  return manage(res);
7607
0
}
7608
7609
int id_list::size() const
7610
0
{
7611
0
  auto res = isl_id_list_size(get());
7612
0
  return res;
7613
0
}
7614
7615
id_list id_list::swap(unsigned int pos1, unsigned int pos2) const
7616
0
{
7617
0
  auto res = isl_id_list_swap(copy(), pos1, pos2);
7618
0
  return manage(res);
7619
0
}
7620
7621
// implementations for isl::id_to_ast_expr
7622
0
id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
7623
0
  return id_to_ast_expr(ptr);
7624
0
}
7625
0
id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
7626
0
  ptr = isl_id_to_ast_expr_copy(ptr);
7627
0
  return id_to_ast_expr(ptr);
7628
0
}
7629
7630
id_to_ast_expr::id_to_ast_expr()
7631
    : ptr(nullptr) {}
7632
7633
id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj)
7634
    : ptr(nullptr)
7635
{
7636
  ptr = obj.copy();
7637
}
7638
id_to_ast_expr::id_to_ast_expr(std::nullptr_t)
7639
    : ptr(nullptr) {}
7640
7641
7642
id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
7643
    : ptr(ptr) {}
7644
7645
7646
0
id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) {
7647
0
  std::swap(this->ptr, obj.ptr);
7648
0
  return *this;
7649
0
}
7650
7651
id_to_ast_expr::~id_to_ast_expr() {
7652
  if (ptr)
7653
    isl_id_to_ast_expr_free(ptr);
7654
}
7655
7656
0
__isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
7657
0
  return isl_id_to_ast_expr_copy(ptr);
7658
0
}
7659
7660
0
__isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
7661
0
  return ptr;
7662
0
}
7663
7664
0
__isl_give isl_id_to_ast_expr *id_to_ast_expr::release() {
7665
0
  isl_id_to_ast_expr *tmp = ptr;
7666
0
  ptr = nullptr;
7667
0
  return tmp;
7668
0
}
7669
7670
0
bool id_to_ast_expr::is_null() const {
7671
0
  return ptr == nullptr;
7672
0
}
7673
0
id_to_ast_expr::operator bool() const {
7674
0
  return !is_null();
7675
0
}
7676
7677
7678
0
ctx id_to_ast_expr::get_ctx() const {
7679
0
  return ctx(isl_id_to_ast_expr_get_ctx(ptr));
7680
0
}
7681
7682
0
void id_to_ast_expr::dump() const {
7683
0
  isl_id_to_ast_expr_dump(get());
7684
0
}
7685
7686
7687
id_to_ast_expr id_to_ast_expr::alloc(ctx ctx, int min_size)
7688
0
{
7689
0
  auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
7690
0
  return manage(res);
7691
0
}
7692
7693
id_to_ast_expr id_to_ast_expr::drop(id key) const
7694
0
{
7695
0
  auto res = isl_id_to_ast_expr_drop(copy(), key.release());
7696
0
  return manage(res);
7697
0
}
7698
7699
stat id_to_ast_expr::foreach(const std::function<stat(id, ast_expr)> &fn) const
7700
0
{
7701
0
  struct fn_data {
7702
0
    const std::function<stat(id, ast_expr)> *func;
7703
0
  } fn_data = { &fn };
7704
0
  auto fn_lambda = [](isl_id *arg_0, isl_ast_expr *arg_1, void *arg_2) -> isl_stat {
7705
0
    auto *data = static_cast<struct fn_data *>(arg_2);
7706
0
    stat ret = (*data->func)(manage(arg_0), manage(arg_1));
7707
0
    return ret.release();
7708
0
  };
7709
0
  auto res = isl_id_to_ast_expr_foreach(get(), fn_lambda, &fn_data);
7710
0
  return manage(res);
7711
0
}
7712
7713
ast_expr id_to_ast_expr::get(id key) const
7714
0
{
7715
0
  auto res = isl_id_to_ast_expr_get(get(), key.release());
7716
0
  return manage(res);
7717
0
}
7718
7719
boolean id_to_ast_expr::has(const id &key) const
7720
0
{
7721
0
  auto res = isl_id_to_ast_expr_has(get(), key.get());
7722
0
  return manage(res);
7723
0
}
7724
7725
id_to_ast_expr id_to_ast_expr::set(id key, ast_expr val) const
7726
0
{
7727
0
  auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
7728
0
  return manage(res);
7729
0
}
7730
7731
// implementations for isl::local_space
7732
0
local_space manage(__isl_take isl_local_space *ptr) {
7733
0
  return local_space(ptr);
7734
0
}
7735
0
local_space manage_copy(__isl_keep isl_local_space *ptr) {
7736
0
  ptr = isl_local_space_copy(ptr);
7737
0
  return local_space(ptr);
7738
0
}
7739
7740
local_space::local_space()
7741
55
    : ptr(nullptr) {}
7742
7743
local_space::local_space(const local_space &obj)
7744
    : ptr(nullptr)
7745
1.92k
{
7746
1.92k
  ptr = obj.copy();
7747
1.92k
}
7748
local_space::local_space(std::nullptr_t)
7749
    : ptr(nullptr) {}
7750
7751
7752
local_space::local_space(__isl_take isl_local_space *ptr)
7753
    : ptr(ptr) {}
7754
7755
local_space::local_space(space dim)
7756
3.84k
{
7757
3.84k
  auto res = isl_local_space_from_space(dim.release());
7758
3.84k
  ptr = res;
7759
3.84k
}
7760
7761
55
local_space &local_space::operator=(local_space obj) {
7762
55
  std::swap(this->ptr, obj.ptr);
7763
55
  return *this;
7764
55
}
7765
7766
5.82k
local_space::~local_space() {
7767
5.82k
  if (ptr)
7768
949
    isl_local_space_free(ptr);
7769
5.82k
}
7770
7771
1.92k
__isl_give isl_local_space *local_space::copy() const & {
7772
1.92k
  return isl_local_space_copy(ptr);
7773
1.92k
}
7774
7775
0
__isl_keep isl_local_space *local_space::get() const {
7776
0
  return ptr;
7777
0
}
7778
7779
4.82k
__isl_give isl_local_space *local_space::release() {
7780
4.82k
  isl_local_space *tmp = ptr;
7781
4.82k
  ptr = nullptr;
7782
4.82k
  return tmp;
7783
4.82k
}
7784
7785
0
bool local_space::is_null() const {
7786
0
  return ptr == nullptr;
7787
0
}
7788
0
local_space::operator bool() const {
7789
0
  return !is_null();
7790
0
}
7791
7792
7793
0
ctx local_space::get_ctx() const {
7794
0
  return ctx(isl_local_space_get_ctx(ptr));
7795
0
}
7796
7797
0
void local_space::dump() const {
7798
0
  isl_local_space_dump(get());
7799
0
}
7800
7801
7802
local_space local_space::add_dims(isl::dim type, unsigned int n) const
7803
0
{
7804
0
  auto res = isl_local_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
7805
0
  return manage(res);
7806
0
}
7807
7808
int local_space::dim(isl::dim type) const
7809
0
{
7810
0
  auto res = isl_local_space_dim(get(), static_cast<enum isl_dim_type>(type));
7811
0
  return res;
7812
0
}
7813
7814
local_space local_space::domain() const
7815
0
{
7816
0
  auto res = isl_local_space_domain(copy());
7817
0
  return manage(res);
7818
0
}
7819
7820
local_space local_space::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
7821
0
{
7822
0
  auto res = isl_local_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7823
0
  return manage(res);
7824
0
}
7825
7826
int local_space::find_dim_by_name(isl::dim type, const std::string &name) const
7827
0
{
7828
0
  auto res = isl_local_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
7829
0
  return res;
7830
0
}
7831
7832
local_space local_space::flatten_domain() const
7833
0
{
7834
0
  auto res = isl_local_space_flatten_domain(copy());
7835
0
  return manage(res);
7836
0
}
7837
7838
local_space local_space::flatten_range() const
7839
0
{
7840
0
  auto res = isl_local_space_flatten_range(copy());
7841
0
  return manage(res);
7842
0
}
7843
7844
local_space local_space::from_domain() const
7845
0
{
7846
0
  auto res = isl_local_space_from_domain(copy());
7847
0
  return manage(res);
7848
0
}
7849
7850
id local_space::get_dim_id(isl::dim type, unsigned int pos) const
7851
0
{
7852
0
  auto res = isl_local_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
7853
0
  return manage(res);
7854
0
}
7855
7856
std::string local_space::get_dim_name(isl::dim type, unsigned int pos) const
7857
0
{
7858
0
  auto res = isl_local_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7859
0
  std::string tmp(res);
7860
0
  return tmp;
7861
0
}
7862
7863
aff local_space::get_div(int pos) const
7864
0
{
7865
0
  auto res = isl_local_space_get_div(get(), pos);
7866
0
  return manage(res);
7867
0
}
7868
7869
space local_space::get_space() const
7870
0
{
7871
0
  auto res = isl_local_space_get_space(get());
7872
0
  return manage(res);
7873
0
}
7874
7875
boolean local_space::has_dim_id(isl::dim type, unsigned int pos) const
7876
0
{
7877
0
  auto res = isl_local_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
7878
0
  return manage(res);
7879
0
}
7880
7881
boolean local_space::has_dim_name(isl::dim type, unsigned int pos) const
7882
0
{
7883
0
  auto res = isl_local_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7884
0
  return manage(res);
7885
0
}
7886
7887
local_space local_space::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
7888
0
{
7889
0
  auto res = isl_local_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7890
0
  return manage(res);
7891
0
}
7892
7893
local_space local_space::intersect(local_space ls2) const
7894
0
{
7895
0
  auto res = isl_local_space_intersect(copy(), ls2.release());
7896
0
  return manage(res);
7897
0
}
7898
7899
boolean local_space::is_equal(const local_space &ls2) const
7900
0
{
7901
0
  auto res = isl_local_space_is_equal(get(), ls2.get());
7902
0
  return manage(res);
7903
0
}
7904
7905
boolean local_space::is_params() const
7906
0
{
7907
0
  auto res = isl_local_space_is_params(get());
7908
0
  return manage(res);
7909
0
}
7910
7911
boolean local_space::is_set() const
7912
0
{
7913
0
  auto res = isl_local_space_is_set(get());
7914
0
  return manage(res);
7915
0
}
7916
7917
local_space local_space::range() const
7918
0
{
7919
0
  auto res = isl_local_space_range(copy());
7920
0
  return manage(res);
7921
0
}
7922
7923
local_space local_space::set_dim_id(isl::dim type, unsigned int pos, id id) const
7924
0
{
7925
0
  auto res = isl_local_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
7926
0
  return manage(res);
7927
0
}
7928
7929
local_space local_space::set_from_params() const
7930
0
{
7931
0
  auto res = isl_local_space_set_from_params(copy());
7932
0
  return manage(res);
7933
0
}
7934
7935
local_space local_space::set_tuple_id(isl::dim type, id id) const
7936
0
{
7937
0
  auto res = isl_local_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
7938
0
  return manage(res);
7939
0
}
7940
7941
local_space local_space::wrap() const
7942
0
{
7943
0
  auto res = isl_local_space_wrap(copy());
7944
0
  return manage(res);
7945
0
}
7946
7947
// implementations for isl::map
7948
102k
map manage(__isl_take isl_map *ptr) {
7949
102k
  return map(ptr);
7950
102k
}
7951
46
map manage_copy(__isl_keep isl_map *ptr) {
7952
46
  ptr = isl_map_copy(ptr);
7953
46
  return map(ptr);
7954
46
}
7955
7956
map::map()
7957
2.32k
    : ptr(nullptr) {}
7958
7959
map::map(const map &obj)
7960
    : ptr(nullptr)
7961
51.0k
{
7962
51.0k
  ptr = obj.copy();
7963
51.0k
}
7964
map::map(std::nullptr_t)
7965
10.2k
    : ptr(nullptr) {}
7966
7967
7968
map::map(__isl_take isl_map *ptr)
7969
102k
    : ptr(ptr) {}
7970
7971
map::map(ctx ctx, const std::string &str)
7972
{
7973
  auto res = isl_map_read_from_str(ctx.release(), str.c_str());
7974
  ptr = res;
7975
}
7976
map::map(basic_map bmap)
7977
480
{
7978
480
  auto res = isl_map_from_basic_map(bmap.release());
7979
480
  ptr = res;
7980
480
}
7981
7982
64.7k
map &map::operator=(map obj) {
7983
64.7k
  std::swap(this->ptr, obj.ptr);
7984
64.7k
  return *this;
7985
64.7k
}
7986
7987
166k
map::~map() {
7988
166k
  if (ptr)
7989
116k
    isl_map_free(ptr);
7990
166k
}
7991
7992
125k
__isl_give isl_map *map::copy() const & {
7993
125k
  return isl_map_copy(ptr);
7994
125k
}
7995
7996
56.7k
__isl_keep isl_map *map::get() const {
7997
56.7k
  return ptr;
7998
56.7k
}
7999
8000
37.0k
__isl_give isl_map *map::release() {
8001
37.0k
  isl_map *tmp = ptr;
8002
37.0k
  ptr = nullptr;
8003
37.0k
  return tmp;
8004
37.0k
}
8005
8006
25.0k
bool map::is_null() const {
8007
25.0k
  return ptr == nullptr;
8008
25.0k
}
8009
538
map::operator bool() const {
8010
538
  return !is_null();
8011
538
}
8012
8013
8014
24
ctx map::get_ctx() const {
8015
24
  return ctx(isl_map_get_ctx(ptr));
8016
24
}
8017
2.94k
std::string map::to_str() const {
8018
2.94k
  char *Tmp = isl_map_to_str(get());
8019
2.94k
  if (!Tmp)
8020
16
    return "";
8021
2.92k
  std::string S(Tmp);
8022
2.92k
  free(Tmp);
8023
2.92k
  return S;
8024
2.92k
}
8025
8026
8027
0
void map::dump() const {
8028
0
  isl_map_dump(get());
8029
0
}
8030
8031
8032
map map::add_constraint(constraint constraint) const
8033
2.36k
{
8034
2.36k
  auto res = isl_map_add_constraint(copy(), constraint.release());
8035
2.36k
  return manage(res);
8036
2.36k
}
8037
8038
map map::add_dims(isl::dim type, unsigned int n) const
8039
49
{
8040
49
  auto res = isl_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
8041
49
  return manage(res);
8042
49
}
8043
8044
basic_map map::affine_hull() const
8045
0
{
8046
0
  auto res = isl_map_affine_hull(copy());
8047
0
  return manage(res);
8048
0
}
8049
8050
map map::align_params(space model) const
8051
48
{
8052
48
  auto res = isl_map_align_params(copy(), model.release());
8053
48
  return manage(res);
8054
48
}
8055
8056
map map::apply_domain(map map2) const
8057
1.15k
{
8058
1.15k
  auto res = isl_map_apply_domain(copy(), map2.release());
8059
1.15k
  return manage(res);
8060
1.15k
}
8061
8062
map map::apply_range(map map2) const
8063
5.79k
{
8064
5.79k
  auto res = isl_map_apply_range(copy(), map2.release());
8065
5.79k
  return manage(res);
8066
5.79k
}
8067
8068
boolean map::can_curry() const
8069
1.07k
{
8070
1.07k
  auto res = isl_map_can_curry(get());
8071
1.07k
  return manage(res);
8072
1.07k
}
8073
8074
boolean map::can_range_curry() const
8075
0
{
8076
0
  auto res = isl_map_can_range_curry(get());
8077
0
  return manage(res);
8078
0
}
8079
8080
boolean map::can_uncurry() const
8081
0
{
8082
0
  auto res = isl_map_can_uncurry(get());
8083
0
  return manage(res);
8084
0
}
8085
8086
boolean map::can_zip() const
8087
0
{
8088
0
  auto res = isl_map_can_zip(get());
8089
0
  return manage(res);
8090
0
}
8091
8092
map map::coalesce() const
8093
3.30k
{
8094
3.30k
  auto res = isl_map_coalesce(copy());
8095
3.30k
  return manage(res);
8096
3.30k
}
8097
8098
map map::complement() const
8099
0
{
8100
0
  auto res = isl_map_complement(copy());
8101
0
  return manage(res);
8102
0
}
8103
8104
basic_map map::convex_hull() const
8105
0
{
8106
0
  auto res = isl_map_convex_hull(copy());
8107
0
  return manage(res);
8108
0
}
8109
8110
map map::curry() const
8111
185
{
8112
185
  auto res = isl_map_curry(copy());
8113
185
  return manage(res);
8114
185
}
8115
8116
set map::deltas() const
8117
61
{
8118
61
  auto res = isl_map_deltas(copy());
8119
61
  return manage(res);
8120
61
}
8121
8122
map map::deltas_map() const
8123
0
{
8124
0
  auto res = isl_map_deltas_map(copy());
8125
0
  return manage(res);
8126
0
}
8127
8128
map map::detect_equalities() const
8129
814
{
8130
814
  auto res = isl_map_detect_equalities(copy());
8131
814
  return manage(res);
8132
814
}
8133
8134
unsigned int map::dim(isl::dim type) const
8135
8.17k
{
8136
8.17k
  auto res = isl_map_dim(get(), static_cast<enum isl_dim_type>(type));
8137
8.17k
  return res;
8138
8.17k
}
8139
8140
pw_aff map::dim_max(int pos) const
8141
99
{
8142
99
  auto res = isl_map_dim_max(copy(), pos);
8143
99
  return manage(res);
8144
99
}
8145
8146
pw_aff map::dim_min(int pos) const
8147
99
{
8148
99
  auto res = isl_map_dim_min(copy(), pos);
8149
99
  return manage(res);
8150
99
}
8151
8152
set map::domain() const
8153
1.50k
{
8154
1.50k
  auto res = isl_map_domain(copy());
8155
1.50k
  return manage(res);
8156
1.50k
}
8157
8158
map map::domain_factor_domain() const
8159
0
{
8160
0
  auto res = isl_map_domain_factor_domain(copy());
8161
0
  return manage(res);
8162
0
}
8163
8164
map map::domain_factor_range() const
8165
0
{
8166
0
  auto res = isl_map_domain_factor_range(copy());
8167
0
  return manage(res);
8168
0
}
8169
8170
boolean map::domain_is_wrapping() const
8171
0
{
8172
0
  auto res = isl_map_domain_is_wrapping(get());
8173
0
  return manage(res);
8174
0
}
8175
8176
map map::domain_map() const
8177
374
{
8178
374
  auto res = isl_map_domain_map(copy());
8179
374
  return manage(res);
8180
374
}
8181
8182
map map::domain_product(map map2) const
8183
0
{
8184
0
  auto res = isl_map_domain_product(copy(), map2.release());
8185
0
  return manage(res);
8186
0
}
8187
8188
map map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8189
0
{
8190
0
  auto res = isl_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8191
0
  return manage(res);
8192
0
}
8193
8194
map map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8195
0
{
8196
0
  auto res = isl_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8197
0
  return manage(res);
8198
0
}
8199
8200
map map::drop_unused_params() const
8201
0
{
8202
0
  auto res = isl_map_drop_unused_params(copy());
8203
0
  return manage(res);
8204
0
}
8205
8206
map map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
8207
0
{
8208
0
  auto res = isl_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
8209
0
  return manage(res);
8210
0
}
8211
8212
map map::empty(space space)
8213
12
{
8214
12
  auto res = isl_map_empty(space.release());
8215
12
  return manage(res);
8216
12
}
8217
8218
map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8219
7.62k
{
8220
7.62k
  auto res = isl_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8221
7.62k
  return manage(res);
8222
7.62k
}
8223
8224
map map::factor_domain() const
8225
132
{
8226
132
  auto res = isl_map_factor_domain(copy());
8227
132
  return manage(res);
8228
132
}
8229
8230
map map::factor_range() const
8231
0
{
8232
0
  auto res = isl_map_factor_range(copy());
8233
0
  return manage(res);
8234
0
}
8235
8236
int map::find_dim_by_id(isl::dim type, const id &id) const
8237
0
{
8238
0
  auto res = isl_map_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
8239
0
  return res;
8240
0
}
8241
8242
int map::find_dim_by_name(isl::dim type, const std::string &name) const
8243
0
{
8244
0
  auto res = isl_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
8245
0
  return res;
8246
0
}
8247
8248
map map::fix_si(isl::dim type, unsigned int pos, int value) const
8249
41
{
8250
41
  auto res = isl_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8251
41
  return manage(res);
8252
41
}
8253
8254
map map::fix_val(isl::dim type, unsigned int pos, val v) const
8255
0
{
8256
0
  auto res = isl_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
8257
0
  return manage(res);
8258
0
}
8259
8260
map map::fixed_power_val(val exp) const
8261
0
{
8262
0
  auto res = isl_map_fixed_power_val(copy(), exp.release());
8263
0
  return manage(res);
8264
0
}
8265
8266
map map::flat_domain_product(map map2) const
8267
0
{
8268
0
  auto res = isl_map_flat_domain_product(copy(), map2.release());
8269
0
  return manage(res);
8270
0
}
8271
8272
map map::flat_product(map map2) const
8273
0
{
8274
0
  auto res = isl_map_flat_product(copy(), map2.release());
8275
0
  return manage(res);
8276
0
}
8277
8278
map map::flat_range_product(map map2) const
8279
3.89k
{
8280
3.89k
  auto res = isl_map_flat_range_product(copy(), map2.release());
8281
3.89k
  return manage(res);
8282
3.89k
}
8283
8284
map map::flatten() const
8285
0
{
8286
0
  auto res = isl_map_flatten(copy());
8287
0
  return manage(res);
8288
0
}
8289
8290
map map::flatten_domain() const
8291
0
{
8292
0
  auto res = isl_map_flatten_domain(copy());
8293
0
  return manage(res);
8294
0
}
8295
8296
map map::flatten_range() const
8297
0
{
8298
0
  auto res = isl_map_flatten_range(copy());
8299
0
  return manage(res);
8300
0
}
8301
8302
map map::floordiv_val(val d) const
8303
2.97k
{
8304
2.97k
  auto res = isl_map_floordiv_val(copy(), d.release());
8305
2.97k
  return manage(res);
8306
2.97k
}
8307
8308
stat map::foreach_basic_map(const std::function<stat(basic_map)> &fn) const
8309
{
8310
  struct fn_data {
8311
    const std::function<stat(basic_map)> *func;
8312
  } fn_data = { &fn };
8313
  auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
8314
    auto *data = static_cast<struct fn_data *>(arg_1);
8315
    stat ret = (*data->func)(manage(arg_0));
8316
    return ret.release();
8317
  };
8318
  auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
8319
  return manage(res);
8320
}
8321
8322
map map::from_aff(aff aff)
8323
4
{
8324
4
  auto res = isl_map_from_aff(aff.release());
8325
4
  return manage(res);
8326
4
}
8327
8328
map map::from_domain(set set)
8329
106
{
8330
106
  auto res = isl_map_from_domain(set.release());
8331
106
  return manage(res);
8332
106
}
8333
8334
map map::from_domain_and_range(set domain, set range)
8335
5.92k
{
8336
5.92k
  auto res = isl_map_from_domain_and_range(domain.release(), range.release());
8337
5.92k
  return manage(res);
8338
5.92k
}
8339
8340
map map::from_multi_aff(multi_aff maff)
8341
962
{
8342
962
  auto res = isl_map_from_multi_aff(maff.release());
8343
962
  return manage(res);
8344
962
}
8345
8346
map map::from_multi_pw_aff(multi_pw_aff mpa)
8347
0
{
8348
0
  auto res = isl_map_from_multi_pw_aff(mpa.release());
8349
0
  return manage(res);
8350
0
}
8351
8352
map map::from_pw_aff(pw_aff pwaff)
8353
3.94k
{
8354
3.94k
  auto res = isl_map_from_pw_aff(pwaff.release());
8355
3.94k
  return manage(res);
8356
3.94k
}
8357
8358
map map::from_pw_multi_aff(pw_multi_aff pma)
8359
0
{
8360
0
  auto res = isl_map_from_pw_multi_aff(pma.release());
8361
0
  return manage(res);
8362
0
}
8363
8364
map map::from_range(set set)
8365
99
{
8366
99
  auto res = isl_map_from_range(set.release());
8367
99
  return manage(res);
8368
99
}
8369
8370
map map::from_union_map(union_map umap)
8371
2.01k
{
8372
2.01k
  auto res = isl_map_from_union_map(umap.release());
8373
2.01k
  return manage(res);
8374
2.01k
}
8375
8376
basic_map_list map::get_basic_map_list() const
8377
216
{
8378
216
  auto res = isl_map_get_basic_map_list(get());
8379
216
  return manage(res);
8380
216
}
8381
8382
id map::get_dim_id(isl::dim type, unsigned int pos) const
8383
0
{
8384
0
  auto res = isl_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8385
0
  return manage(res);
8386
0
}
8387
8388
std::string map::get_dim_name(isl::dim type, unsigned int pos) const
8389
0
{
8390
0
  auto res = isl_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8391
0
  std::string tmp(res);
8392
0
  return tmp;
8393
0
}
8394
8395
uint32_t map::get_hash() const
8396
0
{
8397
0
  auto res = isl_map_get_hash(get());
8398
0
  return res;
8399
0
}
8400
8401
fixed_box map::get_range_simple_fixed_box_hull() const
8402
0
{
8403
0
  auto res = isl_map_get_range_simple_fixed_box_hull(get());
8404
0
  return manage(res);
8405
0
}
8406
8407
space map::get_space() const
8408
13.8k
{
8409
13.8k
  auto res = isl_map_get_space(get());
8410
13.8k
  return manage(res);
8411
13.8k
}
8412
8413
id map::get_tuple_id(isl::dim type) const
8414
27.1k
{
8415
27.1k
  auto res = isl_map_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8416
27.1k
  return manage(res);
8417
27.1k
}
8418
8419
std::string map::get_tuple_name(isl::dim type) const
8420
0
{
8421
0
  auto res = isl_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8422
0
  std::string tmp(res);
8423
0
  return tmp;
8424
0
}
8425
8426
map map::gist(map context) const
8427
0
{
8428
0
  auto res = isl_map_gist(copy(), context.release());
8429
0
  return manage(res);
8430
0
}
8431
8432
map map::gist_basic_map(basic_map context) const
8433
0
{
8434
0
  auto res = isl_map_gist_basic_map(copy(), context.release());
8435
0
  return manage(res);
8436
0
}
8437
8438
map map::gist_domain(set context) const
8439
6.64k
{
8440
6.64k
  auto res = isl_map_gist_domain(copy(), context.release());
8441
6.64k
  return manage(res);
8442
6.64k
}
8443
8444
map map::gist_params(set context) const
8445
4.72k
{
8446
4.72k
  auto res = isl_map_gist_params(copy(), context.release());
8447
4.72k
  return manage(res);
8448
4.72k
}
8449
8450
map map::gist_range(set context) const
8451
0
{
8452
0
  auto res = isl_map_gist_range(copy(), context.release());
8453
0
  return manage(res);
8454
0
}
8455
8456
boolean map::has_dim_id(isl::dim type, unsigned int pos) const
8457
0
{
8458
0
  auto res = isl_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8459
0
  return manage(res);
8460
0
}
8461
8462
boolean map::has_dim_name(isl::dim type, unsigned int pos) const
8463
0
{
8464
0
  auto res = isl_map_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8465
0
  return manage(res);
8466
0
}
8467
8468
boolean map::has_equal_space(const map &map2) const
8469
418
{
8470
418
  auto res = isl_map_has_equal_space(get(), map2.get());
8471
418
  return manage(res);
8472
418
}
8473
8474
boolean map::has_tuple_id(isl::dim type) const
8475
56
{
8476
56
  auto res = isl_map_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8477
56
  return manage(res);
8478
56
}
8479
8480
boolean map::has_tuple_name(isl::dim type) const
8481
{
8482
  auto res = isl_map_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8483
  return manage(res);
8484
}
8485
8486
map map::identity(space dim)
8487
236
{
8488
236
  auto res = isl_map_identity(dim.release());
8489
236
  return manage(res);
8490
236
}
8491
8492
map map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
8493
0
{
8494
0
  auto res = isl_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
8495
0
  return manage(res);
8496
0
}
8497
8498
map map::intersect(map map2) const
8499
95
{
8500
95
  auto res = isl_map_intersect(copy(), map2.release());
8501
95
  return manage(res);
8502
95
}
8503
8504
map map::intersect_domain(set set) const
8505
8.13k
{
8506
8.13k
  auto res = isl_map_intersect_domain(copy(), set.release());
8507
8.13k
  return manage(res);
8508
8.13k
}
8509
8510
map map::intersect_domain_factor_range(map factor) const
8511
0
{
8512
0
  auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
8513
0
  return manage(res);
8514
0
}
8515
8516
map map::intersect_params(set params) const
8517
299
{
8518
299
  auto res = isl_map_intersect_params(copy(), params.release());
8519
299
  return manage(res);
8520
299
}
8521
8522
map map::intersect_range(set set) const
8523
263
{
8524
263
  auto res = isl_map_intersect_range(copy(), set.release());
8525
263
  return manage(res);
8526
263
}
8527
8528
map map::intersect_range_factor_range(map factor) const
8529
0
{
8530
0
  auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
8531
0
  return manage(res);
8532
0
}
8533
8534
boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
8535
486
{
8536
486
  auto res = isl_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
8537
486
  return manage(res);
8538
486
}
8539
8540
boolean map::is_bijective() const
8541
0
{
8542
0
  auto res = isl_map_is_bijective(get());
8543
0
  return manage(res);
8544
0
}
8545
8546
boolean map::is_disjoint(const map &map2) const
8547
0
{
8548
0
  auto res = isl_map_is_disjoint(get(), map2.get());
8549
0
  return manage(res);
8550
0
}
8551
8552
boolean map::is_empty() const
8553
245
{
8554
245
  auto res = isl_map_is_empty(get());
8555
245
  return manage(res);
8556
245
}
8557
8558
boolean map::is_equal(const map &map2) const
8559
411
{
8560
411
  auto res = isl_map_is_equal(get(), map2.get());
8561
411
  return manage(res);
8562
411
}
8563
8564
boolean map::is_identity() const
8565
0
{
8566
0
  auto res = isl_map_is_identity(get());
8567
0
  return manage(res);
8568
0
}
8569
8570
boolean map::is_injective() const
8571
0
{
8572
0
  auto res = isl_map_is_injective(get());
8573
0
  return manage(res);
8574
0
}
8575
8576
boolean map::is_product() const
8577
0
{
8578
0
  auto res = isl_map_is_product(get());
8579
0
  return manage(res);
8580
0
}
8581
8582
boolean map::is_single_valued() const
8583
108
{
8584
108
  auto res = isl_map_is_single_valued(get());
8585
108
  return manage(res);
8586
108
}
8587
8588
boolean map::is_strict_subset(const map &map2) const
8589
0
{
8590
0
  auto res = isl_map_is_strict_subset(get(), map2.get());
8591
0
  return manage(res);
8592
0
}
8593
8594
boolean map::is_subset(const map &map2) const
8595
39
{
8596
39
  auto res = isl_map_is_subset(get(), map2.get());
8597
39
  return manage(res);
8598
39
}
8599
8600
int map::is_translation() const
8601
0
{
8602
0
  auto res = isl_map_is_translation(get());
8603
0
  return res;
8604
0
}
8605
8606
map map::lex_ge(space set_dim)
8607
196
{
8608
196
  auto res = isl_map_lex_ge(set_dim.release());
8609
196
  return manage(res);
8610
196
}
8611
8612
map map::lex_ge_first(space dim, unsigned int n)
8613
0
{
8614
0
  auto res = isl_map_lex_ge_first(dim.release(), n);
8615
0
  return manage(res);
8616
0
}
8617
8618
map map::lex_ge_map(map map2) const
8619
0
{
8620
0
  auto res = isl_map_lex_ge_map(copy(), map2.release());
8621
0
  return manage(res);
8622
0
}
8623
8624
map map::lex_gt(space set_dim)
8625
271
{
8626
271
  auto res = isl_map_lex_gt(set_dim.release());
8627
271
  return manage(res);
8628
271
}
8629
8630
map map::lex_gt_first(space dim, unsigned int n)
8631
0
{
8632
0
  auto res = isl_map_lex_gt_first(dim.release(), n);
8633
0
  return manage(res);
8634
0
}
8635
8636
map map::lex_gt_map(map map2) const
8637
0
{
8638
0
  auto res = isl_map_lex_gt_map(copy(), map2.release());
8639
0
  return manage(res);
8640
0
}
8641
8642
map map::lex_le(space set_dim)
8643
1.91k
{
8644
1.91k
  auto res = isl_map_lex_le(set_dim.release());
8645
1.91k
  return manage(res);
8646
1.91k
}
8647
8648
map map::lex_le_first(space dim, unsigned int n)
8649
0
{
8650
0
  auto res = isl_map_lex_le_first(dim.release(), n);
8651
0
  return manage(res);
8652
0
}
8653
8654
map map::lex_le_map(map map2) const
8655
0
{
8656
0
  auto res = isl_map_lex_le_map(copy(), map2.release());
8657
0
  return manage(res);
8658
0
}
8659
8660
map map::lex_lt(space set_dim)
8661
158
{
8662
158
  auto res = isl_map_lex_lt(set_dim.release());
8663
158
  return manage(res);
8664
158
}
8665
8666
map map::lex_lt_first(space dim, unsigned int n)
8667
0
{
8668
0
  auto res = isl_map_lex_lt_first(dim.release(), n);
8669
0
  return manage(res);
8670
0
}
8671
8672
map map::lex_lt_map(map map2) const
8673
0
{
8674
0
  auto res = isl_map_lex_lt_map(copy(), map2.release());
8675
0
  return manage(res);
8676
0
}
8677
8678
map map::lexmax() const
8679
41
{
8680
41
  auto res = isl_map_lexmax(copy());
8681
41
  return manage(res);
8682
41
}
8683
8684
pw_multi_aff map::lexmax_pw_multi_aff() const
8685
0
{
8686
0
  auto res = isl_map_lexmax_pw_multi_aff(copy());
8687
0
  return manage(res);
8688
0
}
8689
8690
map map::lexmin() const
8691
437
{
8692
437
  auto res = isl_map_lexmin(copy());
8693
437
  return manage(res);
8694
437
}
8695
8696
pw_multi_aff map::lexmin_pw_multi_aff() const
8697
0
{
8698
0
  auto res = isl_map_lexmin_pw_multi_aff(copy());
8699
0
  return manage(res);
8700
0
}
8701
8702
map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
8703
301
{
8704
301
  auto res = isl_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8705
301
  return manage(res);
8706
301
}
8707
8708
map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
8709
153
{
8710
153
  auto res = isl_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);
8711
153
  return manage(res);
8712
153
}
8713
8714
int map::n_basic_map() const
8715
372
{
8716
372
  auto res = isl_map_n_basic_map(get());
8717
372
  return res;
8718
372
}
8719
8720
map map::nat_universe(space dim)
8721
0
{
8722
0
  auto res = isl_map_nat_universe(dim.release());
8723
0
  return manage(res);
8724
0
}
8725
8726
map map::neg() const
8727
0
{
8728
0
  auto res = isl_map_neg(copy());
8729
0
  return manage(res);
8730
0
}
8731
8732
map map::oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8733
0
{
8734
0
  auto res = isl_map_oppose(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8735
0
  return manage(res);
8736
0
}
8737
8738
map map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8739
0
{
8740
0
  auto res = isl_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8741
0
  return manage(res);
8742
0
}
8743
8744
map map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8745
0
{
8746
0
  auto res = isl_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8747
0
  return manage(res);
8748
0
}
8749
8750
map map::order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8751
0
{
8752
0
  auto res = isl_map_order_le(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8753
0
  return manage(res);
8754
0
}
8755
8756
map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8757
47
{
8758
47
  auto res = isl_map_order_lt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8759
47
  return manage(res);
8760
47
}
8761
8762
set map::params() const
8763
0
{
8764
0
  auto res = isl_map_params(copy());
8765
0
  return manage(res);
8766
0
}
8767
8768
val map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
8769
0
{
8770
0
  auto res = isl_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
8771
0
  return manage(res);
8772
0
}
8773
8774
boolean map::plain_is_empty() const
8775
0
{
8776
0
  auto res = isl_map_plain_is_empty(get());
8777
0
  return manage(res);
8778
0
}
8779
8780
boolean map::plain_is_equal(const map &map2) const
8781
0
{
8782
0
  auto res = isl_map_plain_is_equal(get(), map2.get());
8783
0
  return manage(res);
8784
0
}
8785
8786
boolean map::plain_is_injective() const
8787
0
{
8788
0
  auto res = isl_map_plain_is_injective(get());
8789
0
  return manage(res);
8790
0
}
8791
8792
boolean map::plain_is_single_valued() const
8793
0
{
8794
0
  auto res = isl_map_plain_is_single_valued(get());
8795
0
  return manage(res);
8796
0
}
8797
8798
boolean map::plain_is_universe() const
8799
0
{
8800
0
  auto res = isl_map_plain_is_universe(get());
8801
0
  return manage(res);
8802
0
}
8803
8804
basic_map map::plain_unshifted_simple_hull() const
8805
0
{
8806
0
  auto res = isl_map_plain_unshifted_simple_hull(copy());
8807
0
  return manage(res);
8808
0
}
8809
8810
basic_map map::polyhedral_hull() const
8811
0
{
8812
0
  auto res = isl_map_polyhedral_hull(copy());
8813
0
  return manage(res);
8814
0
}
8815
8816
map map::preimage_domain_multi_aff(multi_aff ma) const
8817
0
{
8818
0
  auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
8819
0
  return manage(res);
8820
0
}
8821
8822
map map::preimage_domain_multi_pw_aff(multi_pw_aff mpa) const
8823
0
{
8824
0
  auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
8825
0
  return manage(res);
8826
0
}
8827
8828
map map::preimage_domain_pw_multi_aff(pw_multi_aff pma) const
8829
0
{
8830
0
  auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
8831
0
  return manage(res);
8832
0
}
8833
8834
map map::preimage_range_multi_aff(multi_aff ma) const
8835
0
{
8836
0
  auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
8837
0
  return manage(res);
8838
0
}
8839
8840
map map::preimage_range_pw_multi_aff(pw_multi_aff pma) const
8841
0
{
8842
0
  auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
8843
0
  return manage(res);
8844
0
}
8845
8846
map map::product(map map2) const
8847
16
{
8848
16
  auto res = isl_map_product(copy(), map2.release());
8849
16
  return manage(res);
8850
16
}
8851
8852
map map::project_out(isl::dim type, unsigned int first, unsigned int n) const
8853
1.49k
{
8854
1.49k
  auto res = isl_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
8855
1.49k
  return manage(res);
8856
1.49k
}
8857
8858
set map::range() const
8859
1.63k
{
8860
1.63k
  auto res = isl_map_range(copy());
8861
1.63k
  return manage(res);
8862
1.63k
}
8863
8864
map map::range_curry() const
8865
0
{
8866
0
  auto res = isl_map_range_curry(copy());
8867
0
  return manage(res);
8868
0
}
8869
8870
map map::range_factor_domain() const
8871
0
{
8872
0
  auto res = isl_map_range_factor_domain(copy());
8873
0
  return manage(res);
8874
0
}
8875
8876
map map::range_factor_range() const
8877
0
{
8878
0
  auto res = isl_map_range_factor_range(copy());
8879
0
  return manage(res);
8880
0
}
8881
8882
boolean map::range_is_wrapping() const
8883
0
{
8884
0
  auto res = isl_map_range_is_wrapping(get());
8885
0
  return manage(res);
8886
0
}
8887
8888
map map::range_map() const
8889
468
{
8890
468
  auto res = isl_map_range_map(copy());
8891
468
  return manage(res);
8892
468
}
8893
8894
map map::range_product(map map2) const
8895
242
{
8896
242
  auto res = isl_map_range_product(copy(), map2.release());
8897
242
  return manage(res);
8898
242
}
8899
8900
map map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
8901
0
{
8902
0
  auto res = isl_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8903
0
  return manage(res);
8904
0
}
8905
8906
map map::remove_divs() const
8907
0
{
8908
0
  auto res = isl_map_remove_divs(copy());
8909
0
  return manage(res);
8910
0
}
8911
8912
map map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8913
0
{
8914
0
  auto res = isl_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8915
0
  return manage(res);
8916
0
}
8917
8918
map map::remove_redundancies() const
8919
0
{
8920
0
  auto res = isl_map_remove_redundancies(copy());
8921
0
  return manage(res);
8922
0
}
8923
8924
map map::remove_unknown_divs() const
8925
0
{
8926
0
  auto res = isl_map_remove_unknown_divs(copy());
8927
0
  return manage(res);
8928
0
}
8929
8930
map map::reset_tuple_id(isl::dim type) const
8931
0
{
8932
0
  auto res = isl_map_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
8933
0
  return manage(res);
8934
0
}
8935
8936
map map::reset_user() const
8937
0
{
8938
0
  auto res = isl_map_reset_user(copy());
8939
0
  return manage(res);
8940
0
}
8941
8942
map map::reverse() const
8943
5.68k
{
8944
5.68k
  auto res = isl_map_reverse(copy());
8945
5.68k
  return manage(res);
8946
5.68k
}
8947
8948
basic_map map::sample() const
8949
0
{
8950
0
  auto res = isl_map_sample(copy());
8951
0
  return manage(res);
8952
0
}
8953
8954
map map::set_dim_id(isl::dim type, unsigned int pos, id id) const
8955
0
{
8956
0
  auto res = isl_map_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
8957
0
  return manage(res);
8958
0
}
8959
8960
map map::set_tuple_id(isl::dim type, id id) const
8961
10.1k
{
8962
10.1k
  auto res = isl_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
8963
10.1k
  return manage(res);
8964
10.1k
}
8965
8966
map map::set_tuple_name(isl::dim type, const std::string &s) const
8967
0
{
8968
0
  auto res = isl_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
8969
0
  return manage(res);
8970
0
}
8971
8972
basic_map map::simple_hull() const
8973
0
{
8974
0
  auto res = isl_map_simple_hull(copy());
8975
0
  return manage(res);
8976
0
}
8977
8978
map map::subtract(map map2) const
8979
41
{
8980
41
  auto res = isl_map_subtract(copy(), map2.release());
8981
41
  return manage(res);
8982
41
}
8983
8984
map map::subtract_domain(set dom) const
8985
0
{
8986
0
  auto res = isl_map_subtract_domain(copy(), dom.release());
8987
0
  return manage(res);
8988
0
}
8989
8990
map map::subtract_range(set dom) const
8991
0
{
8992
0
  auto res = isl_map_subtract_range(copy(), dom.release());
8993
0
  return manage(res);
8994
0
}
8995
8996
map map::sum(map map2) const
8997
24
{
8998
24
  auto res = isl_map_sum(copy(), map2.release());
8999
24
  return manage(res);
9000
24
}
9001
9002
map map::uncurry() const
9003
0
{
9004
0
  auto res = isl_map_uncurry(copy());
9005
0
  return manage(res);
9006
0
}
9007
9008
map map::unite(map map2) const
9009
797
{
9010
797
  auto res = isl_map_union(copy(), map2.release());
9011
797
  return manage(res);
9012
797
}
9013
9014
map map::universe(space space)
9015
7.52k
{
9016
7.52k
  auto res = isl_map_universe(space.release());
9017
7.52k
  return manage(res);
9018
7.52k
}
9019
9020
basic_map map::unshifted_simple_hull() const
9021
0
{
9022
0
  auto res = isl_map_unshifted_simple_hull(copy());
9023
0
  return manage(res);
9024
0
}
9025
9026
basic_map map::unshifted_simple_hull_from_map_list(map_list list) const
9027
0
{
9028
0
  auto res = isl_map_unshifted_simple_hull_from_map_list(copy(), list.release());
9029
0
  return manage(res);
9030
0
}
9031
9032
map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
9033
277
{
9034
277
  auto res = isl_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
9035
277
  return manage(res);
9036
277
}
9037
9038
set map::wrap() const
9039
1.17k
{
9040
1.17k
  auto res = isl_map_wrap(copy());
9041
1.17k
  return manage(res);
9042
1.17k
}
9043
9044
map map::zip() const
9045
0
{
9046
0
  auto res = isl_map_zip(copy());
9047
0
  return manage(res);
9048
0
}
9049
9050
// implementations for isl::map_list
9051
4.27k
map_list manage(__isl_take isl_map_list *ptr) {
9052
4.27k
  return map_list(ptr);
9053
4.27k
}
9054
0
map_list manage_copy(__isl_keep isl_map_list *ptr) {
9055
0
  ptr = isl_map_list_copy(ptr);
9056
0
  return map_list(ptr);
9057
0
}
9058
9059
map_list::map_list()
9060
    : ptr(nullptr) {}
9061
9062
map_list::map_list(const map_list &obj)
9063
    : ptr(nullptr)
9064
{
9065
  ptr = obj.copy();
9066
}
9067
map_list::map_list(std::nullptr_t)
9068
    : ptr(nullptr) {}
9069
9070
9071
map_list::map_list(__isl_take isl_map_list *ptr)
9072
4.27k
    : ptr(ptr) {}
9073
9074
9075
0
map_list &map_list::operator=(map_list obj) {
9076
0
  std::swap(this->ptr, obj.ptr);
9077
0
  return *this;
9078
0
}
9079
9080
4.27k
map_list::~map_list() {
9081
4.27k
  if (ptr)
9082
4.25k
    isl_map_list_free(ptr);
9083
4.27k
}
9084
9085
0
__isl_give isl_map_list *map_list::copy() const & {
9086
0
  return isl_map_list_copy(ptr);
9087
0
}
9088
9089
12.0k
__isl_keep isl_map_list *map_list::get() const {
9090
12.0k
  return ptr;
9091
12.0k
}
9092
9093
0
__isl_give isl_map_list *map_list::release() {
9094
0
  isl_map_list *tmp = ptr;
9095
0
  ptr = nullptr;
9096
0
  return tmp;
9097
0
}
9098
9099
0
bool map_list::is_null() const {
9100
0
  return ptr == nullptr;
9101
0
}
9102
0
map_list::operator bool() const {
9103
0
  return !is_null();
9104
0
}
9105
9106
9107
0
ctx map_list::get_ctx() const {
9108
0
  return ctx(isl_map_list_get_ctx(ptr));
9109
0
}
9110
9111
0
void map_list::dump() const {
9112
0
  isl_map_list_dump(get());
9113
0
}
9114
9115
9116
map_list map_list::add(map el) const
9117
0
{
9118
0
  auto res = isl_map_list_add(copy(), el.release());
9119
0
  return manage(res);
9120
0
}
9121
9122
map_list map_list::alloc(ctx ctx, int n)
9123
0
{
9124
0
  auto res = isl_map_list_alloc(ctx.release(), n);
9125
0
  return manage(res);
9126
0
}
9127
9128
map_list map_list::concat(map_list list2) const
9129
0
{
9130
0
  auto res = isl_map_list_concat(copy(), list2.release());
9131
0
  return manage(res);
9132
0
}
9133
9134
map_list map_list::drop(unsigned int first, unsigned int n) const
9135
0
{
9136
0
  auto res = isl_map_list_drop(copy(), first, n);
9137
0
  return manage(res);
9138
0
}
9139
9140
stat map_list::foreach(const std::function<stat(map)> &fn) const
9141
0
{
9142
0
  struct fn_data {
9143
0
    const std::function<stat(map)> *func;
9144
0
  } fn_data = { &fn };
9145
0
  auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
9146
0
    auto *data = static_cast<struct fn_data *>(arg_1);
9147
0
    stat ret = (*data->func)(manage(arg_0));
9148
0
    return ret.release();
9149
0
  };
9150
0
  auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
9151
0
  return manage(res);
9152
0
}
9153
9154
map_list map_list::from_map(map el)
9155
0
{
9156
0
  auto res = isl_map_list_from_map(el.release());
9157
0
  return manage(res);
9158
0
}
9159
9160
map map_list::get_at(int index) const
9161
7.80k
{
9162
7.80k
  auto res = isl_map_list_get_at(get(), index);
9163
7.80k
  return manage(res);
9164
7.80k
}
9165
9166
map map_list::get_map(int index) const
9167
0
{
9168
0
  auto res = isl_map_list_get_map(get(), index);
9169
0
  return manage(res);
9170
0
}
9171
9172
map_list map_list::insert(unsigned int pos, map el) const
9173
0
{
9174
0
  auto res = isl_map_list_insert(copy(), pos, el.release());
9175
0
  return manage(res);
9176
0
}
9177
9178
int map_list::n_map() const
9179
0
{
9180
0
  auto res = isl_map_list_n_map(get());
9181
0
  return res;
9182
0
}
9183
9184
map_list map_list::reverse() const
9185
0
{
9186
0
  auto res = isl_map_list_reverse(copy());
9187
0
  return manage(res);
9188
0
}
9189
9190
map_list map_list::set_map(int index, map el) const
9191
0
{
9192
0
  auto res = isl_map_list_set_map(copy(), index, el.release());
9193
0
  return manage(res);
9194
0
}
9195
9196
int map_list::size() const
9197
4.27k
{
9198
4.27k
  auto res = isl_map_list_size(get());
9199
4.27k
  return res;
9200
4.27k
}
9201
9202
map_list map_list::swap(unsigned int pos1, unsigned int pos2) const
9203
0
{
9204
0
  auto res = isl_map_list_swap(copy(), pos1, pos2);
9205
0
  return manage(res);
9206
0
}
9207
9208
// implementations for isl::mat
9209
0
mat manage(__isl_take isl_mat *ptr) {
9210
0
  return mat(ptr);
9211
0
}
9212
0
mat manage_copy(__isl_keep isl_mat *ptr) {
9213
0
  ptr = isl_mat_copy(ptr);
9214
0
  return mat(ptr);
9215
0
}
9216
9217
mat::mat()
9218
    : ptr(nullptr) {}
9219
9220
mat::mat(const mat &obj)
9221
    : ptr(nullptr)
9222
{
9223
  ptr = obj.copy();
9224
}
9225
mat::mat(std::nullptr_t)
9226
    : ptr(nullptr) {}
9227
9228
9229
mat::mat(__isl_take isl_mat *ptr)
9230
    : ptr(ptr) {}
9231
9232
9233
0
mat &mat::operator=(mat obj) {
9234
0
  std::swap(this->ptr, obj.ptr);
9235
0
  return *this;
9236
0
}
9237
9238
mat::~mat() {
9239
  if (ptr)
9240
    isl_mat_free(ptr);
9241
}
9242
9243
0
__isl_give isl_mat *mat::copy() const & {
9244
0
  return isl_mat_copy(ptr);
9245
0
}
9246
9247
0
__isl_keep isl_mat *mat::get() const {
9248
0
  return ptr;
9249
0
}
9250
9251
0
__isl_give isl_mat *mat::release() {
9252
0
  isl_mat *tmp = ptr;
9253
0
  ptr = nullptr;
9254
0
  return tmp;
9255
0
}
9256
9257
0
bool mat::is_null() const {
9258
0
  return ptr == nullptr;
9259
0
}
9260
0
mat::operator bool() const {
9261
0
  return !is_null();
9262
0
}
9263
9264
9265
0
ctx mat::get_ctx() const {
9266
0
  return ctx(isl_mat_get_ctx(ptr));
9267
0
}
9268
9269
0
void mat::dump() const {
9270
0
  isl_mat_dump(get());
9271
0
}
9272
9273
9274
mat mat::add_rows(unsigned int n) const
9275
0
{
9276
0
  auto res = isl_mat_add_rows(copy(), n);
9277
0
  return manage(res);
9278
0
}
9279
9280
mat mat::add_zero_cols(unsigned int n) const
9281
0
{
9282
0
  auto res = isl_mat_add_zero_cols(copy(), n);
9283
0
  return manage(res);
9284
0
}
9285
9286
mat mat::add_zero_rows(unsigned int n) const
9287
0
{
9288
0
  auto res = isl_mat_add_zero_rows(copy(), n);
9289
0
  return manage(res);
9290
0
}
9291
9292
mat mat::aff_direct_sum(mat right) const
9293
0
{
9294
0
  auto res = isl_mat_aff_direct_sum(copy(), right.release());
9295
0
  return manage(res);
9296
0
}
9297
9298
mat mat::alloc(ctx ctx, unsigned int n_row, unsigned int n_col)
9299
0
{
9300
0
  auto res = isl_mat_alloc(ctx.release(), n_row, n_col);
9301
0
  return manage(res);
9302
0
}
9303
9304
int mat::cols() const
9305
0
{
9306
0
  auto res = isl_mat_cols(get());
9307
0
  return res;
9308
0
}
9309
9310
mat mat::concat(mat bot) const
9311
0
{
9312
0
  auto res = isl_mat_concat(copy(), bot.release());
9313
0
  return manage(res);
9314
0
}
9315
9316
mat mat::diagonal(mat mat2) const
9317
0
{
9318
0
  auto res = isl_mat_diagonal(copy(), mat2.release());
9319
0
  return manage(res);
9320
0
}
9321
9322
mat mat::drop_cols(unsigned int col, unsigned int n) const
9323
0
{
9324
0
  auto res = isl_mat_drop_cols(copy(), col, n);
9325
0
  return manage(res);
9326
0
}
9327
9328
mat mat::drop_rows(unsigned int row, unsigned int n) const
9329
0
{
9330
0
  auto res = isl_mat_drop_rows(copy(), row, n);
9331
0
  return manage(res);
9332
0
}
9333
9334
mat mat::from_row_vec(vec vec)
9335
0
{
9336
0
  auto res = isl_mat_from_row_vec(vec.release());
9337
0
  return manage(res);
9338
0
}
9339
9340
val mat::get_element_val(int row, int col) const
9341
0
{
9342
0
  auto res = isl_mat_get_element_val(get(), row, col);
9343
0
  return manage(res);
9344
0
}
9345
9346
boolean mat::has_linearly_independent_rows(const mat &mat2) const
9347
0
{
9348
0
  auto res = isl_mat_has_linearly_independent_rows(get(), mat2.get());
9349
0
  return manage(res);
9350
0
}
9351
9352
int mat::initial_non_zero_cols() const
9353
0
{
9354
0
  auto res = isl_mat_initial_non_zero_cols(get());
9355
0
  return res;
9356
0
}
9357
9358
mat mat::insert_cols(unsigned int col, unsigned int n) const
9359
0
{
9360
0
  auto res = isl_mat_insert_cols(copy(), col, n);
9361
0
  return manage(res);
9362
0
}
9363
9364
mat mat::insert_rows(unsigned int row, unsigned int n) const
9365
0
{
9366
0
  auto res = isl_mat_insert_rows(copy(), row, n);
9367
0
  return manage(res);
9368
0
}
9369
9370
mat mat::insert_zero_cols(unsigned int first, unsigned int n) const
9371
0
{
9372
0
  auto res = isl_mat_insert_zero_cols(copy(), first, n);
9373
0
  return manage(res);
9374
0
}
9375
9376
mat mat::insert_zero_rows(unsigned int row, unsigned int n) const
9377
0
{
9378
0
  auto res = isl_mat_insert_zero_rows(copy(), row, n);
9379
0
  return manage(res);
9380
0
}
9381
9382
mat mat::inverse_product(mat right) const
9383
0
{
9384
0
  auto res = isl_mat_inverse_product(copy(), right.release());
9385
0
  return manage(res);
9386
0
}
9387
9388
boolean mat::is_equal(const mat &mat2) const
9389
0
{
9390
0
  auto res = isl_mat_is_equal(get(), mat2.get());
9391
0
  return manage(res);
9392
0
}
9393
9394
mat mat::lin_to_aff() const
9395
0
{
9396
0
  auto res = isl_mat_lin_to_aff(copy());
9397
0
  return manage(res);
9398
0
}
9399
9400
mat mat::move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const
9401
0
{
9402
0
  auto res = isl_mat_move_cols(copy(), dst_col, src_col, n);
9403
0
  return manage(res);
9404
0
}
9405
9406
mat mat::normalize() const
9407
0
{
9408
0
  auto res = isl_mat_normalize(copy());
9409
0
  return manage(res);
9410
0
}
9411
9412
mat mat::normalize_row(int row) const
9413
0
{
9414
0
  auto res = isl_mat_normalize_row(copy(), row);
9415
0
  return manage(res);
9416
0
}
9417
9418
mat mat::product(mat right) const
9419
0
{
9420
0
  auto res = isl_mat_product(copy(), right.release());
9421
0
  return manage(res);
9422
0
}
9423
9424
int mat::rank() const
9425
0
{
9426
0
  auto res = isl_mat_rank(get());
9427
0
  return res;
9428
0
}
9429
9430
mat mat::right_inverse() const
9431
0
{
9432
0
  auto res = isl_mat_right_inverse(copy());
9433
0
  return manage(res);
9434
0
}
9435
9436
mat mat::right_kernel() const
9437
0
{
9438
0
  auto res = isl_mat_right_kernel(copy());
9439
0
  return manage(res);
9440
0
}
9441
9442
mat mat::row_basis() const
9443
0
{
9444
0
  auto res = isl_mat_row_basis(copy());
9445
0
  return manage(res);
9446
0
}
9447
9448
mat mat::row_basis_extension(mat mat2) const
9449
0
{
9450
0
  auto res = isl_mat_row_basis_extension(copy(), mat2.release());
9451
0
  return manage(res);
9452
0
}
9453
9454
int mat::rows() const
9455
0
{
9456
0
  auto res = isl_mat_rows(get());
9457
0
  return res;
9458
0
}
9459
9460
mat mat::set_element_si(int row, int col, int v) const
9461
0
{
9462
0
  auto res = isl_mat_set_element_si(copy(), row, col, v);
9463
0
  return manage(res);
9464
0
}
9465
9466
mat mat::set_element_val(int row, int col, val v) const
9467
0
{
9468
0
  auto res = isl_mat_set_element_val(copy(), row, col, v.release());
9469
0
  return manage(res);
9470
0
}
9471
9472
mat mat::swap_cols(unsigned int i, unsigned int j) const
9473
0
{
9474
0
  auto res = isl_mat_swap_cols(copy(), i, j);
9475
0
  return manage(res);
9476
0
}
9477
9478
mat mat::swap_rows(unsigned int i, unsigned int j) const
9479
0
{
9480
0
  auto res = isl_mat_swap_rows(copy(), i, j);
9481
0
  return manage(res);
9482
0
}
9483
9484
mat mat::transpose() const
9485
0
{
9486
0
  auto res = isl_mat_transpose(copy());
9487
0
  return manage(res);
9488
0
}
9489
9490
mat mat::unimodular_complete(int row) const
9491
0
{
9492
0
  auto res = isl_mat_unimodular_complete(copy(), row);
9493
0
  return manage(res);
9494
0
}
9495
9496
mat mat::vec_concat(vec bot) const
9497
0
{
9498
0
  auto res = isl_mat_vec_concat(copy(), bot.release());
9499
0
  return manage(res);
9500
0
}
9501
9502
vec mat::vec_inverse_product(vec vec) const
9503
0
{
9504
0
  auto res = isl_mat_vec_inverse_product(copy(), vec.release());
9505
0
  return manage(res);
9506
0
}
9507
9508
vec mat::vec_product(vec vec) const
9509
0
{
9510
0
  auto res = isl_mat_vec_product(copy(), vec.release());
9511
0
  return manage(res);
9512
0
}
9513
9514
// implementations for isl::multi_aff
9515
1.94k
multi_aff manage(__isl_take isl_multi_aff *ptr) {
9516
1.94k
  return multi_aff(ptr);
9517
1.94k
}
9518
0
multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
9519
0
  ptr = isl_multi_aff_copy(ptr);
9520
0
  return multi_aff(ptr);
9521
0
}
9522
9523
multi_aff::multi_aff()
9524
    : ptr(nullptr) {}
9525
9526
multi_aff::multi_aff(const multi_aff &obj)
9527
    : ptr(nullptr)
9528
996
{
9529
996
  ptr = obj.copy();
9530
996
}
9531
multi_aff::multi_aff(std::nullptr_t)
9532
    : ptr(nullptr) {}
9533
9534
9535
multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
9536
1.94k
    : ptr(ptr) {}
9537
9538
multi_aff::multi_aff(aff aff)
9539
{
9540
  auto res = isl_multi_aff_from_aff(aff.release());
9541
  ptr = res;
9542
}
9543
multi_aff::multi_aff(ctx ctx, const std::string &str)
9544
{
9545
  auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
9546
  ptr = res;
9547
}
9548
9549
34
multi_aff &multi_aff::operator=(multi_aff obj) {
9550
34
  std::swap(this->ptr, obj.ptr);
9551
34
  return *this;
9552
34
}
9553
9554
2.94k
multi_aff::~multi_aff() {
9555
2.94k
  if (ptr)
9556
1.94k
    isl_multi_aff_free(ptr);
9557
2.94k
}
9558
9559
1.97k
__isl_give isl_multi_aff *multi_aff::copy() const & {
9560
1.97k
  return isl_multi_aff_copy(ptr);
9561
1.97k
}
9562
9563
949
__isl_keep isl_multi_aff *multi_aff::get() const {
9564
949
  return ptr;
9565
949
}
9566
9567
996
__isl_give isl_multi_aff *multi_aff::release() {
9568
996
  isl_multi_aff *tmp = ptr;
9569
996
  ptr = nullptr;
9570
996
  return tmp;
9571
996
}
9572
9573
0
bool multi_aff::is_null() const {
9574
0
  return ptr == nullptr;
9575
0
}
9576
0
multi_aff::operator bool() const {
9577
0
  return !is_null();
9578
0
}
9579
9580
9581
0
ctx multi_aff::get_ctx() const {
9582
0
  return ctx(isl_multi_aff_get_ctx(ptr));
9583
0
}
9584
0
std::string multi_aff::to_str() const {
9585
0
  char *Tmp = isl_multi_aff_to_str(get());
9586
0
  if (!Tmp)
9587
0
    return "";
9588
0
  std::string S(Tmp);
9589
0
  free(Tmp);
9590
0
  return S;
9591
0
}
9592
9593
9594
0
void multi_aff::dump() const {
9595
0
  isl_multi_aff_dump(get());
9596
0
}
9597
9598
9599
multi_aff multi_aff::add(multi_aff multi2) const
9600
0
{
9601
0
  auto res = isl_multi_aff_add(copy(), multi2.release());
9602
0
  return manage(res);
9603
0
}
9604
9605
multi_aff multi_aff::add_dims(isl::dim type, unsigned int n) const
9606
0
{
9607
0
  auto res = isl_multi_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
9608
0
  return manage(res);
9609
0
}
9610
9611
multi_aff multi_aff::align_params(space model) const
9612
0
{
9613
0
  auto res = isl_multi_aff_align_params(copy(), model.release());
9614
0
  return manage(res);
9615
0
}
9616
9617
unsigned int multi_aff::dim(isl::dim type) const
9618
0
{
9619
0
  auto res = isl_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
9620
0
  return res;
9621
0
}
9622
9623
multi_aff multi_aff::domain_map(space space)
9624
0
{
9625
0
  auto res = isl_multi_aff_domain_map(space.release());
9626
0
  return manage(res);
9627
0
}
9628
9629
multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
9630
0
{
9631
0
  auto res = isl_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9632
0
  return manage(res);
9633
0
}
9634
9635
multi_aff multi_aff::factor_range() const
9636
0
{
9637
0
  auto res = isl_multi_aff_factor_range(copy());
9638
0
  return manage(res);
9639
0
}
9640
9641
int multi_aff::find_dim_by_id(isl::dim type, const id &id) const
9642
0
{
9643
0
  auto res = isl_multi_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
9644
0
  return res;
9645
0
}
9646
9647
int multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
9648
0
{
9649
0
  auto res = isl_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
9650
0
  return res;
9651
0
}
9652
9653
multi_aff multi_aff::flat_range_product(multi_aff multi2) const
9654
0
{
9655
0
  auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
9656
0
  return manage(res);
9657
0
}
9658
9659
multi_aff multi_aff::flatten_domain() const
9660
0
{
9661
0
  auto res = isl_multi_aff_flatten_domain(copy());
9662
0
  return manage(res);
9663
0
}
9664
9665
multi_aff multi_aff::flatten_range() const
9666
0
{
9667
0
  auto res = isl_multi_aff_flatten_range(copy());
9668
0
  return manage(res);
9669
0
}
9670
9671
multi_aff multi_aff::floor() const
9672
0
{
9673
0
  auto res = isl_multi_aff_floor(copy());
9674
0
  return manage(res);
9675
0
}
9676
9677
multi_aff multi_aff::from_aff_list(space space, aff_list list)
9678
0
{
9679
0
  auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
9680
0
  return manage(res);
9681
0
}
9682
9683
multi_aff multi_aff::from_range() const
9684
0
{
9685
0
  auto res = isl_multi_aff_from_range(copy());
9686
0
  return manage(res);
9687
0
}
9688
9689
aff multi_aff::get_aff(int pos) const
9690
949
{
9691
949
  auto res = isl_multi_aff_get_aff(get(), pos);
9692
949
  return manage(res);
9693
949
}
9694
9695
id multi_aff::get_dim_id(isl::dim type, unsigned int pos) const
9696
0
{
9697
0
  auto res = isl_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
9698
0
  return manage(res);
9699
0
}
9700
9701
space multi_aff::get_domain_space() const
9702
0
{
9703
0
  auto res = isl_multi_aff_get_domain_space(get());
9704
0
  return manage(res);
9705
0
}
9706
9707
space multi_aff::get_space() const
9708
0
{
9709
0
  auto res = isl_multi_aff_get_space(get());
9710
0
  return manage(res);
9711
0
}
9712
9713
id multi_aff::get_tuple_id(isl::dim type) const
9714
0
{
9715
0
  auto res = isl_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9716
0
  return manage(res);
9717
0
}
9718
9719
std::string multi_aff::get_tuple_name(isl::dim type) const
9720
0
{
9721
0
  auto res = isl_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
9722
0
  std::string tmp(res);
9723
0
  return tmp;
9724
0
}
9725
9726
multi_aff multi_aff::gist(set context) const
9727
0
{
9728
0
  auto res = isl_multi_aff_gist(copy(), context.release());
9729
0
  return manage(res);
9730
0
}
9731
9732
multi_aff multi_aff::gist_params(set context) const
9733
0
{
9734
0
  auto res = isl_multi_aff_gist_params(copy(), context.release());
9735
0
  return manage(res);
9736
0
}
9737
9738
boolean multi_aff::has_tuple_id(isl::dim type) const
9739
0
{
9740
0
  auto res = isl_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9741
0
  return manage(res);
9742
0
}
9743
9744
multi_aff multi_aff::identity(space space)
9745
962
{
9746
962
  auto res = isl_multi_aff_identity(space.release());
9747
962
  return manage(res);
9748
962
}
9749
9750
multi_aff multi_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
9751
0
{
9752
0
  auto res = isl_multi_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9753
0
  return manage(res);
9754
0
}
9755
9756
boolean multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
9757
0
{
9758
0
  auto res = isl_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
9759
0
  return manage(res);
9760
0
}
9761
9762
boolean multi_aff::involves_nan() const
9763
0
{
9764
0
  auto res = isl_multi_aff_involves_nan(get());
9765
0
  return manage(res);
9766
0
}
9767
9768
set multi_aff::lex_ge_set(multi_aff ma2) const
9769
0
{
9770
0
  auto res = isl_multi_aff_lex_ge_set(copy(), ma2.release());
9771
0
  return manage(res);
9772
0
}
9773
9774
set multi_aff::lex_gt_set(multi_aff ma2) const
9775
0
{
9776
0
  auto res = isl_multi_aff_lex_gt_set(copy(), ma2.release());
9777
0
  return manage(res);
9778
0
}
9779
9780
set multi_aff::lex_le_set(multi_aff ma2) const
9781
0
{
9782
0
  auto res = isl_multi_aff_lex_le_set(copy(), ma2.release());
9783
0
  return manage(res);
9784
0
}
9785
9786
set multi_aff::lex_lt_set(multi_aff ma2) const
9787
0
{
9788
0
  auto res = isl_multi_aff_lex_lt_set(copy(), ma2.release());
9789
0
  return manage(res);
9790
0
}
9791
9792
multi_aff multi_aff::mod_multi_val(multi_val mv) const
9793
0
{
9794
0
  auto res = isl_multi_aff_mod_multi_val(copy(), mv.release());
9795
0
  return manage(res);
9796
0
}
9797
9798
multi_aff multi_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
9799
0
{
9800
0
  auto res = isl_multi_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);
9801
0
  return manage(res);
9802
0
}
9803
9804
multi_aff multi_aff::multi_val_on_space(space space, multi_val mv)
9805
0
{
9806
0
  auto res = isl_multi_aff_multi_val_on_space(space.release(), mv.release());
9807
0
  return manage(res);
9808
0
}
9809
9810
multi_aff multi_aff::neg() const
9811
0
{
9812
0
  auto res = isl_multi_aff_neg(copy());
9813
0
  return manage(res);
9814
0
}
9815
9816
int multi_aff::plain_cmp(const multi_aff &multi2) const
9817
0
{
9818
0
  auto res = isl_multi_aff_plain_cmp(get(), multi2.get());
9819
0
  return res;
9820
0
}
9821
9822
boolean multi_aff::plain_is_equal(const multi_aff &multi2) const
9823
0
{
9824
0
  auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
9825
0
  return manage(res);
9826
0
}
9827
9828
multi_aff multi_aff::product(multi_aff multi2) const
9829
0
{
9830
0
  auto res = isl_multi_aff_product(copy(), multi2.release());
9831
0
  return manage(res);
9832
0
}
9833
9834
multi_aff multi_aff::project_domain_on_params() const
9835
0
{
9836
0
  auto res = isl_multi_aff_project_domain_on_params(copy());
9837
0
  return manage(res);
9838
0
}
9839
9840
multi_aff multi_aff::project_out_map(space space, isl::dim type, unsigned int first, unsigned int n)
9841
0
{
9842
0
  auto res = isl_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
9843
0
  return manage(res);
9844
0
}
9845
9846
multi_aff multi_aff::pullback(multi_aff ma2) const
9847
0
{
9848
0
  auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
9849
0
  return manage(res);
9850
0
}
9851
9852
multi_aff multi_aff::range_factor_domain() const
9853
0
{
9854
0
  auto res = isl_multi_aff_range_factor_domain(copy());
9855
0
  return manage(res);
9856
0
}
9857
9858
multi_aff multi_aff::range_factor_range() const
9859
0
{
9860
0
  auto res = isl_multi_aff_range_factor_range(copy());
9861
0
  return manage(res);
9862
0
}
9863
9864
boolean multi_aff::range_is_wrapping() const
9865
0
{
9866
0
  auto res = isl_multi_aff_range_is_wrapping(get());
9867
0
  return manage(res);
9868
0
}
9869
9870
multi_aff multi_aff::range_map(space space)
9871
0
{
9872
0
  auto res = isl_multi_aff_range_map(space.release());
9873
0
  return manage(res);
9874
0
}
9875
9876
multi_aff multi_aff::range_product(multi_aff multi2) const
9877
0
{
9878
0
  auto res = isl_multi_aff_range_product(copy(), multi2.release());
9879
0
  return manage(res);
9880
0
}
9881
9882
multi_aff multi_aff::range_splice(unsigned int pos, multi_aff multi2) const
9883
0
{
9884
0
  auto res = isl_multi_aff_range_splice(copy(), pos, multi2.release());
9885
0
  return manage(res);
9886
0
}
9887
9888
multi_aff multi_aff::reset_tuple_id(isl::dim type) const
9889
0
{
9890
0
  auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
9891
0
  return manage(res);
9892
0
}
9893
9894
multi_aff multi_aff::reset_user() const
9895
0
{
9896
0
  auto res = isl_multi_aff_reset_user(copy());
9897
0
  return manage(res);
9898
0
}
9899
9900
multi_aff multi_aff::scale_down_multi_val(multi_val mv) const
9901
0
{
9902
0
  auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
9903
0
  return manage(res);
9904
0
}
9905
9906
multi_aff multi_aff::scale_down_val(val v) const
9907
0
{
9908
0
  auto res = isl_multi_aff_scale_down_val(copy(), v.release());
9909
0
  return manage(res);
9910
0
}
9911
9912
multi_aff multi_aff::scale_multi_val(multi_val mv) const
9913
0
{
9914
0
  auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
9915
0
  return manage(res);
9916
0
}
9917
9918
multi_aff multi_aff::scale_val(val v) const
9919
0
{
9920
0
  auto res = isl_multi_aff_scale_val(copy(), v.release());
9921
0
  return manage(res);
9922
0
}
9923
9924
multi_aff multi_aff::set_aff(int pos, aff el) const
9925
983
{
9926
983
  auto res = isl_multi_aff_set_aff(copy(), pos, el.release());
9927
983
  return manage(res);
9928
983
}
9929
9930
multi_aff multi_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
9931
0
{
9932
0
  auto res = isl_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
9933
0
  return manage(res);
9934
0
}
9935
9936
multi_aff multi_aff::set_tuple_id(isl::dim type, id id) const
9937
0
{
9938
0
  auto res = isl_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
9939
0
  return manage(res);
9940
0
}
9941
9942
multi_aff multi_aff::set_tuple_name(isl::dim type, const std::string &s) const
9943
0
{
9944
0
  auto res = isl_multi_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
9945
0
  return manage(res);
9946
0
}
9947
9948
multi_aff multi_aff::splice(unsigned int in_pos, unsigned int out_pos, multi_aff multi2) const
9949
0
{
9950
0
  auto res = isl_multi_aff_splice(copy(), in_pos, out_pos, multi2.release());
9951
0
  return manage(res);
9952
0
}
9953
9954
multi_aff multi_aff::sub(multi_aff multi2) const
9955
0
{
9956
0
  auto res = isl_multi_aff_sub(copy(), multi2.release());
9957
0
  return manage(res);
9958
0
}
9959
9960
multi_aff multi_aff::zero(space space)
9961
0
{
9962
0
  auto res = isl_multi_aff_zero(space.release());
9963
0
  return manage(res);
9964
0
}
9965
9966
// implementations for isl::multi_pw_aff
9967
0
multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
9968
0
  return multi_pw_aff(ptr);
9969
0
}
9970
0
multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
9971
0
  ptr = isl_multi_pw_aff_copy(ptr);
9972
0
  return multi_pw_aff(ptr);
9973
0
}
9974
9975
multi_pw_aff::multi_pw_aff()
9976
    : ptr(nullptr) {}
9977
9978
multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
9979
    : ptr(nullptr)
9980
{
9981
  ptr = obj.copy();
9982
}
9983
multi_pw_aff::multi_pw_aff(std::nullptr_t)
9984
    : ptr(nullptr) {}
9985
9986
9987
multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
9988
    : ptr(ptr) {}
9989
9990
multi_pw_aff::multi_pw_aff(multi_aff ma)
9991
{
9992
  auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
9993
  ptr = res;
9994
}
9995
multi_pw_aff::multi_pw_aff(pw_aff pa)
9996
{
9997
  auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
9998
  ptr = res;
9999
}
10000
multi_pw_aff::multi_pw_aff(pw_multi_aff pma)
10001
1
{
10002
1
  auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
10003
1
  ptr = res;
10004
1
}
10005
multi_pw_aff::multi_pw_aff(ctx ctx, const std::string &str)
10006
{
10007
  auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
10008
  ptr = res;
10009
}
10010
10011
0
multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
10012
0
  std::swap(this->ptr, obj.ptr);
10013
0
  return *this;
10014
0
}
10015
10016
1
multi_pw_aff::~multi_pw_aff() {
10017
1
  if (ptr)
10018
1
    isl_multi_pw_aff_free(ptr);
10019
1
}
10020
10021
0
__isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
10022
0
  return isl_multi_pw_aff_copy(ptr);
10023
0
}
10024
10025
2
__isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
10026
2
  return ptr;
10027
2
}
10028
10029
0
__isl_give isl_multi_pw_aff *multi_pw_aff::release() {
10030
0
  isl_multi_pw_aff *tmp = ptr;
10031
0
  ptr = nullptr;
10032
0
  return tmp;
10033
0
}
10034
10035
0
bool multi_pw_aff::is_null() const {
10036
0
  return ptr == nullptr;
10037
0
}
10038
0
multi_pw_aff::operator bool() const {
10039
0
  return !is_null();
10040
0
}
10041
10042
10043
0
ctx multi_pw_aff::get_ctx() const {
10044
0
  return ctx(isl_multi_pw_aff_get_ctx(ptr));
10045
0
}
10046
0
std::string multi_pw_aff::to_str() const {
10047
0
  char *Tmp = isl_multi_pw_aff_to_str(get());
10048
0
  if (!Tmp)
10049
0
    return "";
10050
0
  std::string S(Tmp);
10051
0
  free(Tmp);
10052
0
  return S;
10053
0
}
10054
10055
10056
0
void multi_pw_aff::dump() const {
10057
0
  isl_multi_pw_aff_dump(get());
10058
0
}
10059
10060
10061
multi_pw_aff multi_pw_aff::add(multi_pw_aff multi2) const
10062
0
{
10063
0
  auto res = isl_multi_pw_aff_add(copy(), multi2.release());
10064
0
  return manage(res);
10065
0
}
10066
10067
multi_pw_aff multi_pw_aff::add_dims(isl::dim type, unsigned int n) const
10068
0
{
10069
0
  auto res = isl_multi_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10070
0
  return manage(res);
10071
0
}
10072
10073
multi_pw_aff multi_pw_aff::align_params(space model) const
10074
0
{
10075
0
  auto res = isl_multi_pw_aff_align_params(copy(), model.release());
10076
0
  return manage(res);
10077
0
}
10078
10079
multi_pw_aff multi_pw_aff::coalesce() const
10080
0
{
10081
0
  auto res = isl_multi_pw_aff_coalesce(copy());
10082
0
  return manage(res);
10083
0
}
10084
10085
unsigned int multi_pw_aff::dim(isl::dim type) const
10086
1
{
10087
1
  auto res = isl_multi_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
10088
1
  return res;
10089
1
}
10090
10091
set multi_pw_aff::domain() const
10092
0
{
10093
0
  auto res = isl_multi_pw_aff_domain(copy());
10094
0
  return manage(res);
10095
0
}
10096
10097
multi_pw_aff multi_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
10098
0
{
10099
0
  auto res = isl_multi_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10100
0
  return manage(res);
10101
0
}
10102
10103
map multi_pw_aff::eq_map(multi_pw_aff mpa2) const
10104
0
{
10105
0
  auto res = isl_multi_pw_aff_eq_map(copy(), mpa2.release());
10106
0
  return manage(res);
10107
0
}
10108
10109
multi_pw_aff multi_pw_aff::factor_range() const
10110
0
{
10111
0
  auto res = isl_multi_pw_aff_factor_range(copy());
10112
0
  return manage(res);
10113
0
}
10114
10115
int multi_pw_aff::find_dim_by_id(isl::dim type, const id &id) const
10116
0
{
10117
0
  auto res = isl_multi_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
10118
0
  return res;
10119
0
}
10120
10121
int multi_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
10122
0
{
10123
0
  auto res = isl_multi_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10124
0
  return res;
10125
0
}
10126
10127
multi_pw_aff multi_pw_aff::flat_range_product(multi_pw_aff multi2) const
10128
0
{
10129
0
  auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
10130
0
  return manage(res);
10131
0
}
10132
10133
multi_pw_aff multi_pw_aff::flatten_range() const
10134
0
{
10135
0
  auto res = isl_multi_pw_aff_flatten_range(copy());
10136
0
  return manage(res);
10137
0
}
10138
10139
multi_pw_aff multi_pw_aff::from_pw_aff_list(space space, pw_aff_list list)
10140
0
{
10141
0
  auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
10142
0
  return manage(res);
10143
0
}
10144
10145
multi_pw_aff multi_pw_aff::from_range() const
10146
0
{
10147
0
  auto res = isl_multi_pw_aff_from_range(copy());
10148
0
  return manage(res);
10149
0
}
10150
10151
id multi_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
10152
0
{
10153
0
  auto res = isl_multi_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
10154
0
  return manage(res);
10155
0
}
10156
10157
space multi_pw_aff::get_domain_space() const
10158
0
{
10159
0
  auto res = isl_multi_pw_aff_get_domain_space(get());
10160
0
  return manage(res);
10161
0
}
10162
10163
uint32_t multi_pw_aff::get_hash() const
10164
0
{
10165
0
  auto res = isl_multi_pw_aff_get_hash(get());
10166
0
  return res;
10167
0
}
10168
10169
pw_aff multi_pw_aff::get_pw_aff(int pos) const
10170
1
{
10171
1
  auto res = isl_multi_pw_aff_get_pw_aff(get(), pos);
10172
1
  return manage(res);
10173
1
}
10174
10175
space multi_pw_aff::get_space() const
10176
0
{
10177
0
  auto res = isl_multi_pw_aff_get_space(get());
10178
0
  return manage(res);
10179
0
}
10180
10181
id multi_pw_aff::get_tuple_id(isl::dim type) const
10182
0
{
10183
0
  auto res = isl_multi_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10184
0
  return manage(res);
10185
0
}
10186
10187
std::string multi_pw_aff::get_tuple_name(isl::dim type) const
10188
0
{
10189
0
  auto res = isl_multi_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10190
0
  std::string tmp(res);
10191
0
  return tmp;
10192
0
}
10193
10194
multi_pw_aff multi_pw_aff::gist(set set) const
10195
0
{
10196
0
  auto res = isl_multi_pw_aff_gist(copy(), set.release());
10197
0
  return manage(res);
10198
0
}
10199
10200
multi_pw_aff multi_pw_aff::gist_params(set set) const
10201
0
{
10202
0
  auto res = isl_multi_pw_aff_gist_params(copy(), set.release());
10203
0
  return manage(res);
10204
0
}
10205
10206
boolean multi_pw_aff::has_tuple_id(isl::dim type) const
10207
0
{
10208
0
  auto res = isl_multi_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10209
0
  return manage(res);
10210
0
}
10211
10212
multi_pw_aff multi_pw_aff::identity(space space)
10213
0
{
10214
0
  auto res = isl_multi_pw_aff_identity(space.release());
10215
0
  return manage(res);
10216
0
}
10217
10218
multi_pw_aff multi_pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
10219
0
{
10220
0
  auto res = isl_multi_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10221
0
  return manage(res);
10222
0
}
10223
10224
multi_pw_aff multi_pw_aff::intersect_domain(set domain) const
10225
0
{
10226
0
  auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
10227
0
  return manage(res);
10228
0
}
10229
10230
multi_pw_aff multi_pw_aff::intersect_params(set set) const
10231
0
{
10232
0
  auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
10233
0
  return manage(res);
10234
0
}
10235
10236
boolean multi_pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
10237
0
{
10238
0
  auto res = isl_multi_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
10239
0
  return manage(res);
10240
0
}
10241
10242
boolean multi_pw_aff::involves_nan() const
10243
0
{
10244
0
  auto res = isl_multi_pw_aff_involves_nan(get());
10245
0
  return manage(res);
10246
0
}
10247
10248
boolean multi_pw_aff::is_cst() const
10249
0
{
10250
0
  auto res = isl_multi_pw_aff_is_cst(get());
10251
0
  return manage(res);
10252
0
}
10253
10254
boolean multi_pw_aff::is_equal(const multi_pw_aff &mpa2) const
10255
0
{
10256
0
  auto res = isl_multi_pw_aff_is_equal(get(), mpa2.get());
10257
0
  return manage(res);
10258
0
}
10259
10260
map multi_pw_aff::lex_gt_map(multi_pw_aff mpa2) const
10261
0
{
10262
0
  auto res = isl_multi_pw_aff_lex_gt_map(copy(), mpa2.release());
10263
0
  return manage(res);
10264
0
}
10265
10266
map multi_pw_aff::lex_lt_map(multi_pw_aff mpa2) const
10267
0
{
10268
0
  auto res = isl_multi_pw_aff_lex_lt_map(copy(), mpa2.release());
10269
0
  return manage(res);
10270
0
}
10271
10272
multi_pw_aff multi_pw_aff::mod_multi_val(multi_val mv) const
10273
0
{
10274
0
  auto res = isl_multi_pw_aff_mod_multi_val(copy(), mv.release());
10275
0
  return manage(res);
10276
0
}
10277
10278
multi_pw_aff 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
10279
0
{
10280
0
  auto res = isl_multi_pw_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);
10281
0
  return manage(res);
10282
0
}
10283
10284
multi_pw_aff multi_pw_aff::neg() const
10285
0
{
10286
0
  auto res = isl_multi_pw_aff_neg(copy());
10287
0
  return manage(res);
10288
0
}
10289
10290
boolean multi_pw_aff::plain_is_equal(const multi_pw_aff &multi2) const
10291
0
{
10292
0
  auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
10293
0
  return manage(res);
10294
0
}
10295
10296
multi_pw_aff multi_pw_aff::product(multi_pw_aff multi2) const
10297
0
{
10298
0
  auto res = isl_multi_pw_aff_product(copy(), multi2.release());
10299
0
  return manage(res);
10300
0
}
10301
10302
multi_pw_aff multi_pw_aff::project_domain_on_params() const
10303
0
{
10304
0
  auto res = isl_multi_pw_aff_project_domain_on_params(copy());
10305
0
  return manage(res);
10306
0
}
10307
10308
multi_pw_aff multi_pw_aff::pullback(multi_aff ma) const
10309
0
{
10310
0
  auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
10311
0
  return manage(res);
10312
0
}
10313
10314
multi_pw_aff multi_pw_aff::pullback(pw_multi_aff pma) const
10315
0
{
10316
0
  auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
10317
0
  return manage(res);
10318
0
}
10319
10320
multi_pw_aff multi_pw_aff::pullback(multi_pw_aff mpa2) const
10321
0
{
10322
0
  auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
10323
0
  return manage(res);
10324
0
}
10325
10326
multi_pw_aff multi_pw_aff::range_factor_domain() const
10327
0
{
10328
0
  auto res = isl_multi_pw_aff_range_factor_domain(copy());
10329
0
  return manage(res);
10330
0
}
10331
10332
multi_pw_aff multi_pw_aff::range_factor_range() const
10333
0
{
10334
0
  auto res = isl_multi_pw_aff_range_factor_range(copy());
10335
0
  return manage(res);
10336
0
}
10337
10338
boolean multi_pw_aff::range_is_wrapping() const
10339
0
{
10340
0
  auto res = isl_multi_pw_aff_range_is_wrapping(get());
10341
0
  return manage(res);
10342
0
}
10343
10344
multi_pw_aff multi_pw_aff::range_product(multi_pw_aff multi2) const
10345
0
{
10346
0
  auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
10347
0
  return manage(res);
10348
0
}
10349
10350
multi_pw_aff multi_pw_aff::range_splice(unsigned int pos, multi_pw_aff multi2) const
10351
0
{
10352
0
  auto res = isl_multi_pw_aff_range_splice(copy(), pos, multi2.release());
10353
0
  return manage(res);
10354
0
}
10355
10356
multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const
10357
0
{
10358
0
  auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10359
0
  return manage(res);
10360
0
}
10361
10362
multi_pw_aff multi_pw_aff::reset_user() const
10363
0
{
10364
0
  auto res = isl_multi_pw_aff_reset_user(copy());
10365
0
  return manage(res);
10366
0
}
10367
10368
multi_pw_aff multi_pw_aff::scale_down_multi_val(multi_val mv) const
10369
0
{
10370
0
  auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
10371
0
  return manage(res);
10372
0
}
10373
10374
multi_pw_aff multi_pw_aff::scale_down_val(val v) const
10375
0
{
10376
0
  auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
10377
0
  return manage(res);
10378
0
}
10379
10380
multi_pw_aff multi_pw_aff::scale_multi_val(multi_val mv) const
10381
0
{
10382
0
  auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
10383
0
  return manage(res);
10384
0
}
10385
10386
multi_pw_aff multi_pw_aff::scale_val(val v) const
10387
0
{
10388
0
  auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
10389
0
  return manage(res);
10390
0
}
10391
10392
multi_pw_aff multi_pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
10393
0
{
10394
0
  auto res = isl_multi_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
10395
0
  return manage(res);
10396
0
}
10397
10398
multi_pw_aff multi_pw_aff::set_pw_aff(int pos, pw_aff el) const
10399
0
{
10400
0
  auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release());
10401
0
  return manage(res);
10402
0
}
10403
10404
multi_pw_aff multi_pw_aff::set_tuple_id(isl::dim type, id id) const
10405
0
{
10406
0
  auto res = isl_multi_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
10407
0
  return manage(res);
10408
0
}
10409
10410
multi_pw_aff multi_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const
10411
0
{
10412
0
  auto res = isl_multi_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
10413
0
  return manage(res);
10414
0
}
10415
10416
multi_pw_aff multi_pw_aff::splice(unsigned int in_pos, unsigned int out_pos, multi_pw_aff multi2) const
10417
0
{
10418
0
  auto res = isl_multi_pw_aff_splice(copy(), in_pos, out_pos, multi2.release());
10419
0
  return manage(res);
10420
0
}
10421
10422
multi_pw_aff multi_pw_aff::sub(multi_pw_aff multi2) const
10423
0
{
10424
0
  auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
10425
0
  return manage(res);
10426
0
}
10427
10428
multi_pw_aff multi_pw_aff::zero(space space)
10429
0
{
10430
0
  auto res = isl_multi_pw_aff_zero(space.release());
10431
0
  return manage(res);
10432
0
}
10433
10434
// implementations for isl::multi_union_pw_aff
10435
473
multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
10436
473
  return multi_union_pw_aff(ptr);
10437
473
}
10438
0
multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
10439
0
  ptr = isl_multi_union_pw_aff_copy(ptr);
10440
0
  return multi_union_pw_aff(ptr);
10441
0
}
10442
10443
multi_union_pw_aff::multi_union_pw_aff()
10444
    : ptr(nullptr) {}
10445
10446
multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
10447
    : ptr(nullptr)
10448
1.83k
{
10449
1.83k
  ptr = obj.copy();
10450
1.83k
}
10451
multi_union_pw_aff::multi_union_pw_aff(std::nullptr_t)
10452
    : ptr(nullptr) {}
10453
10454
10455
multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
10456
473
    : ptr(ptr) {}
10457
10458
multi_union_pw_aff::multi_union_pw_aff(union_pw_aff upa)
10459
{
10460
  auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
10461
  ptr = res;
10462
}
10463
multi_union_pw_aff::multi_union_pw_aff(multi_pw_aff mpa)
10464
{
10465
  auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
10466
  ptr = res;
10467
}
10468
multi_union_pw_aff::multi_union_pw_aff(union_pw_multi_aff upma)
10469
1.82k
{
10470
1.82k
  auto res = isl_multi_union_pw_aff_from_union_pw_multi_aff(upma.release());
10471
1.82k
  ptr = res;
10472
1.82k
}
10473
multi_union_pw_aff::multi_union_pw_aff(ctx ctx, const std::string &str)
10474
{
10475
  auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
10476
  ptr = res;
10477
}
10478
10479
174
multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
10480
174
  std::swap(this->ptr, obj.ptr);
10481
174
  return *this;
10482
174
}
10483
10484
4.13k
multi_union_pw_aff::~multi_union_pw_aff() {
10485
4.13k
  if (ptr)
10486
2.18k
    isl_multi_union_pw_aff_free(ptr);
10487
4.13k
}
10488
10489
2.01k
__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
10490
2.01k
  return isl_multi_union_pw_aff_copy(ptr);
10491
2.01k
}
10492
10493
337
__isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
10494
337
  return ptr;
10495
337
}
10496
10497
1.94k
__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
10498
1.94k
  isl_multi_union_pw_aff *tmp = ptr;
10499
1.94k
  ptr = nullptr;
10500
1.94k
  return tmp;
10501
1.94k
}
10502
10503
0
bool multi_union_pw_aff::is_null() const {
10504
0
  return ptr == nullptr;
10505
0
}
10506
0
multi_union_pw_aff::operator bool() const {
10507
0
  return !is_null();
10508
0
}
10509
10510
10511
0
ctx multi_union_pw_aff::get_ctx() const {
10512
0
  return ctx(isl_multi_union_pw_aff_get_ctx(ptr));
10513
0
}
10514
0
std::string multi_union_pw_aff::to_str() const {
10515
0
  char *Tmp = isl_multi_union_pw_aff_to_str(get());
10516
0
  if (!Tmp)
10517
0
    return "";
10518
0
  std::string S(Tmp);
10519
0
  free(Tmp);
10520
0
  return S;
10521
0
}
10522
10523
10524
0
void multi_union_pw_aff::dump() const {
10525
0
  isl_multi_union_pw_aff_dump(get());
10526
0
}
10527
10528
10529
multi_union_pw_aff multi_union_pw_aff::add(multi_union_pw_aff multi2) const
10530
0
{
10531
0
  auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
10532
0
  return manage(res);
10533
0
}
10534
10535
multi_union_pw_aff multi_union_pw_aff::align_params(space model) const
10536
0
{
10537
0
  auto res = isl_multi_union_pw_aff_align_params(copy(), model.release());
10538
0
  return manage(res);
10539
0
}
10540
10541
union_pw_aff multi_union_pw_aff::apply_aff(aff aff) const
10542
0
{
10543
0
  auto res = isl_multi_union_pw_aff_apply_aff(copy(), aff.release());
10544
0
  return manage(res);
10545
0
}
10546
10547
union_pw_aff multi_union_pw_aff::apply_pw_aff(pw_aff pa) const
10548
0
{
10549
0
  auto res = isl_multi_union_pw_aff_apply_pw_aff(copy(), pa.release());
10550
0
  return manage(res);
10551
0
}
10552
10553
multi_union_pw_aff multi_union_pw_aff::apply_pw_multi_aff(pw_multi_aff pma) const
10554
0
{
10555
0
  auto res = isl_multi_union_pw_aff_apply_pw_multi_aff(copy(), pma.release());
10556
0
  return manage(res);
10557
0
}
10558
10559
multi_union_pw_aff multi_union_pw_aff::coalesce() const
10560
0
{
10561
0
  auto res = isl_multi_union_pw_aff_coalesce(copy());
10562
0
  return manage(res);
10563
0
}
10564
10565
unsigned int multi_union_pw_aff::dim(isl::dim type) const
10566
0
{
10567
0
  auto res = isl_multi_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
10568
0
  return res;
10569
0
}
10570
10571
union_set multi_union_pw_aff::domain() const
10572
0
{
10573
0
  auto res = isl_multi_union_pw_aff_domain(copy());
10574
0
  return manage(res);
10575
0
}
10576
10577
multi_union_pw_aff multi_union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
10578
0
{
10579
0
  auto res = isl_multi_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10580
0
  return manage(res);
10581
0
}
10582
10583
multi_pw_aff multi_union_pw_aff::extract_multi_pw_aff(space space) const
10584
0
{
10585
0
  auto res = isl_multi_union_pw_aff_extract_multi_pw_aff(get(), space.release());
10586
0
  return manage(res);
10587
0
}
10588
10589
multi_union_pw_aff multi_union_pw_aff::factor_range() const
10590
0
{
10591
0
  auto res = isl_multi_union_pw_aff_factor_range(copy());
10592
0
  return manage(res);
10593
0
}
10594
10595
int multi_union_pw_aff::find_dim_by_id(isl::dim type, const id &id) const
10596
0
{
10597
0
  auto res = isl_multi_union_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
10598
0
  return res;
10599
0
}
10600
10601
int multi_union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
10602
0
{
10603
0
  auto res = isl_multi_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10604
0
  return res;
10605
0
}
10606
10607
multi_union_pw_aff multi_union_pw_aff::flat_range_product(multi_union_pw_aff multi2) const
10608
0
{
10609
0
  auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
10610
0
  return manage(res);
10611
0
}
10612
10613
multi_union_pw_aff multi_union_pw_aff::flatten_range() const
10614
0
{
10615
0
  auto res = isl_multi_union_pw_aff_flatten_range(copy());
10616
0
  return manage(res);
10617
0
}
10618
10619
multi_union_pw_aff multi_union_pw_aff::floor() const
10620
0
{
10621
0
  auto res = isl_multi_union_pw_aff_floor(copy());
10622
0
  return manage(res);
10623
0
}
10624
10625
multi_union_pw_aff multi_union_pw_aff::from_multi_aff(multi_aff ma)
10626
0
{
10627
0
  auto res = isl_multi_union_pw_aff_from_multi_aff(ma.release());
10628
0
  return manage(res);
10629
0
}
10630
10631
multi_union_pw_aff multi_union_pw_aff::from_range() const
10632
0
{
10633
0
  auto res = isl_multi_union_pw_aff_from_range(copy());
10634
0
  return manage(res);
10635
0
}
10636
10637
multi_union_pw_aff multi_union_pw_aff::from_union_map(union_map umap)
10638
163
{
10639
163
  auto res = isl_multi_union_pw_aff_from_union_map(umap.release());
10640
163
  return manage(res);
10641
163
}
10642
10643
multi_union_pw_aff multi_union_pw_aff::from_union_pw_aff_list(space space, union_pw_aff_list list)
10644
0
{
10645
0
  auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
10646
0
  return manage(res);
10647
0
}
10648
10649
id multi_union_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
10650
0
{
10651
0
  auto res = isl_multi_union_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
10652
0
  return manage(res);
10653
0
}
10654
10655
space multi_union_pw_aff::get_domain_space() const
10656
0
{
10657
0
  auto res = isl_multi_union_pw_aff_get_domain_space(get());
10658
0
  return manage(res);
10659
0
}
10660
10661
space multi_union_pw_aff::get_space() const
10662
0
{
10663
0
  auto res = isl_multi_union_pw_aff_get_space(get());
10664
0
  return manage(res);
10665
0
}
10666
10667
id multi_union_pw_aff::get_tuple_id(isl::dim type) const
10668
0
{
10669
0
  auto res = isl_multi_union_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10670
0
  return manage(res);
10671
0
}
10672
10673
std::string multi_union_pw_aff::get_tuple_name(isl::dim type) const
10674
0
{
10675
0
  auto res = isl_multi_union_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10676
0
  std::string tmp(res);
10677
0
  return tmp;
10678
0
}
10679
10680
union_pw_aff multi_union_pw_aff::get_union_pw_aff(int pos) const
10681
337
{
10682
337
  auto res = isl_multi_union_pw_aff_get_union_pw_aff(get(), pos);
10683
337
  return manage(res);
10684
337
}
10685
10686
multi_union_pw_aff multi_union_pw_aff::gist(union_set context) const
10687
0
{
10688
0
  auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
10689
0
  return manage(res);
10690
0
}
10691
10692
multi_union_pw_aff multi_union_pw_aff::gist_params(set context) const
10693
0
{
10694
0
  auto res = isl_multi_union_pw_aff_gist_params(copy(), context.release());
10695
0
  return manage(res);
10696
0
}
10697
10698
boolean multi_union_pw_aff::has_tuple_id(isl::dim type) const
10699
0
{
10700
0
  auto res = isl_multi_union_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10701
0
  return manage(res);
10702
0
}
10703
10704
multi_union_pw_aff multi_union_pw_aff::intersect_domain(union_set uset) const
10705
0
{
10706
0
  auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
10707
0
  return manage(res);
10708
0
}
10709
10710
multi_union_pw_aff multi_union_pw_aff::intersect_params(set params) const
10711
0
{
10712
0
  auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
10713
0
  return manage(res);
10714
0
}
10715
10716
multi_union_pw_aff multi_union_pw_aff::intersect_range(set set) const
10717
0
{
10718
0
  auto res = isl_multi_union_pw_aff_intersect_range(copy(), set.release());
10719
0
  return manage(res);
10720
0
}
10721
10722
boolean multi_union_pw_aff::involves_nan() const
10723
0
{
10724
0
  auto res = isl_multi_union_pw_aff_involves_nan(get());
10725
0
  return manage(res);
10726
0
}
10727
10728
multi_val multi_union_pw_aff::max_multi_val() const
10729
0
{
10730
0
  auto res = isl_multi_union_pw_aff_max_multi_val(copy());
10731
0
  return manage(res);
10732
0
}
10733
10734
multi_val multi_union_pw_aff::min_multi_val() const
10735
0
{
10736
0
  auto res = isl_multi_union_pw_aff_min_multi_val(copy());
10737
0
  return manage(res);
10738
0
}
10739
10740
multi_union_pw_aff multi_union_pw_aff::mod_multi_val(multi_val mv) const
10741
0
{
10742
0
  auto res = isl_multi_union_pw_aff_mod_multi_val(copy(), mv.release());
10743
0
  return manage(res);
10744
0
}
10745
10746
multi_union_pw_aff multi_union_pw_aff::multi_aff_on_domain(union_set domain, multi_aff ma)
10747
0
{
10748
0
  auto res = isl_multi_union_pw_aff_multi_aff_on_domain(domain.release(), ma.release());
10749
0
  return manage(res);
10750
0
}
10751
10752
multi_union_pw_aff multi_union_pw_aff::multi_val_on_domain(union_set domain, multi_val mv)
10753
0
{
10754
0
  auto res = isl_multi_union_pw_aff_multi_val_on_domain(domain.release(), mv.release());
10755
0
  return manage(res);
10756
0
}
10757
10758
multi_union_pw_aff multi_union_pw_aff::neg() const
10759
0
{
10760
0
  auto res = isl_multi_union_pw_aff_neg(copy());
10761
0
  return manage(res);
10762
0
}
10763
10764
boolean multi_union_pw_aff::plain_is_equal(const multi_union_pw_aff &multi2) const
10765
0
{
10766
0
  auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
10767
0
  return manage(res);
10768
0
}
10769
10770
multi_union_pw_aff multi_union_pw_aff::pullback(union_pw_multi_aff upma) const
10771
0
{
10772
0
  auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
10773
0
  return manage(res);
10774
0
}
10775
10776
multi_union_pw_aff multi_union_pw_aff::pw_multi_aff_on_domain(union_set domain, pw_multi_aff pma)
10777
0
{
10778
0
  auto res = isl_multi_union_pw_aff_pw_multi_aff_on_domain(domain.release(), pma.release());
10779
0
  return manage(res);
10780
0
}
10781
10782
multi_union_pw_aff multi_union_pw_aff::range_factor_domain() const
10783
0
{
10784
0
  auto res = isl_multi_union_pw_aff_range_factor_domain(copy());
10785
0
  return manage(res);
10786
0
}
10787
10788
multi_union_pw_aff multi_union_pw_aff::range_factor_range() const
10789
0
{
10790
0
  auto res = isl_multi_union_pw_aff_range_factor_range(copy());
10791
0
  return manage(res);
10792
0
}
10793
10794
boolean multi_union_pw_aff::range_is_wrapping() const
10795
0
{
10796
0
  auto res = isl_multi_union_pw_aff_range_is_wrapping(get());
10797
0
  return manage(res);
10798
0
}
10799
10800
multi_union_pw_aff multi_union_pw_aff::range_product(multi_union_pw_aff multi2) const
10801
0
{
10802
0
  auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
10803
0
  return manage(res);
10804
0
}
10805
10806
multi_union_pw_aff multi_union_pw_aff::range_splice(unsigned int pos, multi_union_pw_aff multi2) const
10807
0
{
10808
0
  auto res = isl_multi_union_pw_aff_range_splice(copy(), pos, multi2.release());
10809
0
  return manage(res);
10810
0
}
10811
10812
multi_union_pw_aff multi_union_pw_aff::reset_tuple_id(isl::dim type) const
10813
14
{
10814
14
  auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10815
14
  return manage(res);
10816
14
}
10817
10818
multi_union_pw_aff multi_union_pw_aff::reset_user() const
10819
0
{
10820
0
  auto res = isl_multi_union_pw_aff_reset_user(copy());
10821
0
  return manage(res);
10822
0
}
10823
10824
multi_union_pw_aff multi_union_pw_aff::scale_down_multi_val(multi_val mv) const
10825
0
{
10826
0
  auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
10827
0
  return manage(res);
10828
0
}
10829
10830
multi_union_pw_aff multi_union_pw_aff::scale_down_val(val v) const
10831
0
{
10832
0
  auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
10833
0
  return manage(res);
10834
0
}
10835
10836
multi_union_pw_aff multi_union_pw_aff::scale_multi_val(multi_val mv) const
10837
0
{
10838
0
  auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
10839
0
  return manage(res);
10840
0
}
10841
10842
multi_union_pw_aff multi_union_pw_aff::scale_val(val v) const
10843
0
{
10844
0
  auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
10845
0
  return manage(res);
10846
0
}
10847
10848
multi_union_pw_aff multi_union_pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
10849
0
{
10850
0
  auto res = isl_multi_union_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
10851
0
  return manage(res);
10852
0
}
10853
10854
multi_union_pw_aff multi_union_pw_aff::set_tuple_id(isl::dim type, id id) const
10855
0
{
10856
0
  auto res = isl_multi_union_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
10857
0
  return manage(res);
10858
0
}
10859
10860
multi_union_pw_aff multi_union_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const
10861
0
{
10862
0
  auto res = isl_multi_union_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
10863
0
  return manage(res);
10864
0
}
10865
10866
multi_union_pw_aff multi_union_pw_aff::set_union_pw_aff(int pos, union_pw_aff el) const
10867
160
{
10868
160
  auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release());
10869
160
  return manage(res);
10870
160
}
10871
10872
multi_union_pw_aff multi_union_pw_aff::sub(multi_union_pw_aff multi2) const
10873
0
{
10874
0
  auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
10875
0
  return manage(res);
10876
0
}
10877
10878
multi_union_pw_aff multi_union_pw_aff::union_add(multi_union_pw_aff mupa2) const
10879
0
{
10880
0
  auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
10881
0
  return manage(res);
10882
0
}
10883
10884
multi_union_pw_aff multi_union_pw_aff::zero(space space)
10885
0
{
10886
0
  auto res = isl_multi_union_pw_aff_zero(space.release());
10887
0
  return manage(res);
10888
0
}
10889
10890
union_set multi_union_pw_aff::zero_union_set() const
10891
0
{
10892
0
  auto res = isl_multi_union_pw_aff_zero_union_set(copy());
10893
0
  return manage(res);
10894
0
}
10895
10896
// implementations for isl::multi_val
10897
244
multi_val manage(__isl_take isl_multi_val *ptr) {
10898
244
  return multi_val(ptr);
10899
244
}
10900
0
multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
10901
0
  ptr = isl_multi_val_copy(ptr);
10902
0
  return multi_val(ptr);
10903
0
}
10904
10905
multi_val::multi_val()
10906
    : ptr(nullptr) {}
10907
10908
multi_val::multi_val(const multi_val &obj)
10909
    : ptr(nullptr)
10910
{
10911
  ptr = obj.copy();
10912
}
10913
multi_val::multi_val(std::nullptr_t)
10914
    : ptr(nullptr) {}
10915
10916
10917
multi_val::multi_val(__isl_take isl_multi_val *ptr)
10918
244
    : ptr(ptr) {}
10919
10920
10921
168
multi_val &multi_val::operator=(multi_val obj) {
10922
168
  std::swap(this->ptr, obj.ptr);
10923
168
  return *this;
10924
168
}
10925
10926
244
multi_val::~multi_val() {
10927
244
  if (ptr)
10928
168
    isl_multi_val_free(ptr);
10929
244
}
10930
10931
168
__isl_give isl_multi_val *multi_val::copy() const & {
10932
168
  return isl_multi_val_copy(ptr);
10933
168
}
10934
10935
0
__isl_keep isl_multi_val *multi_val::get() const {
10936
0
  return ptr;
10937
0
}
10938
10939
76
__isl_give isl_multi_val *multi_val::release() {
10940
76
  isl_multi_val *tmp = ptr;
10941
76
  ptr = nullptr;
10942
76
  return tmp;
10943
76
}
10944
10945
0
bool multi_val::is_null() const {
10946
0
  return ptr == nullptr;
10947
0
}
10948
0
multi_val::operator bool() const {
10949
0
  return !is_null();
10950
0
}
10951
10952
10953
0
ctx multi_val::get_ctx() const {
10954
0
  return ctx(isl_multi_val_get_ctx(ptr));
10955
0
}
10956
0
std::string multi_val::to_str() const {
10957
0
  char *Tmp = isl_multi_val_to_str(get());
10958
0
  if (!Tmp)
10959
0
    return "";
10960
0
  std::string S(Tmp);
10961
0
  free(Tmp);
10962
0
  return S;
10963
0
}
10964
10965
10966
0
void multi_val::dump() const {
10967
0
  isl_multi_val_dump(get());
10968
0
}
10969
10970
10971
multi_val multi_val::add(multi_val multi2) const
10972
0
{
10973
0
  auto res = isl_multi_val_add(copy(), multi2.release());
10974
0
  return manage(res);
10975
0
}
10976
10977
multi_val multi_val::add_dims(isl::dim type, unsigned int n) const
10978
0
{
10979
0
  auto res = isl_multi_val_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10980
0
  return manage(res);
10981
0
}
10982
10983
multi_val multi_val::add_val(val v) const
10984
0
{
10985
0
  auto res = isl_multi_val_add_val(copy(), v.release());
10986
0
  return manage(res);
10987
0
}
10988
10989
multi_val multi_val::align_params(space model) const
10990
0
{
10991
0
  auto res = isl_multi_val_align_params(copy(), model.release());
10992
0
  return manage(res);
10993
0
}
10994
10995
unsigned int multi_val::dim(isl::dim type) const
10996
0
{
10997
0
  auto res = isl_multi_val_dim(get(), static_cast<enum isl_dim_type>(type));
10998
0
  return res;
10999
0
}
11000
11001
multi_val multi_val::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
11002
0
{
11003
0
  auto res = isl_multi_val_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11004
0
  return manage(res);
11005
0
}
11006
11007
multi_val multi_val::factor_range() const
11008
0
{
11009
0
  auto res = isl_multi_val_factor_range(copy());
11010
0
  return manage(res);
11011
0
}
11012
11013
int multi_val::find_dim_by_id(isl::dim type, const id &id) const
11014
0
{
11015
0
  auto res = isl_multi_val_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
11016
0
  return res;
11017
0
}
11018
11019
int multi_val::find_dim_by_name(isl::dim type, const std::string &name) const
11020
0
{
11021
0
  auto res = isl_multi_val_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11022
0
  return res;
11023
0
}
11024
11025
multi_val multi_val::flat_range_product(multi_val multi2) const
11026
0
{
11027
0
  auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
11028
0
  return manage(res);
11029
0
}
11030
11031
multi_val multi_val::flatten_range() const
11032
0
{
11033
0
  auto res = isl_multi_val_flatten_range(copy());
11034
0
  return manage(res);
11035
0
}
11036
11037
multi_val multi_val::from_range() const
11038
0
{
11039
0
  auto res = isl_multi_val_from_range(copy());
11040
0
  return manage(res);
11041
0
}
11042
11043
multi_val multi_val::from_val_list(space space, val_list list)
11044
0
{
11045
0
  auto res = isl_multi_val_from_val_list(space.release(), list.release());
11046
0
  return manage(res);
11047
0
}
11048
11049
id multi_val::get_dim_id(isl::dim type, unsigned int pos) const
11050
0
{
11051
0
  auto res = isl_multi_val_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11052
0
  return manage(res);
11053
0
}
11054
11055
space multi_val::get_domain_space() const
11056
0
{
11057
0
  auto res = isl_multi_val_get_domain_space(get());
11058
0
  return manage(res);
11059
0
}
11060
11061
space multi_val::get_space() const
11062
0
{
11063
0
  auto res = isl_multi_val_get_space(get());
11064
0
  return manage(res);
11065
0
}
11066
11067
id multi_val::get_tuple_id(isl::dim type) const
11068
0
{
11069
0
  auto res = isl_multi_val_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11070
0
  return manage(res);
11071
0
}
11072
11073
std::string multi_val::get_tuple_name(isl::dim type) const
11074
0
{
11075
0
  auto res = isl_multi_val_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
11076
0
  std::string tmp(res);
11077
0
  return tmp;
11078
0
}
11079
11080
val multi_val::get_val(int pos) const
11081
0
{
11082
0
  auto res = isl_multi_val_get_val(get(), pos);
11083
0
  return manage(res);
11084
0
}
11085
11086
boolean multi_val::has_tuple_id(isl::dim type) const
11087
0
{
11088
0
  auto res = isl_multi_val_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11089
0
  return manage(res);
11090
0
}
11091
11092
multi_val multi_val::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
11093
0
{
11094
0
  auto res = isl_multi_val_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11095
0
  return manage(res);
11096
0
}
11097
11098
boolean multi_val::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11099
0
{
11100
0
  auto res = isl_multi_val_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11101
0
  return manage(res);
11102
0
}
11103
11104
boolean multi_val::involves_nan() const
11105
0
{
11106
0
  auto res = isl_multi_val_involves_nan(get());
11107
0
  return manage(res);
11108
0
}
11109
11110
multi_val multi_val::mod_multi_val(multi_val mv) const
11111
0
{
11112
0
  auto res = isl_multi_val_mod_multi_val(copy(), mv.release());
11113
0
  return manage(res);
11114
0
}
11115
11116
multi_val multi_val::mod_val(val v) const
11117
0
{
11118
0
  auto res = isl_multi_val_mod_val(copy(), v.release());
11119
0
  return manage(res);
11120
0
}
11121
11122
multi_val multi_val::neg() const
11123
0
{
11124
0
  auto res = isl_multi_val_neg(copy());
11125
0
  return manage(res);
11126
0
}
11127
11128
boolean multi_val::plain_is_equal(const multi_val &multi2) const
11129
0
{
11130
0
  auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
11131
0
  return manage(res);
11132
0
}
11133
11134
multi_val multi_val::product(multi_val multi2) const
11135
0
{
11136
0
  auto res = isl_multi_val_product(copy(), multi2.release());
11137
0
  return manage(res);
11138
0
}
11139
11140
multi_val multi_val::project_domain_on_params() const
11141
0
{
11142
0
  auto res = isl_multi_val_project_domain_on_params(copy());
11143
0
  return manage(res);
11144
0
}
11145
11146
multi_val multi_val::range_factor_domain() const
11147
0
{
11148
0
  auto res = isl_multi_val_range_factor_domain(copy());
11149
0
  return manage(res);
11150
0
}
11151
11152
multi_val multi_val::range_factor_range() const
11153
0
{
11154
0
  auto res = isl_multi_val_range_factor_range(copy());
11155
0
  return manage(res);
11156
0
}
11157
11158
boolean multi_val::range_is_wrapping() const
11159
0
{
11160
0
  auto res = isl_multi_val_range_is_wrapping(get());
11161
0
  return manage(res);
11162
0
}
11163
11164
multi_val multi_val::range_product(multi_val multi2) const
11165
0
{
11166
0
  auto res = isl_multi_val_range_product(copy(), multi2.release());
11167
0
  return manage(res);
11168
0
}
11169
11170
multi_val multi_val::range_splice(unsigned int pos, multi_val multi2) const
11171
0
{
11172
0
  auto res = isl_multi_val_range_splice(copy(), pos, multi2.release());
11173
0
  return manage(res);
11174
0
}
11175
11176
multi_val multi_val::read_from_str(ctx ctx, const std::string &str)
11177
0
{
11178
0
  auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
11179
0
  return manage(res);
11180
0
}
11181
11182
multi_val multi_val::reset_tuple_id(isl::dim type) const
11183
0
{
11184
0
  auto res = isl_multi_val_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
11185
0
  return manage(res);
11186
0
}
11187
11188
multi_val multi_val::reset_user() const
11189
0
{
11190
0
  auto res = isl_multi_val_reset_user(copy());
11191
0
  return manage(res);
11192
0
}
11193
11194
multi_val multi_val::scale_down_multi_val(multi_val mv) const
11195
0
{
11196
0
  auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
11197
0
  return manage(res);
11198
0
}
11199
11200
multi_val multi_val::scale_down_val(val v) const
11201
0
{
11202
0
  auto res = isl_multi_val_scale_down_val(copy(), v.release());
11203
0
  return manage(res);
11204
0
}
11205
11206
multi_val multi_val::scale_multi_val(multi_val mv) const
11207
0
{
11208
0
  auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
11209
0
  return manage(res);
11210
0
}
11211
11212
multi_val multi_val::scale_val(val v) const
11213
0
{
11214
0
  auto res = isl_multi_val_scale_val(copy(), v.release());
11215
0
  return manage(res);
11216
0
}
11217
11218
multi_val multi_val::set_dim_id(isl::dim type, unsigned int pos, id id) const
11219
0
{
11220
0
  auto res = isl_multi_val_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11221
0
  return manage(res);
11222
0
}
11223
11224
multi_val multi_val::set_tuple_id(isl::dim type, id id) const
11225
0
{
11226
0
  auto res = isl_multi_val_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11227
0
  return manage(res);
11228
0
}
11229
11230
multi_val multi_val::set_tuple_name(isl::dim type, const std::string &s) const
11231
0
{
11232
0
  auto res = isl_multi_val_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
11233
0
  return manage(res);
11234
0
}
11235
11236
multi_val multi_val::set_val(int pos, val el) const
11237
168
{
11238
168
  auto res = isl_multi_val_set_val(copy(), pos, el.release());
11239
168
  return manage(res);
11240
168
}
11241
11242
multi_val multi_val::splice(unsigned int in_pos, unsigned int out_pos, multi_val multi2) const
11243
0
{
11244
0
  auto res = isl_multi_val_splice(copy(), in_pos, out_pos, multi2.release());
11245
0
  return manage(res);
11246
0
}
11247
11248
multi_val multi_val::sub(multi_val multi2) const
11249
0
{
11250
0
  auto res = isl_multi_val_sub(copy(), multi2.release());
11251
0
  return manage(res);
11252
0
}
11253
11254
multi_val multi_val::zero(space space)
11255
76
{
11256
76
  auto res = isl_multi_val_zero(space.release());
11257
76
  return manage(res);
11258
76
}
11259
11260
// implementations for isl::point
11261
0
point manage(__isl_take isl_point *ptr) {
11262
0
  return point(ptr);
11263
0
}
11264
0
point manage_copy(__isl_keep isl_point *ptr) {
11265
0
  ptr = isl_point_copy(ptr);
11266
0
  return point(ptr);
11267
0
}
11268
11269
point::point()
11270
    : ptr(nullptr) {}
11271
11272
point::point(const point &obj)
11273
    : ptr(nullptr)
11274
{
11275
  ptr = obj.copy();
11276
}
11277
point::point(std::nullptr_t)
11278
    : ptr(nullptr) {}
11279
11280
11281
point::point(__isl_take isl_point *ptr)
11282
    : ptr(ptr) {}
11283
11284
point::point(space dim)
11285
{
11286
  auto res = isl_point_zero(dim.release());
11287
  ptr = res;
11288
}
11289
11290
0
point &point::operator=(point obj) {
11291
0
  std::swap(this->ptr, obj.ptr);
11292
0
  return *this;
11293
0
}
11294
11295
point::~point() {
11296
  if (ptr)
11297
    isl_point_free(ptr);
11298
}
11299
11300
0
__isl_give isl_point *point::copy() const & {
11301
0
  return isl_point_copy(ptr);
11302
0
}
11303
11304
0
__isl_keep isl_point *point::get() const {
11305
0
  return ptr;
11306
0
}
11307
11308
__isl_give isl_point *point::release() {
11309
  isl_point *tmp = ptr;
11310
  ptr = nullptr;
11311
  return tmp;
11312
}
11313
11314
0
bool point::is_null() const {
11315
0
  return ptr == nullptr;
11316
0
}
11317
0
point::operator bool() const {
11318
0
  return !is_null();
11319
0
}
11320
11321
11322
0
ctx point::get_ctx() const {
11323
0
  return ctx(isl_point_get_ctx(ptr));
11324
0
}
11325
0
std::string point::to_str() const {
11326
0
  char *Tmp = isl_point_to_str(get());
11327
0
  if (!Tmp)
11328
0
    return "";
11329
0
  std::string S(Tmp);
11330
0
  free(Tmp);
11331
0
  return S;
11332
0
}
11333
11334
11335
0
void point::dump() const {
11336
0
  isl_point_dump(get());
11337
0
}
11338
11339
11340
point point::add_ui(isl::dim type, int pos, unsigned int val) const
11341
0
{
11342
0
  auto res = isl_point_add_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
11343
0
  return manage(res);
11344
0
}
11345
11346
val point::get_coordinate_val(isl::dim type, int pos) const
11347
0
{
11348
0
  auto res = isl_point_get_coordinate_val(get(), static_cast<enum isl_dim_type>(type), pos);
11349
0
  return manage(res);
11350
0
}
11351
11352
space point::get_space() const
11353
0
{
11354
0
  auto res = isl_point_get_space(get());
11355
0
  return manage(res);
11356
0
}
11357
11358
point point::set_coordinate_val(isl::dim type, int pos, val v) const
11359
0
{
11360
0
  auto res = isl_point_set_coordinate_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
11361
0
  return manage(res);
11362
0
}
11363
11364
point point::sub_ui(isl::dim type, int pos, unsigned int val) const
11365
0
{
11366
0
  auto res = isl_point_sub_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
11367
0
  return manage(res);
11368
0
}
11369
11370
// implementations for isl::pw_aff
11371
74.0k
pw_aff manage(__isl_take isl_pw_aff *ptr) {
11372
74.0k
  return pw_aff(ptr);
11373
74.0k
}
11374
54
pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
11375
54
  ptr = isl_pw_aff_copy(ptr);
11376
54
  return pw_aff(ptr);
11377
54
}
11378
11379
pw_aff::pw_aff()
11380
15.6k
    : ptr(nullptr) {}
11381
11382
pw_aff::pw_aff(const pw_aff &obj)
11383
    : ptr(nullptr)
11384
222k
{
11385
222k
  ptr = obj.copy();
11386
222k
}
11387
pw_aff::pw_aff(std::nullptr_t)
11388
1.84k
    : ptr(nullptr) {}
11389
11390
11391
pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
11392
74.1k
    : ptr(ptr) {}
11393
11394
pw_aff::pw_aff(aff aff)
11395
564
{
11396
564
  auto res = isl_pw_aff_from_aff(aff.release());
11397
564
  ptr = res;
11398
564
}
11399
pw_aff::pw_aff(local_space ls)
11400
618
{
11401
618
  auto res = isl_pw_aff_zero_on_domain(ls.release());
11402
618
  ptr = res;
11403
618
}
11404
pw_aff::pw_aff(set domain, val v)
11405
276
{
11406
276
  auto res = isl_pw_aff_val_on_domain(domain.release(), v.release());
11407
276
  ptr = res;
11408
276
}
11409
pw_aff::pw_aff(ctx ctx, const std::string &str)
11410
{
11411
  auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
11412
  ptr = res;
11413
}
11414
11415
95.2k
pw_aff &pw_aff::operator=(pw_aff obj) {
11416
95.2k
  std::swap(this->ptr, obj.ptr);
11417
95.2k
  return *this;
11418
95.2k
}
11419
11420
315k
pw_aff::~pw_aff() {
11421
315k
  if (ptr)
11422
224k
    isl_pw_aff_free(ptr);
11423
315k
}
11424
11425
259k
__isl_give isl_pw_aff *pw_aff::copy() const & {
11426
259k
  return isl_pw_aff_copy(ptr);
11427
259k
}
11428
11429
1.93k
__isl_keep isl_pw_aff *pw_aff::get() const {
11430
1.93k
  return ptr;
11431
1.93k
}
11432
11433
55.6k
__isl_give isl_pw_aff *pw_aff::release() {
11434
55.6k
  isl_pw_aff *tmp = ptr;
11435
55.6k
  ptr = nullptr;
11436
55.6k
  return tmp;
11437
55.6k
}
11438
11439
31.2k
bool pw_aff::is_null() const {
11440
31.2k
  return ptr == nullptr;
11441
31.2k
}
11442
31.2k
pw_aff::operator bool() const {
11443
31.2k
  return !is_null();
11444
31.2k
}
11445
11446
11447
ctx pw_aff::get_ctx() const {
11448
  return ctx(isl_pw_aff_get_ctx(ptr));
11449
}
11450
326
std::string pw_aff::to_str() const {
11451
326
  char *Tmp = isl_pw_aff_to_str(get());
11452
326
  if (!Tmp)
11453
0
    return "";
11454
326
  std::string S(Tmp);
11455
326
  free(Tmp);
11456
326
  return S;
11457
326
}
11458
11459
11460
0
void pw_aff::dump() const {
11461
0
  isl_pw_aff_dump(get());
11462
0
}
11463
11464
11465
pw_aff pw_aff::add(pw_aff pwaff2) const
11466
3.77k
{
11467
3.77k
  auto res = isl_pw_aff_add(copy(), pwaff2.release());
11468
3.77k
  return manage(res);
11469
3.77k
}
11470
11471
pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const
11472
559
{
11473
559
  auto res = isl_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
11474
559
  return manage(res);
11475
559
}
11476
11477
pw_aff pw_aff::align_params(space model) const
11478
0
{
11479
0
  auto res = isl_pw_aff_align_params(copy(), model.release());
11480
0
  return manage(res);
11481
0
}
11482
11483
pw_aff pw_aff::alloc(set set, aff aff)
11484
0
{
11485
0
  auto res = isl_pw_aff_alloc(set.release(), aff.release());
11486
0
  return manage(res);
11487
0
}
11488
11489
pw_aff pw_aff::ceil() const
11490
0
{
11491
0
  auto res = isl_pw_aff_ceil(copy());
11492
0
  return manage(res);
11493
0
}
11494
11495
pw_aff pw_aff::coalesce() const
11496
12.6k
{
11497
12.6k
  auto res = isl_pw_aff_coalesce(copy());
11498
12.6k
  return manage(res);
11499
12.6k
}
11500
11501
pw_aff pw_aff::cond(pw_aff pwaff_true, pw_aff pwaff_false) const
11502
0
{
11503
0
  auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
11504
0
  return manage(res);
11505
0
}
11506
11507
unsigned int pw_aff::dim(isl::dim type) const
11508
0
{
11509
0
  auto res = isl_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
11510
0
  return res;
11511
0
}
11512
11513
pw_aff pw_aff::div(pw_aff pa2) const
11514
0
{
11515
0
  auto res = isl_pw_aff_div(copy(), pa2.release());
11516
0
  return manage(res);
11517
0
}
11518
11519
set pw_aff::domain() const
11520
2.97k
{
11521
2.97k
  auto res = isl_pw_aff_domain(copy());
11522
2.97k
  return manage(res);
11523
2.97k
}
11524
11525
pw_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
11526
0
{
11527
0
  auto res = isl_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11528
0
  return manage(res);
11529
0
}
11530
11531
pw_aff pw_aff::drop_unused_params() const
11532
0
{
11533
0
  auto res = isl_pw_aff_drop_unused_params(copy());
11534
0
  return manage(res);
11535
0
}
11536
11537
pw_aff pw_aff::empty(space dim)
11538
0
{
11539
0
  auto res = isl_pw_aff_empty(dim.release());
11540
0
  return manage(res);
11541
0
}
11542
11543
map pw_aff::eq_map(pw_aff pa2) const
11544
0
{
11545
0
  auto res = isl_pw_aff_eq_map(copy(), pa2.release());
11546
0
  return manage(res);
11547
0
}
11548
11549
set pw_aff::eq_set(pw_aff pwaff2) const
11550
741
{
11551
741
  auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
11552
741
  return manage(res);
11553
741
}
11554
11555
val pw_aff::eval(point pnt) const
11556
0
{
11557
0
  auto res = isl_pw_aff_eval(copy(), pnt.release());
11558
0
  return manage(res);
11559
0
}
11560
11561
int pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
11562
0
{
11563
0
  auto res = isl_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11564
0
  return res;
11565
0
}
11566
11567
pw_aff pw_aff::floor() const
11568
53
{
11569
53
  auto res = isl_pw_aff_floor(copy());
11570
53
  return manage(res);
11571
53
}
11572
11573
stat pw_aff::foreach_piece(const std::function<stat(set, aff)> &fn) const
11574
159
{
11575
159
  struct fn_data {
11576
159
    const std::function<stat(set, aff)> *func;
11577
159
  } fn_data = { &fn };
11578
159
  auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat {
11579
159
    auto *data = static_cast<struct fn_data *>(arg_2);
11580
159
    stat ret = (*data->func)(manage(arg_0), manage(arg_1));
11581
159
    return ret.release();
11582
159
  };
11583
159
  auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_data);
11584
159
  return manage(res);
11585
159
}
11586
11587
pw_aff pw_aff::from_range() const
11588
0
{
11589
0
  auto res = isl_pw_aff_from_range(copy());
11590
0
  return manage(res);
11591
0
}
11592
11593
set pw_aff::ge_set(pw_aff pwaff2) const
11594
13
{
11595
13
  auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
11596
13
  return manage(res);
11597
13
}
11598
11599
id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
11600
14
{
11601
14
  auto res = isl_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11602
14
  return manage(res);
11603
14
}
11604
11605
std::string pw_aff::get_dim_name(isl::dim type, unsigned int pos) const
11606
0
{
11607
0
  auto res = isl_pw_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
11608
0
  std::string tmp(res);
11609
0
  return tmp;
11610
0
}
11611
11612
space pw_aff::get_domain_space() const
11613
549
{
11614
549
  auto res = isl_pw_aff_get_domain_space(get());
11615
549
  return manage(res);
11616
549
}
11617
11618
uint32_t pw_aff::get_hash() const
11619
0
{
11620
0
  auto res = isl_pw_aff_get_hash(get());
11621
0
  return res;
11622
0
}
11623
11624
space pw_aff::get_space() const
11625
417
{
11626
417
  auto res = isl_pw_aff_get_space(get());
11627
417
  return manage(res);
11628
417
}
11629
11630
id pw_aff::get_tuple_id(isl::dim type) const
11631
0
{
11632
0
  auto res = isl_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11633
0
  return manage(res);
11634
0
}
11635
11636
pw_aff pw_aff::gist(set context) const
11637
0
{
11638
0
  auto res = isl_pw_aff_gist(copy(), context.release());
11639
0
  return manage(res);
11640
0
}
11641
11642
pw_aff pw_aff::gist_params(set context) const
11643
0
{
11644
0
  auto res = isl_pw_aff_gist_params(copy(), context.release());
11645
0
  return manage(res);
11646
0
}
11647
11648
map pw_aff::gt_map(pw_aff pa2) const
11649
0
{
11650
0
  auto res = isl_pw_aff_gt_map(copy(), pa2.release());
11651
0
  return manage(res);
11652
0
}
11653
11654
set pw_aff::gt_set(pw_aff pwaff2) const
11655
117
{
11656
117
  auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
11657
117
  return manage(res);
11658
117
}
11659
11660
boolean pw_aff::has_dim_id(isl::dim type, unsigned int pos) const
11661
0
{
11662
0
  auto res = isl_pw_aff_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11663
0
  return manage(res);
11664
0
}
11665
11666
boolean pw_aff::has_tuple_id(isl::dim type) const
11667
0
{
11668
0
  auto res = isl_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11669
0
  return manage(res);
11670
0
}
11671
11672
pw_aff pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
11673
0
{
11674
0
  auto res = isl_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11675
0
  return manage(res);
11676
0
}
11677
11678
pw_aff pw_aff::intersect_domain(set set) const
11679
0
{
11680
0
  auto res = isl_pw_aff_intersect_domain(copy(), set.release());
11681
0
  return manage(res);
11682
0
}
11683
11684
pw_aff pw_aff::intersect_params(set set) const
11685
0
{
11686
0
  auto res = isl_pw_aff_intersect_params(copy(), set.release());
11687
0
  return manage(res);
11688
0
}
11689
11690
boolean pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11691
0
{
11692
0
  auto res = isl_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11693
0
  return manage(res);
11694
0
}
11695
11696
boolean pw_aff::involves_nan() const
11697
0
{
11698
0
  auto res = isl_pw_aff_involves_nan(get());
11699
0
  return manage(res);
11700
0
}
11701
11702
boolean pw_aff::is_cst() const
11703
{
11704
  auto res = isl_pw_aff_is_cst(get());
11705
  return manage(res);
11706
}
11707
11708
boolean pw_aff::is_empty() const
11709
0
{
11710
0
  auto res = isl_pw_aff_is_empty(get());
11711
0
  return manage(res);
11712
0
}
11713
11714
boolean pw_aff::is_equal(const pw_aff &pa2) const
11715
{
11716
  auto res = isl_pw_aff_is_equal(get(), pa2.get());
11717
  return manage(res);
11718
}
11719
11720
set pw_aff::le_set(pw_aff pwaff2) const
11721
617
{
11722
617
  auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
11723
617
  return manage(res);
11724
617
}
11725
11726
map pw_aff::lt_map(pw_aff pa2) const
11727
0
{
11728
0
  auto res = isl_pw_aff_lt_map(copy(), pa2.release());
11729
0
  return manage(res);
11730
0
}
11731
11732
set pw_aff::lt_set(pw_aff pwaff2) const
11733
1.28k
{
11734
1.28k
  auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
11735
1.28k
  return manage(res);
11736
1.28k
}
11737
11738
pw_aff pw_aff::max(pw_aff pwaff2) const
11739
0
{
11740
0
  auto res = isl_pw_aff_max(copy(), pwaff2.release());
11741
0
  return manage(res);
11742
0
}
11743
11744
pw_aff pw_aff::min(pw_aff pwaff2) const
11745
0
{
11746
0
  auto res = isl_pw_aff_min(copy(), pwaff2.release());
11747
0
  return manage(res);
11748
0
}
11749
11750
pw_aff pw_aff::mod(val mod) const
11751
2.92k
{
11752
2.92k
  auto res = isl_pw_aff_mod_val(copy(), mod.release());
11753
2.92k
  return manage(res);
11754
2.92k
}
11755
11756
pw_aff pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
11757
0
{
11758
0
  auto res = isl_pw_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);
11759
0
  return manage(res);
11760
0
}
11761
11762
pw_aff pw_aff::mul(pw_aff pwaff2) const
11763
3.27k
{
11764
3.27k
  auto res = isl_pw_aff_mul(copy(), pwaff2.release());
11765
3.27k
  return manage(res);
11766
3.27k
}
11767
11768
int pw_aff::n_piece() const
11769
0
{
11770
0
  auto res = isl_pw_aff_n_piece(get());
11771
0
  return res;
11772
0
}
11773
11774
pw_aff pw_aff::nan_on_domain(local_space ls)
11775
0
{
11776
0
  auto res = isl_pw_aff_nan_on_domain(ls.release());
11777
0
  return manage(res);
11778
0
}
11779
11780
set pw_aff::ne_set(pw_aff pwaff2) const
11781
3.92k
{
11782
3.92k
  auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
11783
3.92k
  return manage(res);
11784
3.92k
}
11785
11786
pw_aff pw_aff::neg() const
11787
99
{
11788
99
  auto res = isl_pw_aff_neg(copy());
11789
99
  return manage(res);
11790
99
}
11791
11792
set pw_aff::non_zero_set() const
11793
0
{
11794
0
  auto res = isl_pw_aff_non_zero_set(copy());
11795
0
  return manage(res);
11796
0
}
11797
11798
set pw_aff::nonneg_set() const
11799
0
{
11800
0
  auto res = isl_pw_aff_nonneg_set(copy());
11801
0
  return manage(res);
11802
0
}
11803
11804
set pw_aff::params() const
11805
0
{
11806
0
  auto res = isl_pw_aff_params(copy());
11807
0
  return manage(res);
11808
0
}
11809
11810
int pw_aff::plain_cmp(const pw_aff &pa2) const
11811
0
{
11812
0
  auto res = isl_pw_aff_plain_cmp(get(), pa2.get());
11813
0
  return res;
11814
0
}
11815
11816
boolean pw_aff::plain_is_equal(const pw_aff &pwaff2) const
11817
0
{
11818
0
  auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get());
11819
0
  return manage(res);
11820
0
}
11821
11822
set pw_aff::pos_set() const
11823
0
{
11824
0
  auto res = isl_pw_aff_pos_set(copy());
11825
0
  return manage(res);
11826
0
}
11827
11828
pw_aff pw_aff::project_domain_on_params() const
11829
0
{
11830
0
  auto res = isl_pw_aff_project_domain_on_params(copy());
11831
0
  return manage(res);
11832
0
}
11833
11834
pw_aff pw_aff::pullback(multi_aff ma) const
11835
0
{
11836
0
  auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
11837
0
  return manage(res);
11838
0
}
11839
11840
pw_aff pw_aff::pullback(pw_multi_aff pma) const
11841
0
{
11842
0
  auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
11843
0
  return manage(res);
11844
0
}
11845
11846
pw_aff pw_aff::pullback(multi_pw_aff mpa) const
11847
0
{
11848
0
  auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
11849
0
  return manage(res);
11850
0
}
11851
11852
pw_aff pw_aff::reset_tuple_id(isl::dim type) const
11853
0
{
11854
0
  auto res = isl_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
11855
0
  return manage(res);
11856
0
}
11857
11858
pw_aff pw_aff::reset_user() const
11859
0
{
11860
0
  auto res = isl_pw_aff_reset_user(copy());
11861
0
  return manage(res);
11862
0
}
11863
11864
pw_aff pw_aff::scale(val v) const
11865
0
{
11866
0
  auto res = isl_pw_aff_scale_val(copy(), v.release());
11867
0
  return manage(res);
11868
0
}
11869
11870
pw_aff pw_aff::scale_down(val f) const
11871
0
{
11872
0
  auto res = isl_pw_aff_scale_down_val(copy(), f.release());
11873
0
  return manage(res);
11874
0
}
11875
11876
pw_aff pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
11877
0
{
11878
0
  auto res = isl_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11879
0
  return manage(res);
11880
0
}
11881
11882
pw_aff pw_aff::set_tuple_id(isl::dim type, id id) const
11883
559
{
11884
559
  auto res = isl_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11885
559
  return manage(res);
11886
559
}
11887
11888
pw_aff pw_aff::sub(pw_aff pwaff2) const
11889
2.92k
{
11890
2.92k
  auto res = isl_pw_aff_sub(copy(), pwaff2.release());
11891
2.92k
  return manage(res);
11892
2.92k
}
11893
11894
pw_aff pw_aff::subtract_domain(set set) const
11895
0
{
11896
0
  auto res = isl_pw_aff_subtract_domain(copy(), set.release());
11897
0
  return manage(res);
11898
0
}
11899
11900
pw_aff pw_aff::tdiv_q(pw_aff pa2) const
11901
{
11902
  auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
11903
  return manage(res);
11904
}
11905
11906
pw_aff pw_aff::tdiv_r(pw_aff pa2) const
11907
{
11908
  auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
11909
  return manage(res);
11910
}
11911
11912
pw_aff pw_aff::union_add(pw_aff pwaff2) const
11913
0
{
11914
0
  auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
11915
0
  return manage(res);
11916
0
}
11917
11918
pw_aff pw_aff::union_max(pw_aff pwaff2) const
11919
0
{
11920
0
  auto res = isl_pw_aff_union_max(copy(), pwaff2.release());
11921
0
  return manage(res);
11922
0
}
11923
11924
pw_aff pw_aff::union_min(pw_aff pwaff2) const
11925
0
{
11926
0
  auto res = isl_pw_aff_union_min(copy(), pwaff2.release());
11927
0
  return manage(res);
11928
0
}
11929
11930
pw_aff pw_aff::var_on_domain(local_space ls, isl::dim type, unsigned int pos)
11931
559
{
11932
559
  auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
11933
559
  return manage(res);
11934
559
}
11935
11936
set pw_aff::zero_set() const
11937
0
{
11938
0
  auto res = isl_pw_aff_zero_set(copy());
11939
0
  return manage(res);
11940
0
}
11941
11942
// implementations for isl::pw_aff_list
11943
0
pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
11944
0
  return pw_aff_list(ptr);
11945
0
}
11946
0
pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
11947
0
  ptr = isl_pw_aff_list_copy(ptr);
11948
0
  return pw_aff_list(ptr);
11949
0
}
11950
11951
pw_aff_list::pw_aff_list()
11952
    : ptr(nullptr) {}
11953
11954
pw_aff_list::pw_aff_list(const pw_aff_list &obj)
11955
    : ptr(nullptr)
11956
{
11957
  ptr = obj.copy();
11958
}
11959
pw_aff_list::pw_aff_list(std::nullptr_t)
11960
    : ptr(nullptr) {}
11961
11962
11963
pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
11964
    : ptr(ptr) {}
11965
11966
11967
0
pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
11968
0
  std::swap(this->ptr, obj.ptr);
11969
0
  return *this;
11970
0
}
11971
11972
pw_aff_list::~pw_aff_list() {
11973
  if (ptr)
11974
    isl_pw_aff_list_free(ptr);
11975
}
11976
11977
0
__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
11978
0
  return isl_pw_aff_list_copy(ptr);
11979
0
}
11980
11981
0
__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
11982
0
  return ptr;
11983
0
}
11984
11985
0
__isl_give isl_pw_aff_list *pw_aff_list::release() {
11986
0
  isl_pw_aff_list *tmp = ptr;
11987
0
  ptr = nullptr;
11988
0
  return tmp;
11989
0
}
11990
11991
0
bool pw_aff_list::is_null() const {
11992
0
  return ptr == nullptr;
11993
0
}
11994
0
pw_aff_list::operator bool() const {
11995
0
  return !is_null();
11996
0
}
11997
11998
11999
0
ctx pw_aff_list::get_ctx() const {
12000
0
  return ctx(isl_pw_aff_list_get_ctx(ptr));
12001
0
}
12002
12003
0
void pw_aff_list::dump() const {
12004
0
  isl_pw_aff_list_dump(get());
12005
0
}
12006
12007
12008
pw_aff_list pw_aff_list::add(pw_aff el) const
12009
0
{
12010
0
  auto res = isl_pw_aff_list_add(copy(), el.release());
12011
0
  return manage(res);
12012
0
}
12013
12014
pw_aff_list pw_aff_list::alloc(ctx ctx, int n)
12015
0
{
12016
0
  auto res = isl_pw_aff_list_alloc(ctx.release(), n);
12017
0
  return manage(res);
12018
0
}
12019
12020
pw_aff_list pw_aff_list::concat(pw_aff_list list2) const
12021
0
{
12022
0
  auto res = isl_pw_aff_list_concat(copy(), list2.release());
12023
0
  return manage(res);
12024
0
}
12025
12026
pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
12027
0
{
12028
0
  auto res = isl_pw_aff_list_drop(copy(), first, n);
12029
0
  return manage(res);
12030
0
}
12031
12032
set pw_aff_list::eq_set(pw_aff_list list2) const
12033
0
{
12034
0
  auto res = isl_pw_aff_list_eq_set(copy(), list2.release());
12035
0
  return manage(res);
12036
0
}
12037
12038
stat pw_aff_list::foreach(const std::function<stat(pw_aff)> &fn) const
12039
0
{
12040
0
  struct fn_data {
12041
0
    const std::function<stat(pw_aff)> *func;
12042
0
  } fn_data = { &fn };
12043
0
  auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
12044
0
    auto *data = static_cast<struct fn_data *>(arg_1);
12045
0
    stat ret = (*data->func)(manage(arg_0));
12046
0
    return ret.release();
12047
0
  };
12048
0
  auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
12049
0
  return manage(res);
12050
0
}
12051
12052
pw_aff_list pw_aff_list::from_pw_aff(pw_aff el)
12053
0
{
12054
0
  auto res = isl_pw_aff_list_from_pw_aff(el.release());
12055
0
  return manage(res);
12056
0
}
12057
12058
set pw_aff_list::ge_set(pw_aff_list list2) const
12059
0
{
12060
0
  auto res = isl_pw_aff_list_ge_set(copy(), list2.release());
12061
0
  return manage(res);
12062
0
}
12063
12064
pw_aff pw_aff_list::get_at(int index) const
12065
0
{
12066
0
  auto res = isl_pw_aff_list_get_at(get(), index);
12067
0
  return manage(res);
12068
0
}
12069
12070
pw_aff pw_aff_list::get_pw_aff(int index) const
12071
0
{
12072
0
  auto res = isl_pw_aff_list_get_pw_aff(get(), index);
12073
0
  return manage(res);
12074
0
}
12075
12076
set pw_aff_list::gt_set(pw_aff_list list2) const
12077
0
{
12078
0
  auto res = isl_pw_aff_list_gt_set(copy(), list2.release());
12079
0
  return manage(res);
12080
0
}
12081
12082
pw_aff_list pw_aff_list::insert(unsigned int pos, pw_aff el) const
12083
0
{
12084
0
  auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
12085
0
  return manage(res);
12086
0
}
12087
12088
set pw_aff_list::le_set(pw_aff_list list2) const
12089
0
{
12090
0
  auto res = isl_pw_aff_list_le_set(copy(), list2.release());
12091
0
  return manage(res);
12092
0
}
12093
12094
set pw_aff_list::lt_set(pw_aff_list list2) const
12095
0
{
12096
0
  auto res = isl_pw_aff_list_lt_set(copy(), list2.release());
12097
0
  return manage(res);
12098
0
}
12099
12100
pw_aff pw_aff_list::max() const
12101
0
{
12102
0
  auto res = isl_pw_aff_list_max(copy());
12103
0
  return manage(res);
12104
0
}
12105
12106
pw_aff pw_aff_list::min() const
12107
0
{
12108
0
  auto res = isl_pw_aff_list_min(copy());
12109
0
  return manage(res);
12110
0
}
12111
12112
int pw_aff_list::n_pw_aff() const
12113
0
{
12114
0
  auto res = isl_pw_aff_list_n_pw_aff(get());
12115
0
  return res;
12116
0
}
12117
12118
set pw_aff_list::ne_set(pw_aff_list list2) const
12119
0
{
12120
0
  auto res = isl_pw_aff_list_ne_set(copy(), list2.release());
12121
0
  return manage(res);
12122
0
}
12123
12124
pw_aff_list pw_aff_list::reverse() const
12125
0
{
12126
0
  auto res = isl_pw_aff_list_reverse(copy());
12127
0
  return manage(res);
12128
0
}
12129
12130
pw_aff_list pw_aff_list::set_pw_aff(int index, pw_aff el) const
12131
0
{
12132
0
  auto res = isl_pw_aff_list_set_pw_aff(copy(), index, el.release());
12133
0
  return manage(res);
12134
0
}
12135
12136
int pw_aff_list::size() const
12137
0
{
12138
0
  auto res = isl_pw_aff_list_size(get());
12139
0
  return res;
12140
0
}
12141
12142
pw_aff_list pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const
12143
0
{
12144
0
  auto res = isl_pw_aff_list_swap(copy(), pos1, pos2);
12145
0
  return manage(res);
12146
0
}
12147
12148
// implementations for isl::pw_multi_aff
12149
6.85k
pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
12150
6.85k
  return pw_multi_aff(ptr);
12151
6.85k
}
12152
0
pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
12153
0
  ptr = isl_pw_multi_aff_copy(ptr);
12154
0
  return pw_multi_aff(ptr);
12155
0
}
12156
12157
pw_multi_aff::pw_multi_aff()
12158
1.10k
    : ptr(nullptr) {}
12159
12160
pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
12161
    : ptr(nullptr)
12162
7.22k
{
12163
7.22k
  ptr = obj.copy();
12164
7.22k
}
12165
pw_multi_aff::pw_multi_aff(std::nullptr_t)
12166
    : ptr(nullptr) {}
12167
12168
12169
pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
12170
6.85k
    : ptr(ptr) {}
12171
12172
pw_multi_aff::pw_multi_aff(multi_aff ma)
12173
{
12174
  auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
12175
  ptr = res;
12176
}
12177
pw_multi_aff::pw_multi_aff(pw_aff pa)
12178
{
12179
  auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
12180
  ptr = res;
12181
}
12182
pw_multi_aff::pw_multi_aff(ctx ctx, const std::string &str)
12183
{
12184
  auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
12185
  ptr = res;
12186
}
12187
12188
3.36k
pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
12189
3.36k
  std::swap(this->ptr, obj.ptr);
12190
3.36k
  return *this;
12191
3.36k
}
12192
12193
15.1k
pw_multi_aff::~pw_multi_aff() {
12194
15.1k
  if (ptr)
12195
10.5k
    isl_pw_multi_aff_free(ptr);
12196
15.1k
}
12197
12198
10.8k
__isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
12199
10.8k
  return isl_pw_multi_aff_copy(ptr);
12200
10.8k
}
12201
12202
1.98k
__isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
12203
1.98k
  return ptr;
12204
1.98k
}
12205
12206
3.48k
__isl_give isl_pw_multi_aff *pw_multi_aff::release() {
12207
3.48k
  isl_pw_multi_aff *tmp = ptr;
12208
3.48k
  ptr = nullptr;
12209
3.48k
  return tmp;
12210
3.48k
}
12211
12212
1.09k
bool pw_multi_aff::is_null() const {
12213
1.09k
  return ptr == nullptr;
12214
1.09k
}
12215
1.09k
pw_multi_aff::operator bool() const {
12216
1.09k
  return !is_null();
12217
1.09k
}
12218
12219
12220
0
ctx pw_multi_aff::get_ctx() const {
12221
0
  return ctx(isl_pw_multi_aff_get_ctx(ptr));
12222
0
}
12223
540
std::string pw_multi_aff::to_str() const {
12224
540
  char *Tmp = isl_pw_multi_aff_to_str(get());
12225
540
  if (!Tmp)
12226
0
    return "";
12227
540
  std::string S(Tmp);
12228
540
  free(Tmp);
12229
540
  return S;
12230
540
}
12231
12232
12233
0
void pw_multi_aff::dump() const {
12234
0
  isl_pw_multi_aff_dump(get());
12235
0
}
12236
12237
12238
pw_multi_aff pw_multi_aff::add(pw_multi_aff pma2) const
12239
0
{
12240
0
  auto res = isl_pw_multi_aff_add(copy(), pma2.release());
12241
0
  return manage(res);
12242
0
}
12243
12244
pw_multi_aff pw_multi_aff::align_params(space model) const
12245
0
{
12246
0
  auto res = isl_pw_multi_aff_align_params(copy(), model.release());
12247
0
  return manage(res);
12248
0
}
12249
12250
pw_multi_aff pw_multi_aff::alloc(set set, multi_aff maff)
12251
0
{
12252
0
  auto res = isl_pw_multi_aff_alloc(set.release(), maff.release());
12253
0
  return manage(res);
12254
0
}
12255
12256
pw_multi_aff pw_multi_aff::coalesce() const
12257
1.09k
{
12258
1.09k
  auto res = isl_pw_multi_aff_coalesce(copy());
12259
1.09k
  return manage(res);
12260
1.09k
}
12261
12262
unsigned int pw_multi_aff::dim(isl::dim type) const
12263
549
{
12264
549
  auto res = isl_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
12265
549
  return res;
12266
549
}
12267
12268
set pw_multi_aff::domain() const
12269
686
{
12270
686
  auto res = isl_pw_multi_aff_domain(copy());
12271
686
  return manage(res);
12272
686
}
12273
12274
pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12275
620
{
12276
620
  auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12277
620
  return manage(res);
12278
620
}
12279
12280
pw_multi_aff pw_multi_aff::drop_unused_params() const
12281
0
{
12282
0
  auto res = isl_pw_multi_aff_drop_unused_params(copy());
12283
0
  return manage(res);
12284
0
}
12285
12286
pw_multi_aff pw_multi_aff::empty(space space)
12287
0
{
12288
0
  auto res = isl_pw_multi_aff_empty(space.release());
12289
0
  return manage(res);
12290
0
}
12291
12292
int pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
12293
0
{
12294
0
  auto res = isl_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
12295
0
  return res;
12296
0
}
12297
12298
pw_multi_aff pw_multi_aff::fix_si(isl::dim type, unsigned int pos, int value) const
12299
0
{
12300
0
  auto res = isl_pw_multi_aff_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
12301
0
  return manage(res);
12302
0
}
12303
12304
pw_multi_aff pw_multi_aff::flat_range_product(pw_multi_aff pma2) const
12305
0
{
12306
0
  auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
12307
0
  return manage(res);
12308
0
}
12309
12310
stat pw_multi_aff::foreach_piece(const std::function<stat(set, multi_aff)> &fn) const
12311
0
{
12312
0
  struct fn_data {
12313
0
    const std::function<stat(set, multi_aff)> *func;
12314
0
  } fn_data = { &fn };
12315
0
  auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
12316
0
    auto *data = static_cast<struct fn_data *>(arg_2);
12317
0
    stat ret = (*data->func)(manage(arg_0), manage(arg_1));
12318
0
    return ret.release();
12319
0
  };
12320
0
  auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
12321
0
  return manage(res);
12322
0
}
12323
12324
pw_multi_aff pw_multi_aff::from_domain(set set)
12325
0
{
12326
0
  auto res = isl_pw_multi_aff_from_domain(set.release());
12327
0
  return manage(res);
12328
0
}
12329
12330
pw_multi_aff pw_multi_aff::from_map(map map)
12331
231
{
12332
231
  auto res = isl_pw_multi_aff_from_map(map.release());
12333
231
  return manage(res);
12334
231
}
12335
12336
pw_multi_aff pw_multi_aff::from_multi_pw_aff(multi_pw_aff mpa)
12337
0
{
12338
0
  auto res = isl_pw_multi_aff_from_multi_pw_aff(mpa.release());
12339
0
  return manage(res);
12340
0
}
12341
12342
pw_multi_aff pw_multi_aff::from_set(set set)
12343
0
{
12344
0
  auto res = isl_pw_multi_aff_from_set(set.release());
12345
0
  return manage(res);
12346
0
}
12347
12348
id pw_multi_aff::get_dim_id(isl::dim type, unsigned int pos) const
12349
0
{
12350
0
  auto res = isl_pw_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12351
0
  return manage(res);
12352
0
}
12353
12354
std::string pw_multi_aff::get_dim_name(isl::dim type, unsigned int pos) const
12355
0
{
12356
0
  auto res = isl_pw_multi_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12357
0
  std::string tmp(res);
12358
0
  return tmp;
12359
0
}
12360
12361
space pw_multi_aff::get_domain_space() const
12362
0
{
12363
0
  auto res = isl_pw_multi_aff_get_domain_space(get());
12364
0
  return manage(res);
12365
0
}
12366
12367
pw_aff pw_multi_aff::get_pw_aff(int pos) const
12368
549
{
12369
549
  auto res = isl_pw_multi_aff_get_pw_aff(get(), pos);
12370
549
  return manage(res);
12371
549
}
12372
12373
space pw_multi_aff::get_space() const
12374
0
{
12375
0
  auto res = isl_pw_multi_aff_get_space(get());
12376
0
  return manage(res);
12377
0
}
12378
12379
id pw_multi_aff::get_tuple_id(isl::dim type) const
12380
348
{
12381
348
  auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12382
348
  return manage(res);
12383
348
}
12384
12385
std::string pw_multi_aff::get_tuple_name(isl::dim type) const
12386
0
{
12387
0
  auto res = isl_pw_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
12388
0
  std::string tmp(res);
12389
0
  return tmp;
12390
0
}
12391
12392
pw_multi_aff pw_multi_aff::gist(set set) const
12393
0
{
12394
0
  auto res = isl_pw_multi_aff_gist(copy(), set.release());
12395
0
  return manage(res);
12396
0
}
12397
12398
pw_multi_aff pw_multi_aff::gist_params(set set) const
12399
0
{
12400
0
  auto res = isl_pw_multi_aff_gist_params(copy(), set.release());
12401
0
  return manage(res);
12402
0
}
12403
12404
boolean pw_multi_aff::has_tuple_id(isl::dim type) const
12405
0
{
12406
0
  auto res = isl_pw_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12407
0
  return manage(res);
12408
0
}
12409
12410
boolean pw_multi_aff::has_tuple_name(isl::dim type) const
12411
0
{
12412
0
  auto res = isl_pw_multi_aff_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
12413
0
  return manage(res);
12414
0
}
12415
12416
pw_multi_aff pw_multi_aff::identity(space space)
12417
0
{
12418
0
  auto res = isl_pw_multi_aff_identity(space.release());
12419
0
  return manage(res);
12420
0
}
12421
12422
pw_multi_aff pw_multi_aff::intersect_domain(set set) const
12423
0
{
12424
0
  auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
12425
0
  return manage(res);
12426
0
}
12427
12428
pw_multi_aff pw_multi_aff::intersect_params(set set) const
12429
686
{
12430
686
  auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
12431
686
  return manage(res);
12432
686
}
12433
12434
boolean pw_multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
12435
0
{
12436
0
  auto res = isl_pw_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
12437
0
  return manage(res);
12438
0
}
12439
12440
boolean pw_multi_aff::involves_nan() const
12441
0
{
12442
0
  auto res = isl_pw_multi_aff_involves_nan(get());
12443
0
  return manage(res);
12444
0
}
12445
12446
boolean pw_multi_aff::is_equal(const pw_multi_aff &pma2) const
12447
0
{
12448
0
  auto res = isl_pw_multi_aff_is_equal(get(), pma2.get());
12449
0
  return manage(res);
12450
0
}
12451
12452
pw_multi_aff pw_multi_aff::multi_val_on_domain(set domain, multi_val mv)
12453
0
{
12454
0
  auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
12455
0
  return manage(res);
12456
0
}
12457
12458
int pw_multi_aff::n_piece() const
12459
0
{
12460
0
  auto res = isl_pw_multi_aff_n_piece(get());
12461
0
  return res;
12462
0
}
12463
12464
pw_multi_aff pw_multi_aff::neg() const
12465
0
{
12466
0
  auto res = isl_pw_multi_aff_neg(copy());
12467
0
  return manage(res);
12468
0
}
12469
12470
boolean pw_multi_aff::plain_is_equal(const pw_multi_aff &pma2) const
12471
0
{
12472
0
  auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get());
12473
0
  return manage(res);
12474
0
}
12475
12476
pw_multi_aff pw_multi_aff::product(pw_multi_aff pma2) const
12477
0
{
12478
0
  auto res = isl_pw_multi_aff_product(copy(), pma2.release());
12479
0
  return manage(res);
12480
0
}
12481
12482
pw_multi_aff pw_multi_aff::project_domain_on_params() const
12483
0
{
12484
0
  auto res = isl_pw_multi_aff_project_domain_on_params(copy());
12485
0
  return manage(res);
12486
0
}
12487
12488
pw_multi_aff pw_multi_aff::project_out_map(space space, isl::dim type, unsigned int first, unsigned int n)
12489
2.57k
{
12490
2.57k
  auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
12491
2.57k
  return manage(res);
12492
2.57k
}
12493
12494
pw_multi_aff pw_multi_aff::pullback(multi_aff ma) const
12495
0
{
12496
0
  auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
12497
0
  return manage(res);
12498
0
}
12499
12500
pw_multi_aff pw_multi_aff::pullback(pw_multi_aff pma2) const
12501
0
{
12502
0
  auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
12503
0
  return manage(res);
12504
0
}
12505
12506
pw_multi_aff pw_multi_aff::range_map(space space)
12507
0
{
12508
0
  auto res = isl_pw_multi_aff_range_map(space.release());
12509
0
  return manage(res);
12510
0
}
12511
12512
pw_multi_aff pw_multi_aff::range_product(pw_multi_aff pma2) const
12513
0
{
12514
0
  auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
12515
0
  return manage(res);
12516
0
}
12517
12518
pw_multi_aff pw_multi_aff::reset_tuple_id(isl::dim type) const
12519
0
{
12520
0
  auto res = isl_pw_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
12521
0
  return manage(res);
12522
0
}
12523
12524
pw_multi_aff pw_multi_aff::reset_user() const
12525
0
{
12526
0
  auto res = isl_pw_multi_aff_reset_user(copy());
12527
0
  return manage(res);
12528
0
}
12529
12530
pw_multi_aff pw_multi_aff::scale_down_val(val v) const
12531
0
{
12532
0
  auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
12533
0
  return manage(res);
12534
0
}
12535
12536
pw_multi_aff pw_multi_aff::scale_multi_val(multi_val mv) const
12537
0
{
12538
0
  auto res = isl_pw_multi_aff_scale_multi_val(copy(), mv.release());
12539
0
  return manage(res);
12540
0
}
12541
12542
pw_multi_aff pw_multi_aff::scale_val(val v) const
12543
0
{
12544
0
  auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
12545
0
  return manage(res);
12546
0
}
12547
12548
pw_multi_aff pw_multi_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
12549
0
{
12550
0
  auto res = isl_pw_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
12551
0
  return manage(res);
12552
0
}
12553
12554
pw_multi_aff pw_multi_aff::set_pw_aff(unsigned int pos, pw_aff pa) const
12555
549
{
12556
549
  auto res = isl_pw_multi_aff_set_pw_aff(copy(), pos, pa.release());
12557
549
  return manage(res);
12558
549
}
12559
12560
pw_multi_aff pw_multi_aff::set_tuple_id(isl::dim type, id id) const
12561
0
{
12562
0
  auto res = isl_pw_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
12563
0
  return manage(res);
12564
0
}
12565
12566
pw_multi_aff pw_multi_aff::sub(pw_multi_aff pma2) const
12567
0
{
12568
0
  auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
12569
0
  return manage(res);
12570
0
}
12571
12572
pw_multi_aff pw_multi_aff::subtract_domain(set set) const
12573
0
{
12574
0
  auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
12575
0
  return manage(res);
12576
0
}
12577
12578
pw_multi_aff pw_multi_aff::union_add(pw_multi_aff pma2) const
12579
0
{
12580
0
  auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
12581
0
  return manage(res);
12582
0
}
12583
12584
pw_multi_aff pw_multi_aff::union_lexmax(pw_multi_aff pma2) const
12585
0
{
12586
0
  auto res = isl_pw_multi_aff_union_lexmax(copy(), pma2.release());
12587
0
  return manage(res);
12588
0
}
12589
12590
pw_multi_aff pw_multi_aff::union_lexmin(pw_multi_aff pma2) const
12591
0
{
12592
0
  auto res = isl_pw_multi_aff_union_lexmin(copy(), pma2.release());
12593
0
  return manage(res);
12594
0
}
12595
12596
pw_multi_aff pw_multi_aff::zero(space space)
12597
0
{
12598
0
  auto res = isl_pw_multi_aff_zero(space.release());
12599
0
  return manage(res);
12600
0
}
12601
12602
// implementations for isl::pw_multi_aff_list
12603
0
pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
12604
0
  return pw_multi_aff_list(ptr);
12605
0
}
12606
0
pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
12607
0
  ptr = isl_pw_multi_aff_list_copy(ptr);
12608
0
  return pw_multi_aff_list(ptr);
12609
0
}
12610
12611
pw_multi_aff_list::pw_multi_aff_list()
12612
    : ptr(nullptr) {}
12613
12614
pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
12615
    : ptr(nullptr)
12616
{
12617
  ptr = obj.copy();
12618
}
12619
pw_multi_aff_list::pw_multi_aff_list(std::nullptr_t)
12620
    : ptr(nullptr) {}
12621
12622
12623
pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
12624
    : ptr(ptr) {}
12625
12626
12627
0
pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
12628
0
  std::swap(this->ptr, obj.ptr);
12629
0
  return *this;
12630
0
}
12631
12632
pw_multi_aff_list::~pw_multi_aff_list() {
12633
  if (ptr)
12634
    isl_pw_multi_aff_list_free(ptr);
12635
}
12636
12637
0
__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
12638
0
  return isl_pw_multi_aff_list_copy(ptr);
12639
0
}
12640
12641
0
__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
12642
0
  return ptr;
12643
0
}
12644
12645
0
__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
12646
0
  isl_pw_multi_aff_list *tmp = ptr;
12647
0
  ptr = nullptr;
12648
0
  return tmp;
12649
0
}
12650
12651
0
bool pw_multi_aff_list::is_null() const {
12652
0
  return ptr == nullptr;
12653
0
}
12654
0
pw_multi_aff_list::operator bool() const {
12655
0
  return !is_null();
12656
0
}
12657
12658
12659
0
ctx pw_multi_aff_list::get_ctx() const {
12660
0
  return ctx(isl_pw_multi_aff_list_get_ctx(ptr));
12661
0
}
12662
12663
0
void pw_multi_aff_list::dump() const {
12664
0
  isl_pw_multi_aff_list_dump(get());
12665
0
}
12666
12667
12668
pw_multi_aff_list pw_multi_aff_list::add(pw_multi_aff el) const
12669
0
{
12670
0
  auto res = isl_pw_multi_aff_list_add(copy(), el.release());
12671
0
  return manage(res);
12672
0
}
12673
12674
pw_multi_aff_list pw_multi_aff_list::alloc(ctx ctx, int n)
12675
0
{
12676
0
  auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
12677
0
  return manage(res);
12678
0
}
12679
12680
pw_multi_aff_list pw_multi_aff_list::concat(pw_multi_aff_list list2) const
12681
0
{
12682
0
  auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
12683
0
  return manage(res);
12684
0
}
12685
12686
pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
12687
0
{
12688
0
  auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
12689
0
  return manage(res);
12690
0
}
12691
12692
stat pw_multi_aff_list::foreach(const std::function<stat(pw_multi_aff)> &fn) const
12693
0
{
12694
0
  struct fn_data {
12695
0
    const std::function<stat(pw_multi_aff)> *func;
12696
0
  } fn_data = { &fn };
12697
0
  auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
12698
0
    auto *data = static_cast<struct fn_data *>(arg_1);
12699
0
    stat ret = (*data->func)(manage(arg_0));
12700
0
    return ret.release();
12701
0
  };
12702
0
  auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
12703
0
  return manage(res);
12704
0
}
12705
12706
pw_multi_aff_list pw_multi_aff_list::from_pw_multi_aff(pw_multi_aff el)
12707
0
{
12708
0
  auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
12709
0
  return manage(res);
12710
0
}
12711
12712
pw_multi_aff pw_multi_aff_list::get_at(int index) const
12713
0
{
12714
0
  auto res = isl_pw_multi_aff_list_get_at(get(), index);
12715
0
  return manage(res);
12716
0
}
12717
12718
pw_multi_aff pw_multi_aff_list::get_pw_multi_aff(int index) const
12719
0
{
12720
0
  auto res = isl_pw_multi_aff_list_get_pw_multi_aff(get(), index);
12721
0
  return manage(res);
12722
0
}
12723
12724
pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, pw_multi_aff el) const
12725
0
{
12726
0
  auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
12727
0
  return manage(res);
12728
0
}
12729
12730
int pw_multi_aff_list::n_pw_multi_aff() const
12731
0
{
12732
0
  auto res = isl_pw_multi_aff_list_n_pw_multi_aff(get());
12733
0
  return res;
12734
0
}
12735
12736
pw_multi_aff_list pw_multi_aff_list::reverse() const
12737
0
{
12738
0
  auto res = isl_pw_multi_aff_list_reverse(copy());
12739
0
  return manage(res);
12740
0
}
12741
12742
pw_multi_aff_list pw_multi_aff_list::set_pw_multi_aff(int index, pw_multi_aff el) const
12743
0
{
12744
0
  auto res = isl_pw_multi_aff_list_set_pw_multi_aff(copy(), index, el.release());
12745
0
  return manage(res);
12746
0
}
12747
12748
int pw_multi_aff_list::size() const
12749
0
{
12750
0
  auto res = isl_pw_multi_aff_list_size(get());
12751
0
  return res;
12752
0
}
12753
12754
pw_multi_aff_list pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const
12755
0
{
12756
0
  auto res = isl_pw_multi_aff_list_swap(copy(), pos1, pos2);
12757
0
  return manage(res);
12758
0
}
12759
12760
// implementations for isl::pw_qpolynomial
12761
0
pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr) {
12762
0
  return pw_qpolynomial(ptr);
12763
0
}
12764
0
pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr) {
12765
0
  ptr = isl_pw_qpolynomial_copy(ptr);
12766
0
  return pw_qpolynomial(ptr);
12767
0
}
12768
12769
pw_qpolynomial::pw_qpolynomial()
12770
    : ptr(nullptr) {}
12771
12772
pw_qpolynomial::pw_qpolynomial(const pw_qpolynomial &obj)
12773
    : ptr(nullptr)
12774
{
12775
  ptr = obj.copy();
12776
}
12777
pw_qpolynomial::pw_qpolynomial(std::nullptr_t)
12778
    : ptr(nullptr) {}
12779
12780
12781
pw_qpolynomial::pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr)
12782
    : ptr(ptr) {}
12783
12784
pw_qpolynomial::pw_qpolynomial(ctx ctx, const std::string &str)
12785
{
12786
  auto res = isl_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
12787
  ptr = res;
12788
}
12789
12790
0
pw_qpolynomial &pw_qpolynomial::operator=(pw_qpolynomial obj) {
12791
0
  std::swap(this->ptr, obj.ptr);
12792
0
  return *this;
12793
0
}
12794
12795
pw_qpolynomial::~pw_qpolynomial() {
12796
  if (ptr)
12797
    isl_pw_qpolynomial_free(ptr);
12798
}
12799
12800
0
__isl_give isl_pw_qpolynomial *pw_qpolynomial::copy() const & {
12801
0
  return isl_pw_qpolynomial_copy(ptr);
12802
0
}
12803
12804
0
__isl_keep isl_pw_qpolynomial *pw_qpolynomial::get() const {
12805
0
  return ptr;
12806
0
}
12807
12808
0
__isl_give isl_pw_qpolynomial *pw_qpolynomial::release() {
12809
0
  isl_pw_qpolynomial *tmp = ptr;
12810
0
  ptr = nullptr;
12811
0
  return tmp;
12812
0
}
12813
12814
0
bool pw_qpolynomial::is_null() const {
12815
0
  return ptr == nullptr;
12816
0
}
12817
0
pw_qpolynomial::operator bool() const {
12818
0
  return !is_null();
12819
0
}
12820
12821
12822
0
ctx pw_qpolynomial::get_ctx() const {
12823
0
  return ctx(isl_pw_qpolynomial_get_ctx(ptr));
12824
0
}
12825
0
std::string pw_qpolynomial::to_str() const {
12826
0
  char *Tmp = isl_pw_qpolynomial_to_str(get());
12827
0
  if (!Tmp)
12828
0
    return "";
12829
0
  std::string S(Tmp);
12830
0
  free(Tmp);
12831
0
  return S;
12832
0
}
12833
12834
12835
0
void pw_qpolynomial::dump() const {
12836
0
  isl_pw_qpolynomial_dump(get());
12837
0
}
12838
12839
12840
pw_qpolynomial pw_qpolynomial::add(pw_qpolynomial pwqp2) const
12841
0
{
12842
0
  auto res = isl_pw_qpolynomial_add(copy(), pwqp2.release());
12843
0
  return manage(res);
12844
0
}
12845
12846
pw_qpolynomial pw_qpolynomial::add_dims(isl::dim type, unsigned int n) const
12847
0
{
12848
0
  auto res = isl_pw_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
12849
0
  return manage(res);
12850
0
}
12851
12852
pw_qpolynomial pw_qpolynomial::alloc(set set, qpolynomial qp)
12853
0
{
12854
0
  auto res = isl_pw_qpolynomial_alloc(set.release(), qp.release());
12855
0
  return manage(res);
12856
0
}
12857
12858
pw_qpolynomial pw_qpolynomial::coalesce() const
12859
0
{
12860
0
  auto res = isl_pw_qpolynomial_coalesce(copy());
12861
0
  return manage(res);
12862
0
}
12863
12864
unsigned int pw_qpolynomial::dim(isl::dim type) const
12865
0
{
12866
0
  auto res = isl_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
12867
0
  return res;
12868
0
}
12869
12870
set pw_qpolynomial::domain() const
12871
0
{
12872
0
  auto res = isl_pw_qpolynomial_domain(copy());
12873
0
  return manage(res);
12874
0
}
12875
12876
pw_qpolynomial pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12877
0
{
12878
0
  auto res = isl_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12879
0
  return manage(res);
12880
0
}
12881
12882
pw_qpolynomial pw_qpolynomial::drop_unused_params() const
12883
0
{
12884
0
  auto res = isl_pw_qpolynomial_drop_unused_params(copy());
12885
0
  return manage(res);
12886
0
}
12887
12888
val pw_qpolynomial::eval(point pnt) const
12889
0
{
12890
0
  auto res = isl_pw_qpolynomial_eval(copy(), pnt.release());
12891
0
  return manage(res);
12892
0
}
12893
12894
int pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const
12895
0
{
12896
0
  auto res = isl_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
12897
0
  return res;
12898
0
}
12899
12900
pw_qpolynomial pw_qpolynomial::fix_val(isl::dim type, unsigned int n, val v) const
12901
0
{
12902
0
  auto res = isl_pw_qpolynomial_fix_val(copy(), static_cast<enum isl_dim_type>(type), n, v.release());
12903
0
  return manage(res);
12904
0
}
12905
12906
stat pw_qpolynomial::foreach_piece(const std::function<stat(set, qpolynomial)> &fn) const
12907
0
{
12908
0
  struct fn_data {
12909
0
    const std::function<stat(set, qpolynomial)> *func;
12910
0
  } fn_data = { &fn };
12911
0
  auto fn_lambda = [](isl_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
12912
0
    auto *data = static_cast<struct fn_data *>(arg_2);
12913
0
    stat ret = (*data->func)(manage(arg_0), manage(arg_1));
12914
0
    return ret.release();
12915
0
  };
12916
0
  auto res = isl_pw_qpolynomial_foreach_piece(get(), fn_lambda, &fn_data);
12917
0
  return manage(res);
12918
0
}
12919
12920
pw_qpolynomial pw_qpolynomial::from_pw_aff(pw_aff pwaff)
12921
0
{
12922
0
  auto res = isl_pw_qpolynomial_from_pw_aff(pwaff.release());
12923
0
  return manage(res);
12924
0
}
12925
12926
pw_qpolynomial pw_qpolynomial::from_qpolynomial(qpolynomial qp)
12927
0
{
12928
0
  auto res = isl_pw_qpolynomial_from_qpolynomial(qp.release());
12929
0
  return manage(res);
12930
0
}
12931
12932
pw_qpolynomial pw_qpolynomial::from_range() const
12933
0
{
12934
0
  auto res = isl_pw_qpolynomial_from_range(copy());
12935
0
  return manage(res);
12936
0
}
12937
12938
space pw_qpolynomial::get_domain_space() const
12939
0
{
12940
0
  auto res = isl_pw_qpolynomial_get_domain_space(get());
12941
0
  return manage(res);
12942
0
}
12943
12944
space pw_qpolynomial::get_space() const
12945
0
{
12946
0
  auto res = isl_pw_qpolynomial_get_space(get());
12947
0
  return manage(res);
12948
0
}
12949
12950
pw_qpolynomial pw_qpolynomial::gist(set context) const
12951
0
{
12952
0
  auto res = isl_pw_qpolynomial_gist(copy(), context.release());
12953
0
  return manage(res);
12954
0
}
12955
12956
pw_qpolynomial pw_qpolynomial::gist_params(set context) const
12957
0
{
12958
0
  auto res = isl_pw_qpolynomial_gist_params(copy(), context.release());
12959
0
  return manage(res);
12960
0
}
12961
12962
boolean pw_qpolynomial::has_equal_space(const pw_qpolynomial &pwqp2) const
12963
0
{
12964
0
  auto res = isl_pw_qpolynomial_has_equal_space(get(), pwqp2.get());
12965
0
  return manage(res);
12966
0
}
12967
12968
pw_qpolynomial pw_qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
12969
0
{
12970
0
  auto res = isl_pw_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12971
0
  return manage(res);
12972
0
}
12973
12974
pw_qpolynomial pw_qpolynomial::intersect_domain(set set) const
12975
0
{
12976
0
  auto res = isl_pw_qpolynomial_intersect_domain(copy(), set.release());
12977
0
  return manage(res);
12978
0
}
12979
12980
pw_qpolynomial pw_qpolynomial::intersect_params(set set) const
12981
0
{
12982
0
  auto res = isl_pw_qpolynomial_intersect_params(copy(), set.release());
12983
0
  return manage(res);
12984
0
}
12985
12986
boolean pw_qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
12987
0
{
12988
0
  auto res = isl_pw_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
12989
0
  return manage(res);
12990
0
}
12991
12992
boolean pw_qpolynomial::involves_nan() const
12993
0
{
12994
0
  auto res = isl_pw_qpolynomial_involves_nan(get());
12995
0
  return manage(res);
12996
0
}
12997
12998
boolean pw_qpolynomial::is_zero() const
12999
0
{
13000
0
  auto res = isl_pw_qpolynomial_is_zero(get());
13001
0
  return manage(res);
13002
0
}
13003
13004
val pw_qpolynomial::max() const
13005
0
{
13006
0
  auto res = isl_pw_qpolynomial_max(copy());
13007
0
  return manage(res);
13008
0
}
13009
13010
val pw_qpolynomial::min() const
13011
0
{
13012
0
  auto res = isl_pw_qpolynomial_min(copy());
13013
0
  return manage(res);
13014
0
}
13015
13016
pw_qpolynomial pw_qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
13017
0
{
13018
0
  auto res = isl_pw_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
13019
0
  return manage(res);
13020
0
}
13021
13022
pw_qpolynomial pw_qpolynomial::mul(pw_qpolynomial pwqp2) const
13023
0
{
13024
0
  auto res = isl_pw_qpolynomial_mul(copy(), pwqp2.release());
13025
0
  return manage(res);
13026
0
}
13027
13028
int pw_qpolynomial::n_piece() const
13029
0
{
13030
0
  auto res = isl_pw_qpolynomial_n_piece(get());
13031
0
  return res;
13032
0
}
13033
13034
pw_qpolynomial pw_qpolynomial::neg() const
13035
0
{
13036
0
  auto res = isl_pw_qpolynomial_neg(copy());
13037
0
  return manage(res);
13038
0
}
13039
13040
boolean pw_qpolynomial::plain_is_equal(const pw_qpolynomial &pwqp2) const
13041
0
{
13042
0
  auto res = isl_pw_qpolynomial_plain_is_equal(get(), pwqp2.get());
13043
0
  return manage(res);
13044
0
}
13045
13046
pw_qpolynomial pw_qpolynomial::pow(unsigned int exponent) const
13047
0
{
13048
0
  auto res = isl_pw_qpolynomial_pow(copy(), exponent);
13049
0
  return manage(res);
13050
0
}
13051
13052
pw_qpolynomial pw_qpolynomial::project_domain_on_params() const
13053
0
{
13054
0
  auto res = isl_pw_qpolynomial_project_domain_on_params(copy());
13055
0
  return manage(res);
13056
0
}
13057
13058
pw_qpolynomial pw_qpolynomial::reset_domain_space(space dim) const
13059
0
{
13060
0
  auto res = isl_pw_qpolynomial_reset_domain_space(copy(), dim.release());
13061
0
  return manage(res);
13062
0
}
13063
13064
pw_qpolynomial pw_qpolynomial::reset_user() const
13065
0
{
13066
0
  auto res = isl_pw_qpolynomial_reset_user(copy());
13067
0
  return manage(res);
13068
0
}
13069
13070
pw_qpolynomial pw_qpolynomial::scale_down_val(val v) const
13071
0
{
13072
0
  auto res = isl_pw_qpolynomial_scale_down_val(copy(), v.release());
13073
0
  return manage(res);
13074
0
}
13075
13076
pw_qpolynomial pw_qpolynomial::scale_val(val v) const
13077
0
{
13078
0
  auto res = isl_pw_qpolynomial_scale_val(copy(), v.release());
13079
0
  return manage(res);
13080
0
}
13081
13082
pw_qpolynomial pw_qpolynomial::split_dims(isl::dim type, unsigned int first, unsigned int n) const
13083
0
{
13084
0
  auto res = isl_pw_qpolynomial_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13085
0
  return manage(res);
13086
0
}
13087
13088
pw_qpolynomial pw_qpolynomial::split_periods(int max_periods) const
13089
0
{
13090
0
  auto res = isl_pw_qpolynomial_split_periods(copy(), max_periods);
13091
0
  return manage(res);
13092
0
}
13093
13094
pw_qpolynomial pw_qpolynomial::sub(pw_qpolynomial pwqp2) const
13095
0
{
13096
0
  auto res = isl_pw_qpolynomial_sub(copy(), pwqp2.release());
13097
0
  return manage(res);
13098
0
}
13099
13100
pw_qpolynomial pw_qpolynomial::subtract_domain(set set) const
13101
0
{
13102
0
  auto res = isl_pw_qpolynomial_subtract_domain(copy(), set.release());
13103
0
  return manage(res);
13104
0
}
13105
13106
pw_qpolynomial pw_qpolynomial::to_polynomial(int sign) const
13107
0
{
13108
0
  auto res = isl_pw_qpolynomial_to_polynomial(copy(), sign);
13109
0
  return manage(res);
13110
0
}
13111
13112
pw_qpolynomial pw_qpolynomial::zero(space dim)
13113
0
{
13114
0
  auto res = isl_pw_qpolynomial_zero(dim.release());
13115
0
  return manage(res);
13116
0
}
13117
13118
// implementations for isl::pw_qpolynomial_fold_list
13119
0
pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr) {
13120
0
  return pw_qpolynomial_fold_list(ptr);
13121
0
}
13122
0
pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr) {
13123
0
  ptr = isl_pw_qpolynomial_fold_list_copy(ptr);
13124
0
  return pw_qpolynomial_fold_list(ptr);
13125
0
}
13126
13127
pw_qpolynomial_fold_list::pw_qpolynomial_fold_list()
13128
    : ptr(nullptr) {}
13129
13130
pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj)
13131
    : ptr(nullptr)
13132
{
13133
  ptr = obj.copy();
13134
}
13135
pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(std::nullptr_t)
13136
    : ptr(nullptr) {}
13137
13138
13139
pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr)
13140
    : ptr(ptr) {}
13141
13142
13143
0
pw_qpolynomial_fold_list &pw_qpolynomial_fold_list::operator=(pw_qpolynomial_fold_list obj) {
13144
0
  std::swap(this->ptr, obj.ptr);
13145
0
  return *this;
13146
0
}
13147
13148
pw_qpolynomial_fold_list::~pw_qpolynomial_fold_list() {
13149
  if (ptr)
13150
    isl_pw_qpolynomial_fold_list_free(ptr);
13151
}
13152
13153
0
__isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::copy() const & {
13154
0
  return isl_pw_qpolynomial_fold_list_copy(ptr);
13155
0
}
13156
13157
0
__isl_keep isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::get() const {
13158
0
  return ptr;
13159
0
}
13160
13161
0
__isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::release() {
13162
0
  isl_pw_qpolynomial_fold_list *tmp = ptr;
13163
0
  ptr = nullptr;
13164
0
  return tmp;
13165
0
}
13166
13167
0
bool pw_qpolynomial_fold_list::is_null() const {
13168
0
  return ptr == nullptr;
13169
0
}
13170
0
pw_qpolynomial_fold_list::operator bool() const {
13171
0
  return !is_null();
13172
0
}
13173
13174
13175
0
ctx pw_qpolynomial_fold_list::get_ctx() const {
13176
0
  return ctx(isl_pw_qpolynomial_fold_list_get_ctx(ptr));
13177
0
}
13178
13179
0
void pw_qpolynomial_fold_list::dump() const {
13180
0
  isl_pw_qpolynomial_fold_list_dump(get());
13181
0
}
13182
13183
13184
13185
// implementations for isl::pw_qpolynomial_list
13186
0
pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr) {
13187
0
  return pw_qpolynomial_list(ptr);
13188
0
}
13189
0
pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr) {
13190
0
  ptr = isl_pw_qpolynomial_list_copy(ptr);
13191
0
  return pw_qpolynomial_list(ptr);
13192
0
}
13193
13194
pw_qpolynomial_list::pw_qpolynomial_list()
13195
    : ptr(nullptr) {}
13196
13197
pw_qpolynomial_list::pw_qpolynomial_list(const pw_qpolynomial_list &obj)
13198
    : ptr(nullptr)
13199
{
13200
  ptr = obj.copy();
13201
}
13202
pw_qpolynomial_list::pw_qpolynomial_list(std::nullptr_t)
13203
    : ptr(nullptr) {}
13204
13205
13206
pw_qpolynomial_list::pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr)
13207
    : ptr(ptr) {}
13208
13209
13210
0
pw_qpolynomial_list &pw_qpolynomial_list::operator=(pw_qpolynomial_list obj) {
13211
0
  std::swap(this->ptr, obj.ptr);
13212
0
  return *this;
13213
0
}
13214
13215
pw_qpolynomial_list::~pw_qpolynomial_list() {
13216
  if (ptr)
13217
    isl_pw_qpolynomial_list_free(ptr);
13218
}
13219
13220
0
__isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::copy() const & {
13221
0
  return isl_pw_qpolynomial_list_copy(ptr);
13222
0
}
13223
13224
0
__isl_keep isl_pw_qpolynomial_list *pw_qpolynomial_list::get() const {
13225
0
  return ptr;
13226
0
}
13227
13228
0
__isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::release() {
13229
0
  isl_pw_qpolynomial_list *tmp = ptr;
13230
0
  ptr = nullptr;
13231
0
  return tmp;
13232
0
}
13233
13234
0
bool pw_qpolynomial_list::is_null() const {
13235
0
  return ptr == nullptr;
13236
0
}
13237
0
pw_qpolynomial_list::operator bool() const {
13238
0
  return !is_null();
13239
0
}
13240
13241
13242
0
ctx pw_qpolynomial_list::get_ctx() const {
13243
0
  return ctx(isl_pw_qpolynomial_list_get_ctx(ptr));
13244
0
}
13245
13246
0
void pw_qpolynomial_list::dump() const {
13247
0
  isl_pw_qpolynomial_list_dump(get());
13248
0
}
13249
13250
13251
pw_qpolynomial_list pw_qpolynomial_list::add(pw_qpolynomial el) const
13252
0
{
13253
0
  auto res = isl_pw_qpolynomial_list_add(copy(), el.release());
13254
0
  return manage(res);
13255
0
}
13256
13257
pw_qpolynomial_list pw_qpolynomial_list::alloc(ctx ctx, int n)
13258
0
{
13259
0
  auto res = isl_pw_qpolynomial_list_alloc(ctx.release(), n);
13260
0
  return manage(res);
13261
0
}
13262
13263
pw_qpolynomial_list pw_qpolynomial_list::concat(pw_qpolynomial_list list2) const
13264
0
{
13265
0
  auto res = isl_pw_qpolynomial_list_concat(copy(), list2.release());
13266
0
  return manage(res);
13267
0
}
13268
13269
pw_qpolynomial_list pw_qpolynomial_list::drop(unsigned int first, unsigned int n) const
13270
0
{
13271
0
  auto res = isl_pw_qpolynomial_list_drop(copy(), first, n);
13272
0
  return manage(res);
13273
0
}
13274
13275
stat pw_qpolynomial_list::foreach(const std::function<stat(pw_qpolynomial)> &fn) const
13276
0
{
13277
0
  struct fn_data {
13278
0
    const std::function<stat(pw_qpolynomial)> *func;
13279
0
  } fn_data = { &fn };
13280
0
  auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
13281
0
    auto *data = static_cast<struct fn_data *>(arg_1);
13282
0
    stat ret = (*data->func)(manage(arg_0));
13283
0
    return ret.release();
13284
0
  };
13285
0
  auto res = isl_pw_qpolynomial_list_foreach(get(), fn_lambda, &fn_data);
13286
0
  return manage(res);
13287
0
}
13288
13289
pw_qpolynomial_list pw_qpolynomial_list::from_pw_qpolynomial(pw_qpolynomial el)
13290
0
{
13291
0
  auto res = isl_pw_qpolynomial_list_from_pw_qpolynomial(el.release());
13292
0
  return manage(res);
13293
0
}
13294
13295
pw_qpolynomial pw_qpolynomial_list::get_at(int index) const
13296
0
{
13297
0
  auto res = isl_pw_qpolynomial_list_get_at(get(), index);
13298
0
  return manage(res);
13299
0
}
13300
13301
pw_qpolynomial pw_qpolynomial_list::get_pw_qpolynomial(int index) const
13302
0
{
13303
0
  auto res = isl_pw_qpolynomial_list_get_pw_qpolynomial(get(), index);
13304
0
  return manage(res);
13305
0
}
13306
13307
pw_qpolynomial_list pw_qpolynomial_list::insert(unsigned int pos, pw_qpolynomial el) const
13308
0
{
13309
0
  auto res = isl_pw_qpolynomial_list_insert(copy(), pos, el.release());
13310
0
  return manage(res);
13311
0
}
13312
13313
int pw_qpolynomial_list::n_pw_qpolynomial() const
13314
0
{
13315
0
  auto res = isl_pw_qpolynomial_list_n_pw_qpolynomial(get());
13316
0
  return res;
13317
0
}
13318
13319
pw_qpolynomial_list pw_qpolynomial_list::reverse() const
13320
0
{
13321
0
  auto res = isl_pw_qpolynomial_list_reverse(copy());
13322
0
  return manage(res);
13323
0
}
13324
13325
pw_qpolynomial_list pw_qpolynomial_list::set_pw_qpolynomial(int index, pw_qpolynomial el) const
13326
0
{
13327
0
  auto res = isl_pw_qpolynomial_list_set_pw_qpolynomial(copy(), index, el.release());
13328
0
  return manage(res);
13329
0
}
13330
13331
int pw_qpolynomial_list::size() const
13332
0
{
13333
0
  auto res = isl_pw_qpolynomial_list_size(get());
13334
0
  return res;
13335
0
}
13336
13337
pw_qpolynomial_list pw_qpolynomial_list::swap(unsigned int pos1, unsigned int pos2) const
13338
0
{
13339
0
  auto res = isl_pw_qpolynomial_list_swap(copy(), pos1, pos2);
13340
0
  return manage(res);
13341
0
}
13342
13343
// implementations for isl::qpolynomial
13344
0
qpolynomial manage(__isl_take isl_qpolynomial *ptr) {
13345
0
  return qpolynomial(ptr);
13346
0
}
13347
0
qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr) {
13348
0
  ptr = isl_qpolynomial_copy(ptr);
13349
0
  return qpolynomial(ptr);
13350
0
}
13351
13352
qpolynomial::qpolynomial()
13353
    : ptr(nullptr) {}
13354
13355
qpolynomial::qpolynomial(const qpolynomial &obj)
13356
    : ptr(nullptr)
13357
{
13358
  ptr = obj.copy();
13359
}
13360
qpolynomial::qpolynomial(std::nullptr_t)
13361
    : ptr(nullptr) {}
13362
13363
13364
qpolynomial::qpolynomial(__isl_take isl_qpolynomial *ptr)
13365
    : ptr(ptr) {}
13366
13367
13368
0
qpolynomial &qpolynomial::operator=(qpolynomial obj) {
13369
0
  std::swap(this->ptr, obj.ptr);
13370
0
  return *this;
13371
0
}
13372
13373
qpolynomial::~qpolynomial() {
13374
  if (ptr)
13375
    isl_qpolynomial_free(ptr);
13376
}
13377
13378
0
__isl_give isl_qpolynomial *qpolynomial::copy() const & {
13379
0
  return isl_qpolynomial_copy(ptr);
13380
0
}
13381
13382
0
__isl_keep isl_qpolynomial *qpolynomial::get() const {
13383
0
  return ptr;
13384
0
}
13385
13386
0
__isl_give isl_qpolynomial *qpolynomial::release() {
13387
0
  isl_qpolynomial *tmp = ptr;
13388
0
  ptr = nullptr;
13389
0
  return tmp;
13390
0
}
13391
13392
0
bool qpolynomial::is_null() const {
13393
0
  return ptr == nullptr;
13394
0
}
13395
0
qpolynomial::operator bool() const {
13396
0
  return !is_null();
13397
0
}
13398
13399
13400
0
ctx qpolynomial::get_ctx() const {
13401
0
  return ctx(isl_qpolynomial_get_ctx(ptr));
13402
0
}
13403
13404
0
void qpolynomial::dump() const {
13405
0
  isl_qpolynomial_dump(get());
13406
0
}
13407
13408
13409
qpolynomial qpolynomial::add(qpolynomial qp2) const
13410
0
{
13411
0
  auto res = isl_qpolynomial_add(copy(), qp2.release());
13412
0
  return manage(res);
13413
0
}
13414
13415
qpolynomial qpolynomial::add_dims(isl::dim type, unsigned int n) const
13416
0
{
13417
0
  auto res = isl_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
13418
0
  return manage(res);
13419
0
}
13420
13421
qpolynomial qpolynomial::align_params(space model) const
13422
0
{
13423
0
  auto res = isl_qpolynomial_align_params(copy(), model.release());
13424
0
  return manage(res);
13425
0
}
13426
13427
stat qpolynomial::as_polynomial_on_domain(const basic_set &bset, const std::function<stat(basic_set, qpolynomial)> &fn) const
13428
0
{
13429
0
  struct fn_data {
13430
0
    const std::function<stat(basic_set, qpolynomial)> *func;
13431
0
  } fn_data = { &fn };
13432
0
  auto fn_lambda = [](isl_basic_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
13433
0
    auto *data = static_cast<struct fn_data *>(arg_2);
13434
0
    stat ret = (*data->func)(manage(arg_0), manage(arg_1));
13435
0
    return ret.release();
13436
0
  };
13437
0
  auto res = isl_qpolynomial_as_polynomial_on_domain(get(), bset.get(), fn_lambda, &fn_data);
13438
0
  return manage(res);
13439
0
}
13440
13441
unsigned int qpolynomial::dim(isl::dim type) const
13442
0
{
13443
0
  auto res = isl_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
13444
0
  return res;
13445
0
}
13446
13447
qpolynomial qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
13448
0
{
13449
0
  auto res = isl_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13450
0
  return manage(res);
13451
0
}
13452
13453
val qpolynomial::eval(point pnt) const
13454
0
{
13455
0
  auto res = isl_qpolynomial_eval(copy(), pnt.release());
13456
0
  return manage(res);
13457
0
}
13458
13459
stat qpolynomial::foreach_term(const std::function<stat(term)> &fn) const
13460
0
{
13461
0
  struct fn_data {
13462
0
    const std::function<stat(term)> *func;
13463
0
  } fn_data = { &fn };
13464
0
  auto fn_lambda = [](isl_term *arg_0, void *arg_1) -> isl_stat {
13465
0
    auto *data = static_cast<struct fn_data *>(arg_1);
13466
0
    stat ret = (*data->func)(manage(arg_0));
13467
0
    return ret.release();
13468
0
  };
13469
0
  auto res = isl_qpolynomial_foreach_term(get(), fn_lambda, &fn_data);
13470
0
  return manage(res);
13471
0
}
13472
13473
qpolynomial qpolynomial::from_aff(aff aff)
13474
0
{
13475
0
  auto res = isl_qpolynomial_from_aff(aff.release());
13476
0
  return manage(res);
13477
0
}
13478
13479
qpolynomial qpolynomial::from_constraint(constraint c, isl::dim type, unsigned int pos)
13480
0
{
13481
0
  auto res = isl_qpolynomial_from_constraint(c.release(), static_cast<enum isl_dim_type>(type), pos);
13482
0
  return manage(res);
13483
0
}
13484
13485
qpolynomial qpolynomial::from_term(term term)
13486
0
{
13487
0
  auto res = isl_qpolynomial_from_term(term.release());
13488
0
  return manage(res);
13489
0
}
13490
13491
val qpolynomial::get_constant_val() const
13492
0
{
13493
0
  auto res = isl_qpolynomial_get_constant_val(get());
13494
0
  return manage(res);
13495
0
}
13496
13497
space qpolynomial::get_domain_space() const
13498
0
{
13499
0
  auto res = isl_qpolynomial_get_domain_space(get());
13500
0
  return manage(res);
13501
0
}
13502
13503
space qpolynomial::get_space() const
13504
0
{
13505
0
  auto res = isl_qpolynomial_get_space(get());
13506
0
  return manage(res);
13507
0
}
13508
13509
qpolynomial qpolynomial::gist(set context) const
13510
0
{
13511
0
  auto res = isl_qpolynomial_gist(copy(), context.release());
13512
0
  return manage(res);
13513
0
}
13514
13515
qpolynomial qpolynomial::gist_params(set context) const
13516
0
{
13517
0
  auto res = isl_qpolynomial_gist_params(copy(), context.release());
13518
0
  return manage(res);
13519
0
}
13520
13521
qpolynomial qpolynomial::homogenize() const
13522
0
{
13523
0
  auto res = isl_qpolynomial_homogenize(copy());
13524
0
  return manage(res);
13525
0
}
13526
13527
qpolynomial qpolynomial::infty_on_domain(space dim)
13528
0
{
13529
0
  auto res = isl_qpolynomial_infty_on_domain(dim.release());
13530
0
  return manage(res);
13531
0
}
13532
13533
qpolynomial qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
13534
0
{
13535
0
  auto res = isl_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13536
0
  return manage(res);
13537
0
}
13538
13539
boolean qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
13540
0
{
13541
0
  auto res = isl_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
13542
0
  return manage(res);
13543
0
}
13544
13545
boolean qpolynomial::is_infty() const
13546
0
{
13547
0
  auto res = isl_qpolynomial_is_infty(get());
13548
0
  return manage(res);
13549
0
}
13550
13551
boolean qpolynomial::is_nan() const
13552
0
{
13553
0
  auto res = isl_qpolynomial_is_nan(get());
13554
0
  return manage(res);
13555
0
}
13556
13557
boolean qpolynomial::is_neginfty() const
13558
0
{
13559
0
  auto res = isl_qpolynomial_is_neginfty(get());
13560
0
  return manage(res);
13561
0
}
13562
13563
boolean qpolynomial::is_zero() const
13564
0
{
13565
0
  auto res = isl_qpolynomial_is_zero(get());
13566
0
  return manage(res);
13567
0
}
13568
13569
qpolynomial qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
13570
0
{
13571
0
  auto res = isl_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
13572
0
  return manage(res);
13573
0
}
13574
13575
qpolynomial qpolynomial::mul(qpolynomial qp2) const
13576
0
{
13577
0
  auto res = isl_qpolynomial_mul(copy(), qp2.release());
13578
0
  return manage(res);
13579
0
}
13580
13581
qpolynomial qpolynomial::nan_on_domain(space dim)
13582
0
{
13583
0
  auto res = isl_qpolynomial_nan_on_domain(dim.release());
13584
0
  return manage(res);
13585
0
}
13586
13587
qpolynomial qpolynomial::neg() const
13588
0
{
13589
0
  auto res = isl_qpolynomial_neg(copy());
13590
0
  return manage(res);
13591
0
}
13592
13593
qpolynomial qpolynomial::neginfty_on_domain(space dim)
13594
0
{
13595
0
  auto res = isl_qpolynomial_neginfty_on_domain(dim.release());
13596
0
  return manage(res);
13597
0
}
13598
13599
qpolynomial qpolynomial::one_on_domain(space dim)
13600
0
{
13601
0
  auto res = isl_qpolynomial_one_on_domain(dim.release());
13602
0
  return manage(res);
13603
0
}
13604
13605
boolean qpolynomial::plain_is_equal(const qpolynomial &qp2) const
13606
0
{
13607
0
  auto res = isl_qpolynomial_plain_is_equal(get(), qp2.get());
13608
0
  return manage(res);
13609
0
}
13610
13611
qpolynomial qpolynomial::pow(unsigned int power) const
13612
0
{
13613
0
  auto res = isl_qpolynomial_pow(copy(), power);
13614
0
  return manage(res);
13615
0
}
13616
13617
qpolynomial qpolynomial::project_domain_on_params() const
13618
0
{
13619
0
  auto res = isl_qpolynomial_project_domain_on_params(copy());
13620
0
  return manage(res);
13621
0
}
13622
13623
qpolynomial qpolynomial::scale_down_val(val v) const
13624
0
{
13625
0
  auto res = isl_qpolynomial_scale_down_val(copy(), v.release());
13626
0
  return manage(res);
13627
0
}
13628
13629
qpolynomial qpolynomial::scale_val(val v) const
13630
0
{
13631
0
  auto res = isl_qpolynomial_scale_val(copy(), v.release());
13632
0
  return manage(res);
13633
0
}
13634
13635
int qpolynomial::sgn() const
13636
0
{
13637
0
  auto res = isl_qpolynomial_sgn(get());
13638
0
  return res;
13639
0
}
13640
13641
qpolynomial qpolynomial::sub(qpolynomial qp2) const
13642
0
{
13643
0
  auto res = isl_qpolynomial_sub(copy(), qp2.release());
13644
0
  return manage(res);
13645
0
}
13646
13647
qpolynomial qpolynomial::val_on_domain(space space, val val)
13648
0
{
13649
0
  auto res = isl_qpolynomial_val_on_domain(space.release(), val.release());
13650
0
  return manage(res);
13651
0
}
13652
13653
qpolynomial qpolynomial::var_on_domain(space dim, isl::dim type, unsigned int pos)
13654
0
{
13655
0
  auto res = isl_qpolynomial_var_on_domain(dim.release(), static_cast<enum isl_dim_type>(type), pos);
13656
0
  return manage(res);
13657
0
}
13658
13659
qpolynomial qpolynomial::zero_on_domain(space dim)
13660
0
{
13661
0
  auto res = isl_qpolynomial_zero_on_domain(dim.release());
13662
0
  return manage(res);
13663
0
}
13664
13665
// implementations for isl::schedule
13666
9.96k
schedule manage(__isl_take isl_schedule *ptr) {
13667
9.96k
  return schedule(ptr);
13668
9.96k
}
13669
0
schedule manage_copy(__isl_keep isl_schedule *ptr) {
13670
0
  ptr = isl_schedule_copy(ptr);
13671
0
  return schedule(ptr);
13672
0
}
13673
13674
schedule::schedule()
13675
    : ptr(nullptr) {}
13676
13677
schedule::schedule(const schedule &obj)
13678
    : ptr(nullptr)
13679
21.8k
{
13680
21.8k
  ptr = obj.copy();
13681
21.8k
}
13682
schedule::schedule(std::nullptr_t)
13683
4.02k
    : ptr(nullptr) {}
13684
13685
13686
schedule::schedule(__isl_take isl_schedule *ptr)
13687
9.96k
    : ptr(ptr) {}
13688
13689
schedule::schedule(ctx ctx, const std::string &str)
13690
{
13691
  auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
13692
  ptr = res;
13693
}
13694
13695
8.11k
schedule &schedule::operator=(schedule obj) {
13696
8.11k
  std::swap(this->ptr, obj.ptr);
13697
8.11k
  return *this;
13698
8.11k
}
13699
13700
35.8k
schedule::~schedule() {
13701
35.8k
  if (ptr)
13702
20.9k
    isl_schedule_free(ptr);
13703
35.8k
}
13704
13705
29.1k
__isl_give isl_schedule *schedule::copy() const & {
13706
29.1k
  return isl_schedule_copy(ptr);
13707
29.1k
}
13708
13709
3.47k
__isl_keep isl_schedule *schedule::get() const {
13710
3.47k
  return ptr;
13711
3.47k
}
13712
13713
2.40k
__isl_give isl_schedule *schedule::release() {
13714
2.40k
  isl_schedule *tmp = ptr;
13715
2.40k
  ptr = nullptr;
13716
2.40k
  return tmp;
13717
2.40k
}
13718
13719
6.79k
bool schedule::is_null() const {
13720
6.79k
  return ptr == nullptr;
13721
6.79k
}
13722
6.79k
schedule::operator bool() const {
13723
6.79k
  return !is_null();
13724
6.79k
}
13725
13726
13727
0
ctx schedule::get_ctx() const {
13728
0
  return ctx(isl_schedule_get_ctx(ptr));
13729
0
}
13730
0
std::string schedule::to_str() const {
13731
0
  char *Tmp = isl_schedule_to_str(get());
13732
0
  if (!Tmp)
13733
0
    return "";
13734
0
  std::string S(Tmp);
13735
0
  free(Tmp);
13736
0
  return S;
13737
0
}
13738
13739
13740
0
void schedule::dump() const {
13741
0
  isl_schedule_dump(get());
13742
0
}
13743
13744
13745
schedule schedule::align_params(space space) const
13746
0
{
13747
0
  auto res = isl_schedule_align_params(copy(), space.release());
13748
0
  return manage(res);
13749
0
}
13750
13751
schedule schedule::empty(space space)
13752
0
{
13753
0
  auto res = isl_schedule_empty(space.release());
13754
0
  return manage(res);
13755
0
}
13756
13757
schedule schedule::from_domain(union_set domain)
13758
2.45k
{
13759
2.45k
  auto res = isl_schedule_from_domain(domain.release());
13760
2.45k
  return manage(res);
13761
2.45k
}
13762
13763
union_set schedule::get_domain() const
13764
1.64k
{
13765
1.64k
  auto res = isl_schedule_get_domain(get());
13766
1.64k
  return manage(res);
13767
1.64k
}
13768
13769
union_map schedule::get_map() const
13770
1.46k
{
13771
1.46k
  auto res = isl_schedule_get_map(get());
13772
1.46k
  return manage(res);
13773
1.46k
}
13774
13775
schedule_node schedule::get_root() const
13776
332
{
13777
332
  auto res = isl_schedule_get_root(get());
13778
332
  return manage(res);
13779
332
}
13780
13781
schedule schedule::gist_domain_params(set context) const
13782
1.15k
{
13783
1.15k
  auto res = isl_schedule_gist_domain_params(copy(), context.release());
13784
1.15k
  return manage(res);
13785
1.15k
}
13786
13787
schedule schedule::insert_context(set context) const
13788
0
{
13789
0
  auto res = isl_schedule_insert_context(copy(), context.release());
13790
0
  return manage(res);
13791
0
}
13792
13793
schedule schedule::insert_guard(set guard) const
13794
0
{
13795
0
  auto res = isl_schedule_insert_guard(copy(), guard.release());
13796
0
  return manage(res);
13797
0
}
13798
13799
schedule schedule::insert_partial_schedule(multi_union_pw_aff partial) const
13800
1.79k
{
13801
1.79k
  auto res = isl_schedule_insert_partial_schedule(copy(), partial.release());
13802
1.79k
  return manage(res);
13803
1.79k
}
13804
13805
schedule schedule::intersect_domain(union_set domain) const
13806
3.15k
{
13807
3.15k
  auto res = isl_schedule_intersect_domain(copy(), domain.release());
13808
3.15k
  return manage(res);
13809
3.15k
}
13810
13811
boolean schedule::plain_is_equal(const schedule &schedule2) const
13812
0
{
13813
0
  auto res = isl_schedule_plain_is_equal(get(), schedule2.get());
13814
0
  return manage(res);
13815
0
}
13816
13817
schedule schedule::pullback(union_pw_multi_aff upma) const
13818
0
{
13819
0
  auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
13820
0
  return manage(res);
13821
0
}
13822
13823
schedule schedule::reset_user() const
13824
0
{
13825
0
  auto res = isl_schedule_reset_user(copy());
13826
0
  return manage(res);
13827
0
}
13828
13829
schedule schedule::sequence(schedule schedule2) const
13830
1.17k
{
13831
1.17k
  auto res = isl_schedule_sequence(copy(), schedule2.release());
13832
1.17k
  return manage(res);
13833
1.17k
}
13834
13835
// implementations for isl::schedule_constraints
13836
160
schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
13837
160
  return schedule_constraints(ptr);
13838
160
}
13839
0
schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
13840
0
  ptr = isl_schedule_constraints_copy(ptr);
13841
0
  return schedule_constraints(ptr);
13842
0
}
13843
13844
schedule_constraints::schedule_constraints()
13845
    : ptr(nullptr) {}
13846
13847
schedule_constraints::schedule_constraints(const schedule_constraints &obj)
13848
    : ptr(nullptr)
13849
{
13850
  ptr = obj.copy();
13851
}
13852
schedule_constraints::schedule_constraints(std::nullptr_t)
13853
    : ptr(nullptr) {}
13854
13855
13856
schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
13857
160
    : ptr(ptr) {}
13858
13859
schedule_constraints::schedule_constraints(ctx ctx, const std::string &str)
13860
{
13861
  auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
13862
  ptr = res;
13863
}
13864
13865
120
schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
13866
120
  std::swap(this->ptr, obj.ptr);
13867
120
  return *this;
13868
120
}
13869
13870
160
schedule_constraints::~schedule_constraints() {
13871
160
  if (ptr)
13872
160
    isl_schedule_constraints_free(ptr);
13873
160
}
13874
13875
160
__isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
13876
160
  return isl_schedule_constraints_copy(ptr);
13877
160
}
13878
13879
0
__isl_keep isl_schedule_constraints *schedule_constraints::get() const {
13880
0
  return ptr;
13881
0
}
13882
13883
0
__isl_give isl_schedule_constraints *schedule_constraints::release() {
13884
0
  isl_schedule_constraints *tmp = ptr;
13885
0
  ptr = nullptr;
13886
0
  return tmp;
13887
0
}
13888
13889
0
bool schedule_constraints::is_null() const {
13890
0
  return ptr == nullptr;
13891
0
}
13892
0
schedule_constraints::operator bool() const {
13893
0
  return !is_null();
13894
0
}
13895
13896
13897
0
ctx schedule_constraints::get_ctx() const {
13898
0
  return ctx(isl_schedule_constraints_get_ctx(ptr));
13899
0
}
13900
0
std::string schedule_constraints::to_str() const {
13901
0
  char *Tmp = isl_schedule_constraints_to_str(get());
13902
0
  if (!Tmp)
13903
0
    return "";
13904
0
  std::string S(Tmp);
13905
0
  free(Tmp);
13906
0
  return S;
13907
0
}
13908
13909
13910
0
void schedule_constraints::dump() const {
13911
0
  isl_schedule_constraints_dump(get());
13912
0
}
13913
13914
13915
schedule_constraints schedule_constraints::apply(union_map umap) const
13916
0
{
13917
0
  auto res = isl_schedule_constraints_apply(copy(), umap.release());
13918
0
  return manage(res);
13919
0
}
13920
13921
schedule schedule_constraints::compute_schedule() const
13922
40
{
13923
40
  auto res = isl_schedule_constraints_compute_schedule(copy());
13924
40
  return manage(res);
13925
40
}
13926
13927
union_map schedule_constraints::get_coincidence() const
13928
0
{
13929
0
  auto res = isl_schedule_constraints_get_coincidence(get());
13930
0
  return manage(res);
13931
0
}
13932
13933
union_map schedule_constraints::get_conditional_validity() const
13934
0
{
13935
0
  auto res = isl_schedule_constraints_get_conditional_validity(get());
13936
0
  return manage(res);
13937
0
}
13938
13939
union_map schedule_constraints::get_conditional_validity_condition() const
13940
0
{
13941
0
  auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
13942
0
  return manage(res);
13943
0
}
13944
13945
set schedule_constraints::get_context() const
13946
0
{
13947
0
  auto res = isl_schedule_constraints_get_context(get());
13948
0
  return manage(res);
13949
0
}
13950
13951
union_set schedule_constraints::get_domain() const
13952
0
{
13953
0
  auto res = isl_schedule_constraints_get_domain(get());
13954
0
  return manage(res);
13955
0
}
13956
13957
union_map schedule_constraints::get_proximity() const
13958
0
{
13959
0
  auto res = isl_schedule_constraints_get_proximity(get());
13960
0
  return manage(res);
13961
0
}
13962
13963
union_map schedule_constraints::get_validity() const
13964
0
{
13965
0
  auto res = isl_schedule_constraints_get_validity(get());
13966
0
  return manage(res);
13967
0
}
13968
13969
schedule_constraints schedule_constraints::on_domain(union_set domain)
13970
40
{
13971
40
  auto res = isl_schedule_constraints_on_domain(domain.release());
13972
40
  return manage(res);
13973
40
}
13974
13975
schedule_constraints schedule_constraints::set_coincidence(union_map coincidence) const
13976
40
{
13977
40
  auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
13978
40
  return manage(res);
13979
40
}
13980
13981
schedule_constraints schedule_constraints::set_conditional_validity(union_map condition, union_map validity) const
13982
0
{
13983
0
  auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
13984
0
  return manage(res);
13985
0
}
13986
13987
schedule_constraints schedule_constraints::set_context(set context) const
13988
0
{
13989
0
  auto res = isl_schedule_constraints_set_context(copy(), context.release());
13990
0
  return manage(res);
13991
0
}
13992
13993
schedule_constraints schedule_constraints::set_proximity(union_map proximity) const
13994
40
{
13995
40
  auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
13996
40
  return manage(res);
13997
40
}
13998
13999
schedule_constraints schedule_constraints::set_validity(union_map validity) const
14000
40
{
14001
40
  auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
14002
40
  return manage(res);
14003
40
}
14004
14005
// implementations for isl::schedule_node
14006
3.42k
schedule_node manage(__isl_take isl_schedule_node *ptr) {
14007
3.42k
  return schedule_node(ptr);
14008
3.42k
}
14009
1.66k
schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
14010
1.66k
  ptr = isl_schedule_node_copy(ptr);
14011
1.66k
  return schedule_node(ptr);
14012
1.66k
}
14013
14014
schedule_node::schedule_node()
14015
    : ptr(nullptr) {}
14016
14017
schedule_node::schedule_node(const schedule_node &obj)
14018
    : ptr(nullptr)
14019
514
{
14020
514
  ptr = obj.copy();
14021
514
}
14022
schedule_node::schedule_node(std::nullptr_t)
14023
    : ptr(nullptr) {}
14024
14025
14026
schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
14027
5.09k
    : ptr(ptr) {}
14028
14029
14030
1.59k
schedule_node &schedule_node::operator=(schedule_node obj) {
14031
1.59k
  std::swap(this->ptr, obj.ptr);
14032
1.59k
  return *this;
14033
1.59k
}
14034
14035
5.60k
schedule_node::~schedule_node() {
14036
5.60k
  if (ptr)
14037
5.10k
    isl_schedule_node_free(ptr);
14038
5.60k
}
14039
14040
3.03k
__isl_give isl_schedule_node *schedule_node::copy() const & {
14041
3.03k
  return isl_schedule_node_copy(ptr);
14042
3.03k
}
14043
14044
6.44k
__isl_keep isl_schedule_node *schedule_node::get() const {
14045
6.44k
  return ptr;
14046
6.44k
}
14047
14048
499
__isl_give isl_schedule_node *schedule_node::release() {
14049
499
  isl_schedule_node *tmp = ptr;
14050
499
  ptr = nullptr;
14051
499
  return tmp;
14052
499
}
14053
14054
120
bool schedule_node::is_null() const {
14055
120
  return ptr == nullptr;
14056
120
}
14057
120
schedule_node::operator bool() const {
14058
120
  return !is_null();
14059
120
}
14060
14061
14062
414
ctx schedule_node::get_ctx() const {
14063
414
  return ctx(isl_schedule_node_get_ctx(ptr));
14064
414
}
14065
0
std::string schedule_node::to_str() const {
14066
0
  char *Tmp = isl_schedule_node_to_str(get());
14067
0
  if (!Tmp)
14068
0
    return "";
14069
0
  std::string S(Tmp);
14070
0
  free(Tmp);
14071
0
  return S;
14072
0
}
14073
14074
14075
0
void schedule_node::dump() const {
14076
0
  isl_schedule_node_dump(get());
14077
0
}
14078
14079
14080
schedule_node schedule_node::align_params(space space) const
14081
0
{
14082
0
  auto res = isl_schedule_node_align_params(copy(), space.release());
14083
0
  return manage(res);
14084
0
}
14085
14086
schedule_node schedule_node::ancestor(int generation) const
14087
0
{
14088
0
  auto res = isl_schedule_node_ancestor(copy(), generation);
14089
0
  return manage(res);
14090
0
}
14091
14092
boolean schedule_node::band_member_get_coincident(int pos) const
14093
549
{
14094
549
  auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
14095
549
  return manage(res);
14096
549
}
14097
14098
schedule_node schedule_node::band_member_set_coincident(int pos, int coincident) const
14099
12
{
14100
12
  auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
14101
12
  return manage(res);
14102
12
}
14103
14104
schedule_node schedule_node::band_set_ast_build_options(union_set options) const
14105
130
{
14106
130
  auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
14107
130
  return manage(res);
14108
130
}
14109
14110
schedule_node schedule_node::child(int pos) const
14111
930
{
14112
930
  auto res = isl_schedule_node_child(copy(), pos);
14113
930
  return manage(res);
14114
930
}
14115
14116
set schedule_node::context_get_context() const
14117
0
{
14118
0
  auto res = isl_schedule_node_context_get_context(get());
14119
0
  return manage(res);
14120
0
}
14121
14122
schedule_node schedule_node::cut() const
14123
0
{
14124
0
  auto res = isl_schedule_node_cut(copy());
14125
0
  return manage(res);
14126
0
}
14127
14128
union_set schedule_node::domain_get_domain() const
14129
0
{
14130
0
  auto res = isl_schedule_node_domain_get_domain(get());
14131
0
  return manage(res);
14132
0
}
14133
14134
union_pw_multi_aff schedule_node::expansion_get_contraction() const
14135
0
{
14136
0
  auto res = isl_schedule_node_expansion_get_contraction(get());
14137
0
  return manage(res);
14138
0
}
14139
14140
union_map schedule_node::expansion_get_expansion() const
14141
0
{
14142
0
  auto res = isl_schedule_node_expansion_get_expansion(get());
14143
0
  return manage(res);
14144
0
}
14145
14146
union_map schedule_node::extension_get_extension() const
14147
24
{
14148
24
  auto res = isl_schedule_node_extension_get_extension(get());
14149
24
  return manage(res);
14150
24
}
14151
14152
union_set schedule_node::filter_get_filter() const
14153
56
{
14154
56
  auto res = isl_schedule_node_filter_get_filter(get());
14155
56
  return manage(res);
14156
56
}
14157
14158
schedule_node schedule_node::first_child() const
14159
568
{
14160
568
  auto res = isl_schedule_node_first_child(copy());
14161
568
  return manage(res);
14162
568
}
14163
14164
stat schedule_node::foreach_ancestor_top_down(const std::function<stat(schedule_node)> &fn) const
14165
0
{
14166
0
  struct fn_data {
14167
0
    const std::function<stat(schedule_node)> *func;
14168
0
  } fn_data = { &fn };
14169
0
  auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
14170
0
    auto *data = static_cast<struct fn_data *>(arg_1);
14171
0
    stat ret = (*data->func)(manage_copy(arg_0));
14172
0
    return ret.release();
14173
0
  };
14174
0
  auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
14175
0
  return manage(res);
14176
0
}
14177
14178
schedule_node schedule_node::from_domain(union_set domain)
14179
0
{
14180
0
  auto res = isl_schedule_node_from_domain(domain.release());
14181
0
  return manage(res);
14182
0
}
14183
14184
schedule_node schedule_node::from_extension(union_map extension)
14185
24
{
14186
24
  auto res = isl_schedule_node_from_extension(extension.release());
14187
24
  return manage(res);
14188
24
}
14189
14190
int schedule_node::get_ancestor_child_position(const schedule_node &ancestor) const
14191
0
{
14192
0
  auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
14193
0
  return res;
14194
0
}
14195
14196
schedule_node schedule_node::get_child(int pos) const
14197
68
{
14198
68
  auto res = isl_schedule_node_get_child(get(), pos);
14199
68
  return manage(res);
14200
68
}
14201
14202
int schedule_node::get_child_position() const
14203
0
{
14204
0
  auto res = isl_schedule_node_get_child_position(get());
14205
0
  return res;
14206
0
}
14207
14208
union_set schedule_node::get_domain() const
14209
0
{
14210
0
  auto res = isl_schedule_node_get_domain(get());
14211
0
  return manage(res);
14212
0
}
14213
14214
multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
14215
0
{
14216
0
  auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
14217
0
  return manage(res);
14218
0
}
14219
14220
union_map schedule_node::get_prefix_schedule_relation() const
14221
29
{
14222
29
  auto res = isl_schedule_node_get_prefix_schedule_relation(get());
14223
29
  return manage(res);
14224
29
}
14225
14226
union_map schedule_node::get_prefix_schedule_union_map() const
14227
12
{
14228
12
  auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
14229
12
  return manage(res);
14230
12
}
14231
14232
union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
14233
0
{
14234
0
  auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
14235
0
  return manage(res);
14236
0
}
14237
14238
schedule schedule_node::get_schedule() const
14239
188
{
14240
188
  auto res = isl_schedule_node_get_schedule(get());
14241
188
  return manage(res);
14242
188
}
14243
14244
int schedule_node::get_schedule_depth() const
14245
30
{
14246
30
  auto res = isl_schedule_node_get_schedule_depth(get());
14247
30
  return res;
14248
30
}
14249
14250
schedule_node schedule_node::get_shared_ancestor(const schedule_node &node2) const
14251
0
{
14252
0
  auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
14253
0
  return manage(res);
14254
0
}
14255
14256
union_pw_multi_aff schedule_node::get_subtree_contraction() const
14257
0
{
14258
0
  auto res = isl_schedule_node_get_subtree_contraction(get());
14259
0
  return manage(res);
14260
0
}
14261
14262
union_map schedule_node::get_subtree_expansion() const
14263
0
{
14264
0
  auto res = isl_schedule_node_get_subtree_expansion(get());
14265
0
  return manage(res);
14266
0
}
14267
14268
union_map schedule_node::get_subtree_schedule_union_map() const
14269
0
{
14270
0
  auto res = isl_schedule_node_get_subtree_schedule_union_map(get());
14271
0
  return manage(res);
14272
0
}
14273
14274
int schedule_node::get_tree_depth() const
14275
0
{
14276
0
  auto res = isl_schedule_node_get_tree_depth(get());
14277
0
  return res;
14278
0
}
14279
14280
union_set schedule_node::get_universe_domain() const
14281
14
{
14282
14
  auto res = isl_schedule_node_get_universe_domain(get());
14283
14
  return manage(res);
14284
14
}
14285
14286
schedule_node schedule_node::graft_after(schedule_node graft) const
14287
0
{
14288
0
  auto res = isl_schedule_node_graft_after(copy(), graft.release());
14289
0
  return manage(res);
14290
0
}
14291
14292
schedule_node schedule_node::graft_before(schedule_node graft) const
14293
24
{
14294
24
  auto res = isl_schedule_node_graft_before(copy(), graft.release());
14295
24
  return manage(res);
14296
24
}
14297
14298
schedule_node schedule_node::group(id group_id) const
14299
0
{
14300
0
  auto res = isl_schedule_node_group(copy(), group_id.release());
14301
0
  return manage(res);
14302
0
}
14303
14304
set schedule_node::guard_get_guard() const
14305
0
{
14306
0
  auto res = isl_schedule_node_guard_get_guard(get());
14307
0
  return manage(res);
14308
0
}
14309
14310
boolean schedule_node::has_children() const
14311
272
{
14312
272
  auto res = isl_schedule_node_has_children(get());
14313
272
  return manage(res);
14314
272
}
14315
14316
boolean schedule_node::has_next_sibling() const
14317
260
{
14318
260
  auto res = isl_schedule_node_has_next_sibling(get());
14319
260
  return manage(res);
14320
260
}
14321
14322
boolean schedule_node::has_parent() const
14323
0
{
14324
0
  auto res = isl_schedule_node_has_parent(get());
14325
0
  return manage(res);
14326
0
}
14327
14328
boolean schedule_node::has_previous_sibling() const
14329
0
{
14330
0
  auto res = isl_schedule_node_has_previous_sibling(get());
14331
0
  return manage(res);
14332
0
}
14333
14334
schedule_node schedule_node::insert_context(set context) const
14335
0
{
14336
0
  auto res = isl_schedule_node_insert_context(copy(), context.release());
14337
0
  return manage(res);
14338
0
}
14339
14340
schedule_node schedule_node::insert_filter(union_set filter) const
14341
0
{
14342
0
  auto res = isl_schedule_node_insert_filter(copy(), filter.release());
14343
0
  return manage(res);
14344
0
}
14345
14346
schedule_node schedule_node::insert_guard(set context) const
14347
0
{
14348
0
  auto res = isl_schedule_node_insert_guard(copy(), context.release());
14349
0
  return manage(res);
14350
0
}
14351
14352
schedule_node schedule_node::insert_mark(id mark) const
14353
241
{
14354
241
  auto res = isl_schedule_node_insert_mark(copy(), mark.release());
14355
241
  return manage(res);
14356
241
}
14357
14358
schedule_node schedule_node::insert_partial_schedule(multi_union_pw_aff schedule) const
14359
94
{
14360
94
  auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
14361
94
  return manage(res);
14362
94
}
14363
14364
schedule_node schedule_node::insert_sequence(union_set_list filters) const
14365
0
{
14366
0
  auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
14367
0
  return manage(res);
14368
0
}
14369
14370
schedule_node schedule_node::insert_set(union_set_list filters) const
14371
0
{
14372
0
  auto res = isl_schedule_node_insert_set(copy(), filters.release());
14373
0
  return manage(res);
14374
0
}
14375
14376
boolean schedule_node::is_equal(const schedule_node &node2) const
14377
0
{
14378
0
  auto res = isl_schedule_node_is_equal(get(), node2.get());
14379
0
  return manage(res);
14380
0
}
14381
14382
boolean schedule_node::is_subtree_anchored() const
14383
0
{
14384
0
  auto res = isl_schedule_node_is_subtree_anchored(get());
14385
0
  return manage(res);
14386
0
}
14387
14388
id schedule_node::mark_get_id() const
14389
80
{
14390
80
  auto res = isl_schedule_node_mark_get_id(get());
14391
80
  return manage(res);
14392
80
}
14393
14394
int schedule_node::n_children() const
14395
0
{
14396
0
  auto res = isl_schedule_node_n_children(get());
14397
0
  return res;
14398
0
}
14399
14400
schedule_node schedule_node::next_sibling() const
14401
28
{
14402
28
  auto res = isl_schedule_node_next_sibling(copy());
14403
28
  return manage(res);
14404
28
}
14405
14406
schedule_node schedule_node::order_after(union_set filter) const
14407
0
{
14408
0
  auto res = isl_schedule_node_order_after(copy(), filter.release());
14409
0
  return manage(res);
14410
0
}
14411
14412
schedule_node schedule_node::order_before(union_set filter) const
14413
0
{
14414
0
  auto res = isl_schedule_node_order_before(copy(), filter.release());
14415
0
  return manage(res);
14416
0
}
14417
14418
schedule_node schedule_node::parent() const
14419
484
{
14420
484
  auto res = isl_schedule_node_parent(copy());
14421
484
  return manage(res);
14422
484
}
14423
14424
schedule_node schedule_node::previous_sibling() const
14425
0
{
14426
0
  auto res = isl_schedule_node_previous_sibling(copy());
14427
0
  return manage(res);
14428
0
}
14429
14430
schedule_node schedule_node::reset_user() const
14431
0
{
14432
0
  auto res = isl_schedule_node_reset_user(copy());
14433
0
  return manage(res);
14434
0
}
14435
14436
schedule_node schedule_node::root() const
14437
0
{
14438
0
  auto res = isl_schedule_node_root(copy());
14439
0
  return manage(res);
14440
0
}
14441
14442
schedule_node schedule_node::sequence_splice_child(int pos) const
14443
0
{
14444
0
  auto res = isl_schedule_node_sequence_splice_child(copy(), pos);
14445
0
  return manage(res);
14446
0
}
14447
14448
// implementations for isl::set
14449
286k
set manage(__isl_take isl_set *ptr) {
14450
286k
  return set(ptr);
14451
286k
}
14452
14
set manage_copy(__isl_keep isl_set *ptr) {
14453
14
  ptr = isl_set_copy(ptr);
14454
14
  return set(ptr);
14455
14
}
14456
14457
set::set()
14458
27.7k
    : ptr(nullptr) {}
14459
14460
set::set(const set &obj)
14461
    : ptr(nullptr)
14462
579k
{
14463
579k
  ptr = obj.copy();
14464
579k
}
14465
set::set(std::nullptr_t)
14466
27.4k
    : ptr(nullptr) {}
14467
14468
14469
set::set(__isl_take isl_set *ptr)
14470
286k
    : ptr(ptr) {}
14471
14472
set::set(ctx ctx, const std::string &str)
14473
110
{
14474
110
  auto res = isl_set_read_from_str(ctx.release(), str.c_str());
14475
110
  ptr = res;
14476
110
}
14477
set::set(basic_set bset)
14478
2.10k
{
14479
2.10k
  auto res = isl_set_from_basic_set(bset.release());
14480
2.10k
  ptr = res;
14481
2.10k
}
14482
set::set(point pnt)
14483
{
14484
  auto res = isl_set_from_point(pnt.release());
14485
  ptr = res;
14486
}
14487
set::set(union_set uset)
14488
320
{
14489
320
  auto res = isl_set_from_union_set(uset.release());
14490
320
  ptr = res;
14491
320
}
14492
14493
274k
set &set::operator=(set obj) {
14494
274k
  std::swap(this->ptr, obj.ptr);
14495
274k
  return *this;
14496
274k
}
14497
14498
922k
set::~set() {
14499
922k
  if (ptr)
14500
666k
    isl_set_free(ptr);
14501
922k
}
14502
14503
769k
__isl_give isl_set *set::copy() const & {
14504
769k
  return isl_set_copy(ptr);
14505
769k
}
14506
14507
164k
__isl_keep isl_set *set::get() const {
14508
164k
  return ptr;
14509
164k
}
14510
14511
185k
__isl_give isl_set *set::release() {
14512
185k
  isl_set *tmp = ptr;
14513
185k
  ptr = nullptr;
14514
185k
  return tmp;
14515
185k
}
14516
14517
28.4k
bool set::is_null() const {
14518
28.4k
  return ptr == nullptr;
14519
28.4k
}
14520
27.9k
set::operator bool() const {
14521
27.9k
  return !is_null();
14522
27.9k
}
14523
14524
14525
1.28k
ctx set::get_ctx() const {
14526
1.28k
  return ctx(isl_set_get_ctx(ptr));
14527
1.28k
}
14528
3.14k
std::string set::to_str() const {
14529
3.14k
  char *Tmp = isl_set_to_str(get());
14530
3.14k
  if (!Tmp)
14531
0
    return "";
14532
3.14k
  std::string S(Tmp);
14533
3.14k
  free(Tmp);
14534
3.14k
  return S;
14535
3.14k
}
14536
14537
14538
0
void set::dump() const {
14539
0
  isl_set_dump(get());
14540
0
}
14541
14542
14543
set set::add_constraint(constraint constraint) const
14544
660
{
14545
660
  auto res = isl_set_add_constraint(copy(), constraint.release());
14546
660
  return manage(res);
14547
660
}
14548
14549
set set::add_dims(isl::dim type, unsigned int n) const
14550
1.54k
{
14551
1.54k
  auto res = isl_set_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
14552
1.54k
  return manage(res);
14553
1.54k
}
14554
14555
basic_set set::affine_hull() const
14556
650
{
14557
650
  auto res = isl_set_affine_hull(copy());
14558
650
  return manage(res);
14559
650
}
14560
14561
set set::align_params(space model) const
14562
8.08k
{
14563
8.08k
  auto res = isl_set_align_params(copy(), model.release());
14564
8.08k
  return manage(res);
14565
8.08k
}
14566
14567
set set::apply(map map) const
14568
8.82k
{
14569
8.82k
  auto res = isl_set_apply(copy(), map.release());
14570
8.82k
  return manage(res);
14571
8.82k
}
14572
14573
basic_set set::bounded_simple_hull() const
14574
0
{
14575
0
  auto res = isl_set_bounded_simple_hull(copy());
14576
0
  return manage(res);
14577
0
}
14578
14579
set set::box_from_points(point pnt1, point pnt2)
14580
0
{
14581
0
  auto res = isl_set_box_from_points(pnt1.release(), pnt2.release());
14582
0
  return manage(res);
14583
0
}
14584
14585
set set::coalesce() const
14586
13.5k
{
14587
13.5k
  auto res = isl_set_coalesce(copy());
14588
13.5k
  return manage(res);
14589
13.5k
}
14590
14591
basic_set set::coefficients() const
14592
0
{
14593
0
  auto res = isl_set_coefficients(copy());
14594
0
  return manage(res);
14595
0
}
14596
14597
set set::complement() const
14598
6.33k
{
14599
6.33k
  auto res = isl_set_complement(copy());
14600
6.33k
  return manage(res);
14601
6.33k
}
14602
14603
basic_set set::convex_hull() const
14604
0
{
14605
0
  auto res = isl_set_convex_hull(copy());
14606
0
  return manage(res);
14607
0
}
14608
14609
val set::count_val() const
14610
0
{
14611
0
  auto res = isl_set_count_val(get());
14612
0
  return manage(res);
14613
0
}
14614
14615
set set::detect_equalities() const
14616
4.57k
{
14617
4.57k
  auto res = isl_set_detect_equalities(copy());
14618
4.57k
  return manage(res);
14619
4.57k
}
14620
14621
unsigned int set::dim(isl::dim type) const
14622
4.95k
{
14623
4.95k
  auto res = isl_set_dim(get(), static_cast<enum isl_dim_type>(type));
14624
4.95k
  return res;
14625
4.95k
}
14626
14627
boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
14628
0
{
14629
0
  auto res = isl_set_dim_has_any_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14630
0
  return manage(res);
14631
0
}
14632
14633
boolean set::dim_has_any_upper_bound(isl::dim type, unsigned int pos) const
14634
0
{
14635
0
  auto res = isl_set_dim_has_any_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14636
0
  return manage(res);
14637
0
}
14638
14639
boolean set::dim_has_lower_bound(isl::dim type, unsigned int pos) const
14640
0
{
14641
0
  auto res = isl_set_dim_has_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14642
0
  return manage(res);
14643
0
}
14644
14645
boolean set::dim_has_upper_bound(isl::dim type, unsigned int pos) const
14646
0
{
14647
0
  auto res = isl_set_dim_has_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14648
0
  return manage(res);
14649
0
}
14650
14651
boolean set::dim_is_bounded(isl::dim type, unsigned int pos) const
14652
0
{
14653
0
  auto res = isl_set_dim_is_bounded(get(), static_cast<enum isl_dim_type>(type), pos);
14654
0
  return manage(res);
14655
0
}
14656
14657
pw_aff set::dim_max(int pos) const
14658
119
{
14659
119
  auto res = isl_set_dim_max(copy(), pos);
14660
119
  return manage(res);
14661
119
}
14662
14663
pw_aff set::dim_min(int pos) const
14664
39
{
14665
39
  auto res = isl_set_dim_min(copy(), pos);
14666
39
  return manage(res);
14667
39
}
14668
14669
set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
14670
44
{
14671
44
  auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14672
44
  return manage(res);
14673
44
}
14674
14675
set set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
14676
0
{
14677
0
  auto res = isl_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14678
0
  return manage(res);
14679
0
}
14680
14681
set set::drop_unused_params() const
14682
0
{
14683
0
  auto res = isl_set_drop_unused_params(copy());
14684
0
  return manage(res);
14685
0
}
14686
14687
set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
14688
111
{
14689
111
  auto res = isl_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
14690
111
  return manage(res);
14691
111
}
14692
14693
set set::empty(space space)
14694
43.0k
{
14695
43.0k
  auto res = isl_set_empty(space.release());
14696
43.0k
  return manage(res);
14697
43.0k
}
14698
14699
set set::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
14700
0
{
14701
0
  auto res = isl_set_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
14702
0
  return manage(res);
14703
0
}
14704
14705
int set::find_dim_by_id(isl::dim type, const id &id) const
14706
119
{
14707
119
  auto res = isl_set_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
14708
119
  return res;
14709
119
}
14710
14711
int set::find_dim_by_name(isl::dim type, const std::string &name) const
14712
0
{
14713
0
  auto res = isl_set_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
14714
0
  return res;
14715
0
}
14716
14717
set set::fix_si(isl::dim type, unsigned int pos, int value) const
14718
539
{
14719
539
  auto res = isl_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
14720
539
  return manage(res);
14721
539
}
14722
14723
set set::fix_val(isl::dim type, unsigned int pos, val v) const
14724
0
{
14725
0
  auto res = isl_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
14726
0
  return manage(res);
14727
0
}
14728
14729
set set::flat_product(set set2) const
14730
0
{
14731
0
  auto res = isl_set_flat_product(copy(), set2.release());
14732
0
  return manage(res);
14733
0
}
14734
14735
set set::flatten() const
14736
0
{
14737
0
  auto res = isl_set_flatten(copy());
14738
0
  return manage(res);
14739
0
}
14740
14741
map set::flatten_map() const
14742
0
{
14743
0
  auto res = isl_set_flatten_map(copy());
14744
0
  return manage(res);
14745
0
}
14746
14747
int set::follows_at(const set &set2, int pos) const
14748
0
{
14749
0
  auto res = isl_set_follows_at(get(), set2.get(), pos);
14750
0
  return res;
14751
0
}
14752
14753
stat set::foreach_basic_set(const std::function<stat(basic_set)> &fn) const
14754
{
14755
  struct fn_data {
14756
    const std::function<stat(basic_set)> *func;
14757
  } fn_data = { &fn };
14758
  auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
14759
    auto *data = static_cast<struct fn_data *>(arg_1);
14760
    stat ret = (*data->func)(manage(arg_0));
14761
    return ret.release();
14762
  };
14763
  auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
14764
  return manage(res);
14765
}
14766
14767
stat set::foreach_point(const std::function<stat(point)> &fn) const
14768
0
{
14769
0
  struct fn_data {
14770
0
    const std::function<stat(point)> *func;
14771
0
  } fn_data = { &fn };
14772
0
  auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
14773
0
    auto *data = static_cast<struct fn_data *>(arg_1);
14774
0
    stat ret = (*data->func)(manage(arg_0));
14775
0
    return ret.release();
14776
0
  };
14777
0
  auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
14778
0
  return manage(res);
14779
0
}
14780
14781
set set::from_multi_aff(multi_aff ma)
14782
0
{
14783
0
  auto res = isl_set_from_multi_aff(ma.release());
14784
0
  return manage(res);
14785
0
}
14786
14787
set set::from_multi_pw_aff(multi_pw_aff mpa)
14788
0
{
14789
0
  auto res = isl_set_from_multi_pw_aff(mpa.release());
14790
0
  return manage(res);
14791
0
}
14792
14793
set set::from_params() const
14794
0
{
14795
0
  auto res = isl_set_from_params(copy());
14796
0
  return manage(res);
14797
0
}
14798
14799
set set::from_pw_aff(pw_aff pwaff)
14800
0
{
14801
0
  auto res = isl_set_from_pw_aff(pwaff.release());
14802
0
  return manage(res);
14803
0
}
14804
14805
set set::from_pw_multi_aff(pw_multi_aff pma)
14806
0
{
14807
0
  auto res = isl_set_from_pw_multi_aff(pma.release());
14808
0
  return manage(res);
14809
0
}
14810
14811
basic_set_list set::get_basic_set_list() const
14812
2.11k
{
14813
2.11k
  auto res = isl_set_get_basic_set_list(get());
14814
2.11k
  return manage(res);
14815
2.11k
}
14816
14817
id set::get_dim_id(isl::dim type, unsigned int pos) const
14818
61
{
14819
61
  auto res = isl_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
14820
61
  return manage(res);
14821
61
}
14822
14823
std::string set::get_dim_name(isl::dim type, unsigned int pos) const
14824
2
{
14825
2
  auto res = isl_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
14826
2
  std::string tmp(res);
14827
2
  return tmp;
14828
2
}
14829
14830
space set::get_space() const
14831
42.2k
{
14832
42.2k
  auto res = isl_set_get_space(get());
14833
42.2k
  return manage(res);
14834
42.2k
}
14835
14836
val set::get_stride(int pos) const
14837
0
{
14838
0
  auto res = isl_set_get_stride(get(), pos);
14839
0
  return manage(res);
14840
0
}
14841
14842
id set::get_tuple_id() const
14843
357
{
14844
357
  auto res = isl_set_get_tuple_id(get());
14845
357
  return manage(res);
14846
357
}
14847
14848
std::string set::get_tuple_name() const
14849
49
{
14850
49
  auto res = isl_set_get_tuple_name(get());
14851
49
  std::string tmp(res);
14852
49
  return tmp;
14853
49
}
14854
14855
set set::gist(set context) const
14856
0
{
14857
0
  auto res = isl_set_gist(copy(), context.release());
14858
0
  return manage(res);
14859
0
}
14860
14861
set set::gist_basic_set(basic_set context) const
14862
0
{
14863
0
  auto res = isl_set_gist_basic_set(copy(), context.release());
14864
0
  return manage(res);
14865
0
}
14866
14867
set set::gist_params(set context) const
14868
24.5k
{
14869
24.5k
  auto res = isl_set_gist_params(copy(), context.release());
14870
24.5k
  return manage(res);
14871
24.5k
}
14872
14873
boolean set::has_dim_id(isl::dim type, unsigned int pos) const
14874
0
{
14875
0
  auto res = isl_set_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
14876
0
  return manage(res);
14877
0
}
14878
14879
boolean set::has_dim_name(isl::dim type, unsigned int pos) const
14880
0
{
14881
0
  auto res = isl_set_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
14882
0
  return manage(res);
14883
0
}
14884
14885
boolean set::has_equal_space(const set &set2) const
14886
287
{
14887
287
  auto res = isl_set_has_equal_space(get(), set2.get());
14888
287
  return manage(res);
14889
287
}
14890
14891
boolean set::has_tuple_id() const
14892
0
{
14893
0
  auto res = isl_set_has_tuple_id(get());
14894
0
  return manage(res);
14895
0
}
14896
14897
boolean set::has_tuple_name() const
14898
0
{
14899
0
  auto res = isl_set_has_tuple_name(get());
14900
0
  return manage(res);
14901
0
}
14902
14903
map set::identity() const
14904
0
{
14905
0
  auto res = isl_set_identity(copy());
14906
0
  return manage(res);
14907
0
}
14908
14909
pw_aff set::indicator_function() const
14910
0
{
14911
0
  auto res = isl_set_indicator_function(copy());
14912
0
  return manage(res);
14913
0
}
14914
14915
set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
14916
3.39k
{
14917
3.39k
  auto res = isl_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
14918
3.39k
  return manage(res);
14919
3.39k
}
14920
14921
set set::intersect(set set2) const
14922
20.2k
{
14923
20.2k
  auto res = isl_set_intersect(copy(), set2.release());
14924
20.2k
  return manage(res);
14925
20.2k
}
14926
14927
set set::intersect_params(set params) const
14928
4.88k
{
14929
4.88k
  auto res = isl_set_intersect_params(copy(), params.release());
14930
4.88k
  return manage(res);
14931
4.88k
}
14932
14933
boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
14934
74
{
14935
74
  auto res = isl_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
14936
74
  return manage(res);
14937
74
}
14938
14939
boolean set::is_bounded() const
14940
198
{
14941
198
  auto res = isl_set_is_bounded(get());
14942
198
  return manage(res);
14943
198
}
14944
14945
boolean set::is_box() const
14946
0
{
14947
0
  auto res = isl_set_is_box(get());
14948
0
  return manage(res);
14949
0
}
14950
14951
boolean set::is_disjoint(const set &set2) const
14952
4.76k
{
14953
4.76k
  auto res = isl_set_is_disjoint(get(), set2.get());
14954
4.76k
  return manage(res);
14955
4.76k
}
14956
14957
boolean set::is_empty() const
14958
28.0k
{
14959
28.0k
  auto res = isl_set_is_empty(get());
14960
28.0k
  return manage(res);
14961
28.0k
}
14962
14963
boolean set::is_equal(const set &set2) const
14964
55
{
14965
55
  auto res = isl_set_is_equal(get(), set2.get());
14966
55
  return manage(res);
14967
55
}
14968
14969
boolean set::is_params() const
14970
97
{
14971
97
  auto res = isl_set_is_params(get());
14972
97
  return manage(res);
14973
97
}
14974
14975
boolean set::is_singleton() const
14976
61
{
14977
61
  auto res = isl_set_is_singleton(get());
14978
61
  return manage(res);
14979
61
}
14980
14981
boolean set::is_strict_subset(const set &set2) const
14982
0
{
14983
0
  auto res = isl_set_is_strict_subset(get(), set2.get());
14984
0
  return manage(res);
14985
0
}
14986
14987
boolean set::is_subset(const set &set2) const
14988
24.0k
{
14989
24.0k
  auto res = isl_set_is_subset(get(), set2.get());
14990
24.0k
  return manage(res);
14991
24.0k
}
14992
14993
boolean set::is_wrapping() const
14994
0
{
14995
0
  auto res = isl_set_is_wrapping(get());
14996
0
  return manage(res);
14997
0
}
14998
14999
map set::lex_ge_set(set set2) const
15000
0
{
15001
0
  auto res = isl_set_lex_ge_set(copy(), set2.release());
15002
0
  return manage(res);
15003
0
}
15004
15005
map set::lex_gt_set(set set2) const
15006
0
{
15007
0
  auto res = isl_set_lex_gt_set(copy(), set2.release());
15008
0
  return manage(res);
15009
0
}
15010
15011
map set::lex_le_set(set set2) const
15012
89
{
15013
89
  auto res = isl_set_lex_le_set(copy(), set2.release());
15014
89
  return manage(res);
15015
89
}
15016
15017
map set::lex_lt_set(set set2) const
15018
0
{
15019
0
  auto res = isl_set_lex_lt_set(copy(), set2.release());
15020
0
  return manage(res);
15021
0
}
15022
15023
set set::lexmax() const
15024
0
{
15025
0
  auto res = isl_set_lexmax(copy());
15026
0
  return manage(res);
15027
0
}
15028
15029
pw_multi_aff set::lexmax_pw_multi_aff() const
15030
549
{
15031
549
  auto res = isl_set_lexmax_pw_multi_aff(copy());
15032
549
  return manage(res);
15033
549
}
15034
15035
set set::lexmin() const
15036
99
{
15037
99
  auto res = isl_set_lexmin(copy());
15038
99
  return manage(res);
15039
99
}
15040
15041
pw_multi_aff set::lexmin_pw_multi_aff() const
15042
549
{
15043
549
  auto res = isl_set_lexmin_pw_multi_aff(copy());
15044
549
  return manage(res);
15045
549
}
15046
15047
set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
15048
4.62k
{
15049
4.62k
  auto res = isl_set_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
15050
4.62k
  return manage(res);
15051
4.62k
}
15052
15053
set set::lower_bound_val(isl::dim type, unsigned int pos, val value) const
15054
1.23k
{
15055
1.23k
  auto res = isl_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
15056
1.23k
  return manage(res);
15057
1.23k
}
15058
15059
val set::max_val(const aff &obj) const
15060
0
{
15061
0
  auto res = isl_set_max_val(get(), obj.get());
15062
0
  return manage(res);
15063
0
}
15064
15065
val set::min_val(const aff &obj) const
15066
0
{
15067
0
  auto res = isl_set_min_val(get(), obj.get());
15068
0
  return manage(res);
15069
0
}
15070
15071
set set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
15072
0
{
15073
0
  auto res = isl_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
15074
0
  return manage(res);
15075
0
}
15076
15077
int set::n_basic_set() const
15078
5.64k
{
15079
5.64k
  auto res = isl_set_n_basic_set(get());
15080
5.64k
  return res;
15081
5.64k
}
15082
15083
unsigned int set::n_dim() const
15084
7.01k
{
15085
7.01k
  auto res = isl_set_n_dim(get());
15086
7.01k
  return res;
15087
7.01k
}
15088
15089
set set::nat_universe(space dim)
15090
0
{
15091
0
  auto res = isl_set_nat_universe(dim.release());
15092
0
  return manage(res);
15093
0
}
15094
15095
set set::neg() const
15096
0
{
15097
0
  auto res = isl_set_neg(copy());
15098
0
  return manage(res);
15099
0
}
15100
15101
set set::params() const
15102
10.6k
{
15103
10.6k
  auto res = isl_set_params(copy());
15104
10.6k
  return manage(res);
15105
10.6k
}
15106
15107
int set::plain_cmp(const set &set2) const
15108
0
{
15109
0
  auto res = isl_set_plain_cmp(get(), set2.get());
15110
0
  return res;
15111
0
}
15112
15113
val set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
15114
42
{
15115
42
  auto res = isl_set_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
15116
42
  return manage(res);
15117
42
}
15118
15119
boolean set::plain_is_disjoint(const set &set2) const
15120
0
{
15121
0
  auto res = isl_set_plain_is_disjoint(get(), set2.get());
15122
0
  return manage(res);
15123
0
}
15124
15125
boolean set::plain_is_empty() const
15126
0
{
15127
0
  auto res = isl_set_plain_is_empty(get());
15128
0
  return manage(res);
15129
0
}
15130
15131
boolean set::plain_is_equal(const set &set2) const
15132
0
{
15133
0
  auto res = isl_set_plain_is_equal(get(), set2.get());
15134
0
  return manage(res);
15135
0
}
15136
15137
boolean set::plain_is_universe() const
15138
0
{
15139
0
  auto res = isl_set_plain_is_universe(get());
15140
0
  return manage(res);
15141
0
}
15142
15143
basic_set set::plain_unshifted_simple_hull() const
15144
0
{
15145
0
  auto res = isl_set_plain_unshifted_simple_hull(copy());
15146
0
  return manage(res);
15147
0
}
15148
15149
basic_set set::polyhedral_hull() const
15150
0
{
15151
0
  auto res = isl_set_polyhedral_hull(copy());
15152
0
  return manage(res);
15153
0
}
15154
15155
set set::preimage_multi_aff(multi_aff ma) const
15156
0
{
15157
0
  auto res = isl_set_preimage_multi_aff(copy(), ma.release());
15158
0
  return manage(res);
15159
0
}
15160
15161
set set::preimage_multi_pw_aff(multi_pw_aff mpa) const
15162
0
{
15163
0
  auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
15164
0
  return manage(res);
15165
0
}
15166
15167
set set::preimage_pw_multi_aff(pw_multi_aff pma) const
15168
0
{
15169
0
  auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
15170
0
  return manage(res);
15171
0
}
15172
15173
set set::product(set set2) const
15174
0
{
15175
0
  auto res = isl_set_product(copy(), set2.release());
15176
0
  return manage(res);
15177
0
}
15178
15179
map set::project_onto_map(isl::dim type, unsigned int first, unsigned int n) const
15180
0
{
15181
0
  auto res = isl_set_project_onto_map(copy(), static_cast<enum isl_dim_type>(type), first, n);
15182
0
  return manage(res);
15183
0
}
15184
15185
set set::project_out(isl::dim type, unsigned int first, unsigned int n) const
15186
9.09k
{
15187
9.09k
  auto res = isl_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
15188
9.09k
  return manage(res);
15189
9.09k
}
15190
15191
set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
15192
1.69k
{
15193
1.69k
  auto res = isl_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15194
1.69k
  return manage(res);
15195
1.69k
}
15196
15197
set set::remove_divs() const
15198
5.24k
{
15199
5.24k
  auto res = isl_set_remove_divs(copy());
15200
5.24k
  return manage(res);
15201
5.24k
}
15202
15203
set set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
15204
0
{
15205
0
  auto res = isl_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15206
0
  return manage(res);
15207
0
}
15208
15209
set set::remove_redundancies() const
15210
1.56k
{
15211
1.56k
  auto res = isl_set_remove_redundancies(copy());
15212
1.56k
  return manage(res);
15213
1.56k
}
15214
15215
set set::remove_unknown_divs() const
15216
0
{
15217
0
  auto res = isl_set_remove_unknown_divs(copy());
15218
0
  return manage(res);
15219
0
}
15220
15221
set set::reset_space(space dim) const
15222
0
{
15223
0
  auto res = isl_set_reset_space(copy(), dim.release());
15224
0
  return manage(res);
15225
0
}
15226
15227
set set::reset_tuple_id() const
15228
5.98k
{
15229
5.98k
  auto res = isl_set_reset_tuple_id(copy());
15230
5.98k
  return manage(res);
15231
5.98k
}
15232
15233
set set::reset_user() const
15234
0
{
15235
0
  auto res = isl_set_reset_user(copy());
15236
0
  return manage(res);
15237
0
}
15238
15239
basic_set set::sample() const
15240
0
{
15241
0
  auto res = isl_set_sample(copy());
15242
0
  return manage(res);
15243
0
}
15244
15245
point set::sample_point() const
15246
0
{
15247
0
  auto res = isl_set_sample_point(copy());
15248
0
  return manage(res);
15249
0
}
15250
15251
set set::set_dim_id(isl::dim type, unsigned int pos, id id) const
15252
62
{
15253
62
  auto res = isl_set_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
15254
62
  return manage(res);
15255
62
}
15256
15257
set set::set_tuple_id(id id) const
15258
2.43k
{
15259
2.43k
  auto res = isl_set_set_tuple_id(copy(), id.release());
15260
2.43k
  return manage(res);
15261
2.43k
}
15262
15263
set set::set_tuple_name(const std::string &s) const
15264
0
{
15265
0
  auto res = isl_set_set_tuple_name(copy(), s.c_str());
15266
0
  return manage(res);
15267
0
}
15268
15269
basic_set set::simple_hull() const
15270
4
{
15271
4
  auto res = isl_set_simple_hull(copy());
15272
4
  return manage(res);
15273
4
}
15274
15275
int set::size() const
15276
0
{
15277
0
  auto res = isl_set_size(get());
15278
0
  return res;
15279
0
}
15280
15281
basic_set set::solutions() const
15282
0
{
15283
0
  auto res = isl_set_solutions(copy());
15284
0
  return manage(res);
15285
0
}
15286
15287
set set::split_dims(isl::dim type, unsigned int first, unsigned int n) const
15288
0
{
15289
0
  auto res = isl_set_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15290
0
  return manage(res);
15291
0
}
15292
15293
set set::subtract(set set2) const
15294
4.27k
{
15295
4.27k
  auto res = isl_set_subtract(copy(), set2.release());
15296
4.27k
  return manage(res);
15297
4.27k
}
15298
15299
set set::sum(set set2) const
15300
0
{
15301
0
  auto res = isl_set_sum(copy(), set2.release());
15302
0
  return manage(res);
15303
0
}
15304
15305
set set::unite(set set2) const
15306
39.3k
{
15307
39.3k
  auto res = isl_set_union(copy(), set2.release());
15308
39.3k
  return manage(res);
15309
39.3k
}
15310
15311
set set::universe(space space)
15312
15.0k
{
15313
15.0k
  auto res = isl_set_universe(space.release());
15314
15.0k
  return manage(res);
15315
15.0k
}
15316
15317
basic_set set::unshifted_simple_hull() const
15318
0
{
15319
0
  auto res = isl_set_unshifted_simple_hull(copy());
15320
0
  return manage(res);
15321
0
}
15322
15323
basic_set set::unshifted_simple_hull_from_set_list(set_list list) const
15324
0
{
15325
0
  auto res = isl_set_unshifted_simple_hull_from_set_list(copy(), list.release());
15326
0
  return manage(res);
15327
0
}
15328
15329
map set::unwrap() const
15330
229
{
15331
229
  auto res = isl_set_unwrap(copy());
15332
229
  return manage(res);
15333
229
}
15334
15335
set set::upper_bound_si(isl::dim type, unsigned int pos, int value) const
15336
0
{
15337
0
  auto res = isl_set_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
15338
0
  return manage(res);
15339
0
}
15340
15341
set set::upper_bound_val(isl::dim type, unsigned int pos, val value) const
15342
1.23k
{
15343
1.23k
  auto res = isl_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
15344
1.23k
  return manage(res);
15345
1.23k
}
15346
15347
map set::wrapped_domain_map() const
15348
0
{
15349
0
  auto res = isl_set_wrapped_domain_map(copy());
15350
0
  return manage(res);
15351
0
}
15352
15353
// implementations for isl::set_list
15354
2.88k
set_list manage(__isl_take isl_set_list *ptr) {
15355
2.88k
  return set_list(ptr);
15356
2.88k
}
15357
0
set_list manage_copy(__isl_keep isl_set_list *ptr) {
15358
0
  ptr = isl_set_list_copy(ptr);
15359
0
  return set_list(ptr);
15360
0
}
15361
15362
set_list::set_list()
15363
    : ptr(nullptr) {}
15364
15365
set_list::set_list(const set_list &obj)
15366
    : ptr(nullptr)
15367
{
15368
  ptr = obj.copy();
15369
}
15370
set_list::set_list(std::nullptr_t)
15371
    : ptr(nullptr) {}
15372
15373
15374
set_list::set_list(__isl_take isl_set_list *ptr)
15375
2.88k
    : ptr(ptr) {}
15376
15377
15378
0
set_list &set_list::operator=(set_list obj) {
15379
0
  std::swap(this->ptr, obj.ptr);
15380
0
  return *this;
15381
0
}
15382
15383
2.88k
set_list::~set_list() {
15384
2.88k
  if (ptr)
15385
2.88k
    isl_set_list_free(ptr);
15386
2.88k
}
15387
15388
0
__isl_give isl_set_list *set_list::copy() const & {
15389
0
  return isl_set_list_copy(ptr);
15390
0
}
15391
15392
6.88k
__isl_keep isl_set_list *set_list::get() const {
15393
6.88k
  return ptr;
15394
6.88k
}
15395
15396
0
__isl_give isl_set_list *set_list::release() {
15397
0
  isl_set_list *tmp = ptr;
15398
0
  ptr = nullptr;
15399
0
  return tmp;
15400
0
}
15401
15402
0
bool set_list::is_null() const {
15403
0
  return ptr == nullptr;
15404
0
}
15405
0
set_list::operator bool() const {
15406
0
  return !is_null();
15407
0
}
15408
15409
15410
0
ctx set_list::get_ctx() const {
15411
0
  return ctx(isl_set_list_get_ctx(ptr));
15412
0
}
15413
15414
0
void set_list::dump() const {
15415
0
  isl_set_list_dump(get());
15416
0
}
15417
15418
15419
set_list set_list::add(set el) const
15420
0
{
15421
0
  auto res = isl_set_list_add(copy(), el.release());
15422
0
  return manage(res);
15423
0
}
15424
15425
set_list set_list::alloc(ctx ctx, int n)
15426
0
{
15427
0
  auto res = isl_set_list_alloc(ctx.release(), n);
15428
0
  return manage(res);
15429
0
}
15430
15431
set_list set_list::concat(set_list list2) const
15432
0
{
15433
0
  auto res = isl_set_list_concat(copy(), list2.release());
15434
0
  return manage(res);
15435
0
}
15436
15437
set_list set_list::drop(unsigned int first, unsigned int n) const
15438
0
{
15439
0
  auto res = isl_set_list_drop(copy(), first, n);
15440
0
  return manage(res);
15441
0
}
15442
15443
stat set_list::foreach(const std::function<stat(set)> &fn) const
15444
0
{
15445
0
  struct fn_data {
15446
0
    const std::function<stat(set)> *func;
15447
0
  } fn_data = { &fn };
15448
0
  auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
15449
0
    auto *data = static_cast<struct fn_data *>(arg_1);
15450
0
    stat ret = (*data->func)(manage(arg_0));
15451
0
    return ret.release();
15452
0
  };
15453
0
  auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
15454
0
  return manage(res);
15455
0
}
15456
15457
set_list set_list::from_set(set el)
15458
0
{
15459
0
  auto res = isl_set_list_from_set(el.release());
15460
0
  return manage(res);
15461
0
}
15462
15463
set set_list::get_at(int index) const
15464
4.00k
{
15465
4.00k
  auto res = isl_set_list_get_at(get(), index);
15466
4.00k
  return manage(res);
15467
4.00k
}
15468
15469
set set_list::get_set(int index) const
15470
0
{
15471
0
  auto res = isl_set_list_get_set(get(), index);
15472
0
  return manage(res);
15473
0
}
15474
15475
set_list set_list::insert(unsigned int pos, set el) const
15476
0
{
15477
0
  auto res = isl_set_list_insert(copy(), pos, el.release());
15478
0
  return manage(res);
15479
0
}
15480
15481
int set_list::n_set() const
15482
0
{
15483
0
  auto res = isl_set_list_n_set(get());
15484
0
  return res;
15485
0
}
15486
15487
set_list set_list::reverse() const
15488
0
{
15489
0
  auto res = isl_set_list_reverse(copy());
15490
0
  return manage(res);
15491
0
}
15492
15493
set_list set_list::set_set(int index, set el) const
15494
0
{
15495
0
  auto res = isl_set_list_set_set(copy(), index, el.release());
15496
0
  return manage(res);
15497
0
}
15498
15499
int set_list::size() const
15500
2.88k
{
15501
2.88k
  auto res = isl_set_list_size(get());
15502
2.88k
  return res;
15503
2.88k
}
15504
15505
set_list set_list::swap(unsigned int pos1, unsigned int pos2) const
15506
0
{
15507
0
  auto res = isl_set_list_swap(copy(), pos1, pos2);
15508
0
  return manage(res);
15509
0
}
15510
15511
set set_list::unite() const
15512
0
{
15513
0
  auto res = isl_set_list_union(copy());
15514
0
  return manage(res);
15515
0
}
15516
15517
// implementations for isl::space
15518
99.0k
space manage(__isl_take isl_space *ptr) {
15519
99.0k
  return space(ptr);
15520
99.0k
}
15521
0
space manage_copy(__isl_keep isl_space *ptr) {
15522
0
  ptr = isl_space_copy(ptr);
15523
0
  return space(ptr);
15524
0
}
15525
15526
space::space()
15527
556
    : ptr(nullptr) {}
15528
15529
space::space(const space &obj)
15530
    : ptr(nullptr)
15531
39.4k
{
15532
39.4k
  ptr = obj.copy();
15533
39.4k
}
15534
space::space(std::nullptr_t)
15535
0
    : ptr(nullptr) {}
15536
15537
15538
space::space(__isl_take isl_space *ptr)
15539
99.0k
    : ptr(ptr) {}
15540
15541
space::space(ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out)
15542
4.72k
{
15543
4.72k
  auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out);
15544
4.72k
  ptr = res;
15545
4.72k
}
15546
space::space(ctx ctx, unsigned int nparam, unsigned int dim)
15547
25.6k
{
15548
25.6k
  auto res = isl_space_set_alloc(ctx.release(), nparam, dim);
15549
25.6k
  ptr = res;
15550
25.6k
}
15551
15552
14.0k
space &space::operator=(space obj) {
15553
14.0k
  std::swap(this->ptr, obj.ptr);
15554
14.0k
  return *this;
15555
14.0k
}
15556
15557
169k
space::~space() {
15558
169k
  if (ptr)
15559
68.8k
    isl_space_free(ptr);
15560
169k
}
15561
15562
71.9k
__isl_give isl_space *space::copy() const & {
15563
71.9k
  return isl_space_copy(ptr);
15564
71.9k
}
15565
15566
24.5k
__isl_keep isl_space *space::get() const {
15567
24.5k
  return ptr;
15568
24.5k
}
15569
15570
100k
__isl_give isl_space *space::release() {
15571
100k
  isl_space *tmp = ptr;
15572
100k
  ptr = nullptr;
15573
100k
  return tmp;
15574
100k
}
15575
15576
392
bool space::is_null() const {
15577
392
  return ptr == nullptr;
15578
392
}
15579
392
space::operator bool() const {
15580
392
  return !is_null();
15581
392
}
15582
15583
15584
4.74k
ctx space::get_ctx() const {
15585
4.74k
  return ctx(isl_space_get_ctx(ptr));
15586
4.74k
}
15587
2
std::string space::to_str() const {
15588
2
  char *Tmp = isl_space_to_str(get());
15589
2
  if (!Tmp)
15590
0
    return "";
15591
2
  std::string S(Tmp);
15592
2
  free(Tmp);
15593
2
  return S;
15594
2
}
15595
15596
15597
0
void space::dump() const {
15598
0
  isl_space_dump(get());
15599
0
}
15600
15601
15602
space space::add_dims(isl::dim type, unsigned int n) const
15603
645
{
15604
645
  auto res = isl_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
15605
645
  return manage(res);
15606
645
}
15607
15608
space space::add_param_id(id id) const
15609
0
{
15610
0
  auto res = isl_space_add_param_id(copy(), id.release());
15611
0
  return manage(res);
15612
0
}
15613
15614
space space::align_params(space dim2) const
15615
620
{
15616
620
  auto res = isl_space_align_params(copy(), dim2.release());
15617
620
  return manage(res);
15618
620
}
15619
15620
boolean space::can_curry() const
15621
0
{
15622
0
  auto res = isl_space_can_curry(get());
15623
0
  return manage(res);
15624
0
}
15625
15626
boolean space::can_range_curry() const
15627
0
{
15628
0
  auto res = isl_space_can_range_curry(get());
15629
0
  return manage(res);
15630
0
}
15631
15632
boolean space::can_uncurry() const
15633
0
{
15634
0
  auto res = isl_space_can_uncurry(get());
15635
0
  return manage(res);
15636
0
}
15637
15638
boolean space::can_zip() const
15639
0
{
15640
0
  auto res = isl_space_can_zip(get());
15641
0
  return manage(res);
15642
0
}
15643
15644
space space::curry() const
15645
0
{
15646
0
  auto res = isl_space_curry(copy());
15647
0
  return manage(res);
15648
0
}
15649
15650
unsigned int space::dim(isl::dim type) const
15651
15.9k
{
15652
15.9k
  auto res = isl_space_dim(get(), static_cast<enum isl_dim_type>(type));
15653
15.9k
  return res;
15654
15.9k
}
15655
15656
space space::domain() const
15657
1.80k
{
15658
1.80k
  auto res = isl_space_domain(copy());
15659
1.80k
  return manage(res);
15660
1.80k
}
15661
15662
space space::domain_factor_domain() const
15663
0
{
15664
0
  auto res = isl_space_domain_factor_domain(copy());
15665
0
  return manage(res);
15666
0
}
15667
15668
space space::domain_factor_range() const
15669
0
{
15670
0
  auto res = isl_space_domain_factor_range(copy());
15671
0
  return manage(res);
15672
0
}
15673
15674
boolean space::domain_is_wrapping() const
15675
0
{
15676
0
  auto res = isl_space_domain_is_wrapping(get());
15677
0
  return manage(res);
15678
0
}
15679
15680
space space::domain_map() const
15681
0
{
15682
0
  auto res = isl_space_domain_map(copy());
15683
0
  return manage(res);
15684
0
}
15685
15686
space space::domain_product(space right) const
15687
0
{
15688
0
  auto res = isl_space_domain_product(copy(), right.release());
15689
0
  return manage(res);
15690
0
}
15691
15692
space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const
15693
3
{
15694
3
  auto res = isl_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, num);
15695
3
  return manage(res);
15696
3
}
15697
15698
space space::factor_domain() const
15699
0
{
15700
0
  auto res = isl_space_factor_domain(copy());
15701
0
  return manage(res);
15702
0
}
15703
15704
space space::factor_range() const
15705
0
{
15706
0
  auto res = isl_space_factor_range(copy());
15707
0
  return manage(res);
15708
0
}
15709
15710
int space::find_dim_by_id(isl::dim type, const id &id) const
15711
277
{
15712
277
  auto res = isl_space_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
15713
277
  return res;
15714
277
}
15715
15716
int space::find_dim_by_name(isl::dim type, const std::string &name) const
15717
0
{
15718
0
  auto res = isl_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
15719
0
  return res;
15720
0
}
15721
15722
space space::flatten_domain() const
15723
0
{
15724
0
  auto res = isl_space_flatten_domain(copy());
15725
0
  return manage(res);
15726
0
}
15727
15728
space space::flatten_range() const
15729
0
{
15730
0
  auto res = isl_space_flatten_range(copy());
15731
0
  return manage(res);
15732
0
}
15733
15734
space space::from_domain() const
15735
0
{
15736
0
  auto res = isl_space_from_domain(copy());
15737
0
  return manage(res);
15738
0
}
15739
15740
space space::from_range() const
15741
0
{
15742
0
  auto res = isl_space_from_range(copy());
15743
0
  return manage(res);
15744
0
}
15745
15746
id space::get_dim_id(isl::dim type, unsigned int pos) const
15747
278
{
15748
278
  auto res = isl_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15749
278
  return manage(res);
15750
278
}
15751
15752
std::string space::get_dim_name(isl::dim type, unsigned int pos) const
15753
0
{
15754
0
  auto res = isl_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
15755
0
  std::string tmp(res);
15756
0
  return tmp;
15757
0
}
15758
15759
id space::get_tuple_id(isl::dim type) const
15760
6.39k
{
15761
6.39k
  auto res = isl_space_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
15762
6.39k
  return manage(res);
15763
6.39k
}
15764
15765
std::string space::get_tuple_name(isl::dim type) const
15766
0
{
15767
0
  auto res = isl_space_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
15768
0
  std::string tmp(res);
15769
0
  return tmp;
15770
0
}
15771
15772
boolean space::has_dim_id(isl::dim type, unsigned int pos) const
15773
0
{
15774
0
  auto res = isl_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15775
0
  return manage(res);
15776
0
}
15777
15778
boolean space::has_dim_name(isl::dim type, unsigned int pos) const
15779
0
{
15780
0
  auto res = isl_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
15781
0
  return manage(res);
15782
0
}
15783
15784
boolean space::has_equal_params(const space &space2) const
15785
0
{
15786
0
  auto res = isl_space_has_equal_params(get(), space2.get());
15787
0
  return manage(res);
15788
0
}
15789
15790
boolean space::has_equal_tuples(const space &space2) const
15791
0
{
15792
0
  auto res = isl_space_has_equal_tuples(get(), space2.get());
15793
0
  return manage(res);
15794
0
}
15795
15796
boolean space::has_tuple_id(isl::dim type) const
15797
678
{
15798
678
  auto res = isl_space_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
15799
678
  return manage(res);
15800
678
}
15801
15802
boolean space::has_tuple_name(isl::dim type) const
15803
0
{
15804
0
  auto res = isl_space_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
15805
0
  return manage(res);
15806
0
}
15807
15808
space space::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
15809
0
{
15810
0
  auto res = isl_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
15811
0
  return manage(res);
15812
0
}
15813
15814
boolean space::is_domain(const space &space2) const
15815
0
{
15816
0
  auto res = isl_space_is_domain(get(), space2.get());
15817
0
  return manage(res);
15818
0
}
15819
15820
boolean space::is_equal(const space &space2) const
15821
{
15822
  auto res = isl_space_is_equal(get(), space2.get());
15823
  return manage(res);
15824
}
15825
15826
boolean space::is_map() const
15827
0
{
15828
0
  auto res = isl_space_is_map(get());
15829
0
  return manage(res);
15830
0
}
15831
15832
boolean space::is_params() const
15833
0
{
15834
0
  auto res = isl_space_is_params(get());
15835
0
  return manage(res);
15836
0
}
15837
15838
boolean space::is_product() const
15839
0
{
15840
0
  auto res = isl_space_is_product(get());
15841
0
  return manage(res);
15842
0
}
15843
15844
boolean space::is_range(const space &space2) const
15845
0
{
15846
0
  auto res = isl_space_is_range(get(), space2.get());
15847
0
  return manage(res);
15848
0
}
15849
15850
boolean space::is_set() const
15851
0
{
15852
0
  auto res = isl_space_is_set(get());
15853
0
  return manage(res);
15854
0
}
15855
15856
boolean space::is_wrapping() const
15857
654
{
15858
654
  auto res = isl_space_is_wrapping(get());
15859
654
  return manage(res);
15860
654
}
15861
15862
space space::join(space right) const
15863
0
{
15864
0
  auto res = isl_space_join(copy(), right.release());
15865
0
  return manage(res);
15866
0
}
15867
15868
space space::map_from_domain_and_range(space range) const
15869
2.90k
{
15870
2.90k
  auto res = isl_space_map_from_domain_and_range(copy(), range.release());
15871
2.90k
  return manage(res);
15872
2.90k
}
15873
15874
space space::map_from_set() const
15875
2.47k
{
15876
2.47k
  auto res = isl_space_map_from_set(copy());
15877
2.47k
  return manage(res);
15878
2.47k
}
15879
15880
space space::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
15881
0
{
15882
0
  auto res = isl_space_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
15883
0
  return manage(res);
15884
0
}
15885
15886
space space::params() const
15887
59
{
15888
59
  auto res = isl_space_params(copy());
15889
59
  return manage(res);
15890
59
}
15891
15892
space space::params_alloc(ctx ctx, unsigned int nparam)
15893
2.46k
{
15894
2.46k
  auto res = isl_space_params_alloc(ctx.release(), nparam);
15895
2.46k
  return manage(res);
15896
2.46k
}
15897
15898
space space::product(space right) const
15899
0
{
15900
0
  auto res = isl_space_product(copy(), right.release());
15901
0
  return manage(res);
15902
0
}
15903
15904
space space::range() const
15905
13.0k
{
15906
13.0k
  auto res = isl_space_range(copy());
15907
13.0k
  return manage(res);
15908
13.0k
}
15909
15910
space space::range_curry() const
15911
0
{
15912
0
  auto res = isl_space_range_curry(copy());
15913
0
  return manage(res);
15914
0
}
15915
15916
space space::range_factor_domain() const
15917
0
{
15918
0
  auto res = isl_space_range_factor_domain(copy());
15919
0
  return manage(res);
15920
0
}
15921
15922
space space::range_factor_range() const
15923
0
{
15924
0
  auto res = isl_space_range_factor_range(copy());
15925
0
  return manage(res);
15926
0
}
15927
15928
boolean space::range_is_wrapping() const
15929
0
{
15930
0
  auto res = isl_space_range_is_wrapping(get());
15931
0
  return manage(res);
15932
0
}
15933
15934
space space::range_map() const
15935
0
{
15936
0
  auto res = isl_space_range_map(copy());
15937
0
  return manage(res);
15938
0
}
15939
15940
space space::range_product(space right) const
15941
0
{
15942
0
  auto res = isl_space_range_product(copy(), right.release());
15943
0
  return manage(res);
15944
0
}
15945
15946
space space::reset_tuple_id(isl::dim type) const
15947
0
{
15948
0
  auto res = isl_space_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
15949
0
  return manage(res);
15950
0
}
15951
15952
space space::reset_user() const
15953
0
{
15954
0
  auto res = isl_space_reset_user(copy());
15955
0
  return manage(res);
15956
0
}
15957
15958
space space::reverse() const
15959
0
{
15960
0
  auto res = isl_space_reverse(copy());
15961
0
  return manage(res);
15962
0
}
15963
15964
space space::set_dim_id(isl::dim type, unsigned int pos, id id) const
15965
1.22k
{
15966
1.22k
  auto res = isl_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
15967
1.22k
  return manage(res);
15968
1.22k
}
15969
15970
space space::set_from_params() const
15971
1.17k
{
15972
1.17k
  auto res = isl_space_set_from_params(copy());
15973
1.17k
  return manage(res);
15974
1.17k
}
15975
15976
space space::set_tuple_id(isl::dim type, id id) const
15977
6.09k
{
15978
6.09k
  auto res = isl_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
15979
6.09k
  return manage(res);
15980
6.09k
}
15981
15982
space space::set_tuple_name(isl::dim type, const std::string &s) const
15983
0
{
15984
0
  auto res = isl_space_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
15985
0
  return manage(res);
15986
0
}
15987
15988
boolean space::tuple_is_equal(isl::dim type1, const space &space2, isl::dim type2) const
15989
0
{
15990
0
  auto res = isl_space_tuple_is_equal(get(), static_cast<enum isl_dim_type>(type1), space2.get(), static_cast<enum isl_dim_type>(type2));
15991
0
  return manage(res);
15992
0
}
15993
15994
space space::uncurry() const
15995
0
{
15996
0
  auto res = isl_space_uncurry(copy());
15997
0
  return manage(res);
15998
0
}
15999
16000
space space::unwrap() const
16001
1.28k
{
16002
1.28k
  auto res = isl_space_unwrap(copy());
16003
1.28k
  return manage(res);
16004
1.28k
}
16005
16006
space space::wrap() const
16007
1.10k
{
16008
1.10k
  auto res = isl_space_wrap(copy());
16009
1.10k
  return manage(res);
16010
1.10k
}
16011
16012
space space::zip() const
16013
0
{
16014
0
  auto res = isl_space_zip(copy());
16015
0
  return manage(res);
16016
0
}
16017
16018
// implementations for isl::term
16019
0
term manage(__isl_take isl_term *ptr) {
16020
0
  return term(ptr);
16021
0
}
16022
0
term manage_copy(__isl_keep isl_term *ptr) {
16023
0
  ptr = isl_term_copy(ptr);
16024
0
  return term(ptr);
16025
0
}
16026
16027
term::term()
16028
    : ptr(nullptr) {}
16029
16030
term::term(const term &obj)
16031
    : ptr(nullptr)
16032
{
16033
  ptr = obj.copy();
16034
}
16035
term::term(std::nullptr_t)
16036
    : ptr(nullptr) {}
16037
16038
16039
term::term(__isl_take isl_term *ptr)
16040
    : ptr(ptr) {}
16041
16042
16043
0
term &term::operator=(term obj) {
16044
0
  std::swap(this->ptr, obj.ptr);
16045
0
  return *this;
16046
0
}
16047
16048
term::~term() {
16049
  if (ptr)
16050
    isl_term_free(ptr);
16051
}
16052
16053
0
__isl_give isl_term *term::copy() const & {
16054
0
  return isl_term_copy(ptr);
16055
0
}
16056
16057
0
__isl_keep isl_term *term::get() const {
16058
0
  return ptr;
16059
0
}
16060
16061
0
__isl_give isl_term *term::release() {
16062
0
  isl_term *tmp = ptr;
16063
0
  ptr = nullptr;
16064
0
  return tmp;
16065
0
}
16066
16067
0
bool term::is_null() const {
16068
0
  return ptr == nullptr;
16069
0
}
16070
0
term::operator bool() const {
16071
0
  return !is_null();
16072
0
}
16073
16074
16075
0
ctx term::get_ctx() const {
16076
0
  return ctx(isl_term_get_ctx(ptr));
16077
0
}
16078
16079
16080
unsigned int term::dim(isl::dim type) const
16081
0
{
16082
0
  auto res = isl_term_dim(get(), static_cast<enum isl_dim_type>(type));
16083
0
  return res;
16084
0
}
16085
16086
val term::get_coefficient_val() const
16087
0
{
16088
0
  auto res = isl_term_get_coefficient_val(get());
16089
0
  return manage(res);
16090
0
}
16091
16092
aff term::get_div(unsigned int pos) const
16093
0
{
16094
0
  auto res = isl_term_get_div(get(), pos);
16095
0
  return manage(res);
16096
0
}
16097
16098
int term::get_exp(isl::dim type, unsigned int pos) const
16099
0
{
16100
0
  auto res = isl_term_get_exp(get(), static_cast<enum isl_dim_type>(type), pos);
16101
0
  return res;
16102
0
}
16103
16104
// implementations for isl::union_access_info
16105
0
union_access_info manage(__isl_take isl_union_access_info *ptr) {
16106
0
  return union_access_info(ptr);
16107
0
}
16108
0
union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
16109
0
  ptr = isl_union_access_info_copy(ptr);
16110
0
  return union_access_info(ptr);
16111
0
}
16112
16113
union_access_info::union_access_info()
16114
    : ptr(nullptr) {}
16115
16116
union_access_info::union_access_info(const union_access_info &obj)
16117
    : ptr(nullptr)
16118
{
16119
  ptr = obj.copy();
16120
}
16121
union_access_info::union_access_info(std::nullptr_t)
16122
    : ptr(nullptr) {}
16123
16124
16125
union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
16126
    : ptr(ptr) {}
16127
16128
union_access_info::union_access_info(union_map sink)
16129
{
16130
  auto res = isl_union_access_info_from_sink(sink.release());
16131
  ptr = res;
16132
}
16133
16134
0
union_access_info &union_access_info::operator=(union_access_info obj) {
16135
0
  std::swap(this->ptr, obj.ptr);
16136
0
  return *this;
16137
0
}
16138
16139
union_access_info::~union_access_info() {
16140
  if (ptr)
16141
    isl_union_access_info_free(ptr);
16142
}
16143
16144
0
__isl_give isl_union_access_info *union_access_info::copy() const & {
16145
0
  return isl_union_access_info_copy(ptr);
16146
0
}
16147
16148
0
__isl_keep isl_union_access_info *union_access_info::get() const {
16149
0
  return ptr;
16150
0
}
16151
16152
0
__isl_give isl_union_access_info *union_access_info::release() {
16153
0
  isl_union_access_info *tmp = ptr;
16154
0
  ptr = nullptr;
16155
0
  return tmp;
16156
0
}
16157
16158
0
bool union_access_info::is_null() const {
16159
0
  return ptr == nullptr;
16160
0
}
16161
0
union_access_info::operator bool() const {
16162
0
  return !is_null();
16163
0
}
16164
16165
16166
0
ctx union_access_info::get_ctx() const {
16167
0
  return ctx(isl_union_access_info_get_ctx(ptr));
16168
0
}
16169
0
std::string union_access_info::to_str() const {
16170
0
  char *Tmp = isl_union_access_info_to_str(get());
16171
0
  if (!Tmp)
16172
0
    return "";
16173
0
  std::string S(Tmp);
16174
0
  free(Tmp);
16175
0
  return S;
16176
0
}
16177
16178
16179
16180
union_flow union_access_info::compute_flow() const
16181
0
{
16182
0
  auto res = isl_union_access_info_compute_flow(copy());
16183
0
  return manage(res);
16184
0
}
16185
16186
union_access_info union_access_info::set_kill(union_map kill) const
16187
0
{
16188
0
  auto res = isl_union_access_info_set_kill(copy(), kill.release());
16189
0
  return manage(res);
16190
0
}
16191
16192
union_access_info union_access_info::set_may_source(union_map may_source) const
16193
0
{
16194
0
  auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
16195
0
  return manage(res);
16196
0
}
16197
16198
union_access_info union_access_info::set_must_source(union_map must_source) const
16199
0
{
16200
0
  auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
16201
0
  return manage(res);
16202
0
}
16203
16204
union_access_info union_access_info::set_schedule(schedule schedule) const
16205
0
{
16206
0
  auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
16207
0
  return manage(res);
16208
0
}
16209
16210
union_access_info union_access_info::set_schedule_map(union_map schedule_map) const
16211
0
{
16212
0
  auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
16213
0
  return manage(res);
16214
0
}
16215
16216
// implementations for isl::union_flow
16217
0
union_flow manage(__isl_take isl_union_flow *ptr) {
16218
0
  return union_flow(ptr);
16219
0
}
16220
0
union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
16221
0
  ptr = isl_union_flow_copy(ptr);
16222
0
  return union_flow(ptr);
16223
0
}
16224
16225
union_flow::union_flow()
16226
    : ptr(nullptr) {}
16227
16228
union_flow::union_flow(const union_flow &obj)
16229
    : ptr(nullptr)
16230
{
16231
  ptr = obj.copy();
16232
}
16233
union_flow::union_flow(std::nullptr_t)
16234
    : ptr(nullptr) {}
16235
16236
16237
union_flow::union_flow(__isl_take isl_union_flow *ptr)
16238
    : ptr(ptr) {}
16239
16240
16241
0
union_flow &union_flow::operator=(union_flow obj) {
16242
0
  std::swap(this->ptr, obj.ptr);
16243
0
  return *this;
16244
0
}
16245
16246
union_flow::~union_flow() {
16247
  if (ptr)
16248
    isl_union_flow_free(ptr);
16249
}
16250
16251
0
__isl_give isl_union_flow *union_flow::copy() const & {
16252
0
  return isl_union_flow_copy(ptr);
16253
0
}
16254
16255
0
__isl_keep isl_union_flow *union_flow::get() const {
16256
0
  return ptr;
16257
0
}
16258
16259
0
__isl_give isl_union_flow *union_flow::release() {
16260
0
  isl_union_flow *tmp = ptr;
16261
0
  ptr = nullptr;
16262
0
  return tmp;
16263
0
}
16264
16265
0
bool union_flow::is_null() const {
16266
0
  return ptr == nullptr;
16267
0
}
16268
0
union_flow::operator bool() const {
16269
0
  return !is_null();
16270
0
}
16271
16272
16273
0
ctx union_flow::get_ctx() const {
16274
0
  return ctx(isl_union_flow_get_ctx(ptr));
16275
0
}
16276
0
std::string union_flow::to_str() const {
16277
0
  char *Tmp = isl_union_flow_to_str(get());
16278
0
  if (!Tmp)
16279
0
    return "";
16280
0
  std::string S(Tmp);
16281
0
  free(Tmp);
16282
0
  return S;
16283
0
}
16284
16285
16286
16287
union_map union_flow::get_full_may_dependence() const
16288
0
{
16289
0
  auto res = isl_union_flow_get_full_may_dependence(get());
16290
0
  return manage(res);
16291
0
}
16292
16293
union_map union_flow::get_full_must_dependence() const
16294
0
{
16295
0
  auto res = isl_union_flow_get_full_must_dependence(get());
16296
0
  return manage(res);
16297
0
}
16298
16299
union_map union_flow::get_may_dependence() const
16300
0
{
16301
0
  auto res = isl_union_flow_get_may_dependence(get());
16302
0
  return manage(res);
16303
0
}
16304
16305
union_map union_flow::get_may_no_source() const
16306
0
{
16307
0
  auto res = isl_union_flow_get_may_no_source(get());
16308
0
  return manage(res);
16309
0
}
16310
16311
union_map union_flow::get_must_dependence() const
16312
0
{
16313
0
  auto res = isl_union_flow_get_must_dependence(get());
16314
0
  return manage(res);
16315
0
}
16316
16317
union_map union_flow::get_must_no_source() const
16318
0
{
16319
0
  auto res = isl_union_flow_get_must_no_source(get());
16320
0
  return manage(res);
16321
0
}
16322
16323
// implementations for isl::union_map
16324
41.0k
union_map manage(__isl_take isl_union_map *ptr) {
16325
41.0k
  return union_map(ptr);
16326
41.0k
}
16327
2.74k
union_map manage_copy(__isl_keep isl_union_map *ptr) {
16328
2.74k
  ptr = isl_union_map_copy(ptr);
16329
2.74k
  return union_map(ptr);
16330
2.74k
}
16331
16332
union_map::union_map()
16333
1.57k
    : ptr(nullptr) {}
16334
16335
union_map::union_map(const union_map &obj)
16336
    : ptr(nullptr)
16337
19.5k
{
16338
19.5k
  ptr = obj.copy();
16339
19.5k
}
16340
union_map::union_map(std::nullptr_t)
16341
80
    : ptr(nullptr) {}
16342
16343
16344
union_map::union_map(__isl_take isl_union_map *ptr)
16345
43.7k
    : ptr(ptr) {}
16346
16347
union_map::union_map(union_pw_multi_aff upma)
16348
138
{
16349
138
  auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
16350
138
  ptr = res;
16351
138
}
16352
union_map::union_map(basic_map bmap)
16353
{
16354
  auto res = isl_union_map_from_basic_map(bmap.release());
16355
  ptr = res;
16356
}
16357
union_map::union_map(map map)
16358
1.86k
{
16359
1.86k
  auto res = isl_union_map_from_map(map.release());
16360
1.86k
  ptr = res;
16361
1.86k
}
16362
union_map::union_map(ctx ctx, const std::string &str)
16363
{
16364
  auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
16365
  ptr = res;
16366
}
16367
16368
20.9k
union_map &union_map::operator=(union_map obj) {
16369
20.9k
  std::swap(this->ptr, obj.ptr);
16370
20.9k
  return *this;
16371
20.9k
}
16372
16373
67.3k
union_map::~union_map() {
16374
67.3k
  if (ptr)
16375
54.3k
    isl_union_map_free(ptr);
16376
67.3k
}
16377
16378
55.8k
__isl_give isl_union_map *union_map::copy() const & {
16379
55.8k
  return isl_union_map_copy(ptr);
16380
55.8k
}
16381
16382
11.8k
__isl_keep isl_union_map *union_map::get() const {
16383
11.8k
  return ptr;
16384
11.8k
}
16385
16386
11.1k
__isl_give isl_union_map *union_map::release() {
16387
11.1k
  isl_union_map *tmp = ptr;
16388
11.1k
  ptr = nullptr;
16389
11.1k
  return tmp;
16390
11.1k
}
16391
16392
3.63k
bool union_map::is_null() const {
16393
3.63k
  return ptr == nullptr;
16394
3.63k
}
16395
3.25k
union_map::operator bool() const {
16396
3.25k
  return !is_null();
16397
3.25k
}
16398
16399
16400
59
ctx union_map::get_ctx() const {
16401
59
  return ctx(isl_union_map_get_ctx(ptr));
16402
59
}
16403
6
std::string union_map::to_str() const {
16404
6
  char *Tmp = isl_union_map_to_str(get());
16405
6
  if (!Tmp)
16406
0
    return "";
16407
6
  std::string S(Tmp);
16408
6
  free(Tmp);
16409
6
  return S;
16410
6
}
16411
16412
16413
0
void union_map::dump() const {
16414
0
  isl_union_map_dump(get());
16415
0
}
16416
16417
16418
union_map union_map::add_map(map map) const
16419
9.82k
{
16420
9.82k
  auto res = isl_union_map_add_map(copy(), map.release());
16421
9.82k
  return manage(res);
16422
9.82k
}
16423
16424
union_map union_map::affine_hull() const
16425
0
{
16426
0
  auto res = isl_union_map_affine_hull(copy());
16427
0
  return manage(res);
16428
0
}
16429
16430
union_map union_map::align_params(space model) const
16431
0
{
16432
0
  auto res = isl_union_map_align_params(copy(), model.release());
16433
0
  return manage(res);
16434
0
}
16435
16436
union_map union_map::apply_domain(union_map umap2) const
16437
1.46k
{
16438
1.46k
  auto res = isl_union_map_apply_domain(copy(), umap2.release());
16439
1.46k
  return manage(res);
16440
1.46k
}
16441
16442
union_map union_map::apply_range(union_map umap2) const
16443
1.15k
{
16444
1.15k
  auto res = isl_union_map_apply_range(copy(), umap2.release());
16445
1.15k
  return manage(res);
16446
1.15k
}
16447
16448
union_map union_map::coalesce() const
16449
2.70k
{
16450
2.70k
  auto res = isl_union_map_coalesce(copy());
16451
2.70k
  return manage(res);
16452
2.70k
}
16453
16454
boolean union_map::contains(const space &space) const
16455
0
{
16456
0
  auto res = isl_union_map_contains(get(), space.get());
16457
0
  return manage(res);
16458
0
}
16459
16460
union_map union_map::curry() const
16461
450
{
16462
450
  auto res = isl_union_map_curry(copy());
16463
450
  return manage(res);
16464
450
}
16465
16466
union_set union_map::deltas() const
16467
89
{
16468
89
  auto res = isl_union_map_deltas(copy());
16469
89
  return manage(res);
16470
89
}
16471
16472
union_map union_map::deltas_map() const
16473
0
{
16474
0
  auto res = isl_union_map_deltas_map(copy());
16475
0
  return manage(res);
16476
0
}
16477
16478
union_map union_map::detect_equalities() const
16479
1.34k
{
16480
1.34k
  auto res = isl_union_map_detect_equalities(copy());
16481
1.34k
  return manage(res);
16482
1.34k
}
16483
16484
unsigned int union_map::dim(isl::dim type) const
16485
0
{
16486
0
  auto res = isl_union_map_dim(get(), static_cast<enum isl_dim_type>(type));
16487
0
  return res;
16488
0
}
16489
16490
union_set union_map::domain() const
16491
3.18k
{
16492
3.18k
  auto res = isl_union_map_domain(copy());
16493
3.18k
  return manage(res);
16494
3.18k
}
16495
16496
union_map union_map::domain_factor_domain() const
16497
140
{
16498
140
  auto res = isl_union_map_domain_factor_domain(copy());
16499
140
  return manage(res);
16500
140
}
16501
16502
union_map union_map::domain_factor_range() const
16503
42
{
16504
42
  auto res = isl_union_map_domain_factor_range(copy());
16505
42
  return manage(res);
16506
42
}
16507
16508
union_map union_map::domain_map() const
16509
99
{
16510
99
  auto res = isl_union_map_domain_map(copy());
16511
99
  return manage(res);
16512
99
}
16513
16514
union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
16515
0
{
16516
0
  auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
16517
0
  return manage(res);
16518
0
}
16519
16520
union_map union_map::domain_product(union_map umap2) const
16521
0
{
16522
0
  auto res = isl_union_map_domain_product(copy(), umap2.release());
16523
0
  return manage(res);
16524
0
}
16525
16526
union_map union_map::empty(space space)
16527
7.54k
{
16528
7.54k
  auto res = isl_union_map_empty(space.release());
16529
7.54k
  return manage(res);
16530
7.54k
}
16531
16532
union_map union_map::eq_at(multi_union_pw_aff mupa) const
16533
0
{
16534
0
  auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
16535
0
  return manage(res);
16536
0
}
16537
16538
map union_map::extract_map(space dim) const
16539
466
{
16540
466
  auto res = isl_union_map_extract_map(get(), dim.release());
16541
466
  return manage(res);
16542
466
}
16543
16544
union_map union_map::factor_domain() const
16545
0
{
16546
0
  auto res = isl_union_map_factor_domain(copy());
16547
0
  return manage(res);
16548
0
}
16549
16550
union_map union_map::factor_range() const
16551
0
{
16552
0
  auto res = isl_union_map_factor_range(copy());
16553
0
  return manage(res);
16554
0
}
16555
16556
int union_map::find_dim_by_name(isl::dim type, const std::string &name) const
16557
0
{
16558
0
  auto res = isl_union_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
16559
0
  return res;
16560
0
}
16561
16562
union_map union_map::fixed_power(val exp) const
16563
0
{
16564
0
  auto res = isl_union_map_fixed_power_val(copy(), exp.release());
16565
0
  return manage(res);
16566
0
}
16567
16568
union_map union_map::flat_domain_product(union_map umap2) const
16569
0
{
16570
0
  auto res = isl_union_map_flat_domain_product(copy(), umap2.release());
16571
0
  return manage(res);
16572
0
}
16573
16574
union_map union_map::flat_range_product(union_map umap2) const
16575
138
{
16576
138
  auto res = isl_union_map_flat_range_product(copy(), umap2.release());
16577
138
  return manage(res);
16578
138
}
16579
16580
stat union_map::foreach_map(const std::function<stat(map)> &fn) const
16581
{
16582
  struct fn_data {
16583
    const std::function<stat(map)> *func;
16584
  } fn_data = { &fn };
16585
  auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
16586
    auto *data = static_cast<struct fn_data *>(arg_1);
16587
    stat ret = (*data->func)(manage(arg_0));
16588
    return ret.release();
16589
  };
16590
  auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
16591
  return manage(res);
16592
}
16593
16594
union_map union_map::from(multi_union_pw_aff mupa)
16595
56
{
16596
56
  auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
16597
56
  return manage(res);
16598
56
}
16599
16600
union_map union_map::from_domain(union_set uset)
16601
922
{
16602
922
  auto res = isl_union_map_from_domain(uset.release());
16603
922
  return manage(res);
16604
922
}
16605
16606
union_map union_map::from_domain_and_range(union_set domain, union_set range)
16607
34
{
16608
34
  auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
16609
34
  return manage(res);
16610
34
}
16611
16612
union_map union_map::from_range(union_set uset)
16613
0
{
16614
0
  auto res = isl_union_map_from_range(uset.release());
16615
0
  return manage(res);
16616
0
}
16617
16618
union_map union_map::from_union_pw_aff(union_pw_aff upa)
16619
0
{
16620
0
  auto res = isl_union_map_from_union_pw_aff(upa.release());
16621
0
  return manage(res);
16622
0
}
16623
16624
id union_map::get_dim_id(isl::dim type, unsigned int pos) const
16625
0
{
16626
0
  auto res = isl_union_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
16627
0
  return manage(res);
16628
0
}
16629
16630
uint32_t union_map::get_hash() const
16631
0
{
16632
0
  auto res = isl_union_map_get_hash(get());
16633
0
  return res;
16634
0
}
16635
16636
map_list union_map::get_map_list() const
16637
4.27k
{
16638
4.27k
  auto res = isl_union_map_get_map_list(get());
16639
4.27k
  return manage(res);
16640
4.27k
}
16641
16642
space union_map::get_space() const
16643
4.12k
{
16644
4.12k
  auto res = isl_union_map_get_space(get());
16645
4.12k
  return manage(res);
16646
4.12k
}
16647
16648
union_map union_map::gist(union_map context) const
16649
0
{
16650
0
  auto res = isl_union_map_gist(copy(), context.release());
16651
0
  return manage(res);
16652
0
}
16653
16654
union_map union_map::gist_domain(union_set uset) const
16655
109
{
16656
109
  auto res = isl_union_map_gist_domain(copy(), uset.release());
16657
109
  return manage(res);
16658
109
}
16659
16660
union_map union_map::gist_params(set set) const
16661
0
{
16662
0
  auto res = isl_union_map_gist_params(copy(), set.release());
16663
0
  return manage(res);
16664
0
}
16665
16666
union_map union_map::gist_range(union_set uset) const
16667
80
{
16668
80
  auto res = isl_union_map_gist_range(copy(), uset.release());
16669
80
  return manage(res);
16670
80
}
16671
16672
union_map union_map::intersect(union_map umap2) const
16673
1.17k
{
16674
1.17k
  auto res = isl_union_map_intersect(copy(), umap2.release());
16675
1.17k
  return manage(res);
16676
1.17k
}
16677
16678
union_map union_map::intersect_domain(union_set uset) const
16679
3.07k
{
16680
3.07k
  auto res = isl_union_map_intersect_domain(copy(), uset.release());
16681
3.07k
  return manage(res);
16682
3.07k
}
16683
16684
union_map union_map::intersect_params(set set) const
16685
0
{
16686
0
  auto res = isl_union_map_intersect_params(copy(), set.release());
16687
0
  return manage(res);
16688
0
}
16689
16690
union_map union_map::intersect_range(union_set uset) const
16691
509
{
16692
509
  auto res = isl_union_map_intersect_range(copy(), uset.release());
16693
509
  return manage(res);
16694
509
}
16695
16696
union_map union_map::intersect_range_factor_range(union_map factor) const
16697
0
{
16698
0
  auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
16699
0
  return manage(res);
16700
0
}
16701
16702
boolean union_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
16703
0
{
16704
0
  auto res = isl_union_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
16705
0
  return manage(res);
16706
0
}
16707
16708
boolean union_map::is_bijective() const
16709
0
{
16710
0
  auto res = isl_union_map_is_bijective(get());
16711
0
  return manage(res);
16712
0
}
16713
16714
boolean union_map::is_disjoint(const union_map &umap2) const
16715
206
{
16716
206
  auto res = isl_union_map_is_disjoint(get(), umap2.get());
16717
206
  return manage(res);
16718
206
}
16719
16720
boolean union_map::is_empty() const
16721
1.29k
{
16722
1.29k
  auto res = isl_union_map_is_empty(get());
16723
1.29k
  return manage(res);
16724
1.29k
}
16725
16726
boolean union_map::is_equal(const union_map &umap2) const
16727
149
{
16728
149
  auto res = isl_union_map_is_equal(get(), umap2.get());
16729
149
  return manage(res);
16730
149
}
16731
16732
boolean union_map::is_identity() const
16733
0
{
16734
0
  auto res = isl_union_map_is_identity(get());
16735
0
  return manage(res);
16736
0
}
16737
16738
boolean union_map::is_injective() const
16739
0
{
16740
0
  auto res = isl_union_map_is_injective(get());
16741
0
  return manage(res);
16742
0
}
16743
16744
boolean union_map::is_single_valued() const
16745
47
{
16746
47
  auto res = isl_union_map_is_single_valued(get());
16747
47
  return manage(res);
16748
47
}
16749
16750
boolean union_map::is_strict_subset(const union_map &umap2) const
16751
0
{
16752
0
  auto res = isl_union_map_is_strict_subset(get(), umap2.get());
16753
0
  return manage(res);
16754
0
}
16755
16756
boolean union_map::is_subset(const union_map &umap2) const
16757
280
{
16758
280
  auto res = isl_union_map_is_subset(get(), umap2.get());
16759
280
  return manage(res);
16760
280
}
16761
16762
union_map union_map::lex_ge_union_map(union_map umap2) const
16763
0
{
16764
0
  auto res = isl_union_map_lex_ge_union_map(copy(), umap2.release());
16765
0
  return manage(res);
16766
0
}
16767
16768
union_map union_map::lex_gt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const
16769
0
{
16770
0
  auto res = isl_union_map_lex_gt_at_multi_union_pw_aff(copy(), mupa.release());
16771
0
  return manage(res);
16772
0
}
16773
16774
union_map union_map::lex_gt_union_map(union_map umap2) const
16775
0
{
16776
0
  auto res = isl_union_map_lex_gt_union_map(copy(), umap2.release());
16777
0
  return manage(res);
16778
0
}
16779
16780
union_map union_map::lex_le_union_map(union_map umap2) const
16781
0
{
16782
0
  auto res = isl_union_map_lex_le_union_map(copy(), umap2.release());
16783
0
  return manage(res);
16784
0
}
16785
16786
union_map union_map::lex_lt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const
16787
0
{
16788
0
  auto res = isl_union_map_lex_lt_at_multi_union_pw_aff(copy(), mupa.release());
16789
0
  return manage(res);
16790
0
}
16791
16792
union_map union_map::lex_lt_union_map(union_map umap2) const
16793
0
{
16794
0
  auto res = isl_union_map_lex_lt_union_map(copy(), umap2.release());
16795
0
  return manage(res);
16796
0
}
16797
16798
union_map union_map::lexmax() const
16799
285
{
16800
285
  auto res = isl_union_map_lexmax(copy());
16801
285
  return manage(res);
16802
285
}
16803
16804
union_map union_map::lexmin() const
16805
218
{
16806
218
  auto res = isl_union_map_lexmin(copy());
16807
218
  return manage(res);
16808
218
}
16809
16810
int union_map::n_map() const
16811
0
{
16812
0
  auto res = isl_union_map_n_map(get());
16813
0
  return res;
16814
0
}
16815
16816
set union_map::params() const
16817
410
{
16818
410
  auto res = isl_union_map_params(copy());
16819
410
  return manage(res);
16820
410
}
16821
16822
boolean union_map::plain_is_empty() const
16823
0
{
16824
0
  auto res = isl_union_map_plain_is_empty(get());
16825
0
  return manage(res);
16826
0
}
16827
16828
boolean union_map::plain_is_injective() const
16829
0
{
16830
0
  auto res = isl_union_map_plain_is_injective(get());
16831
0
  return manage(res);
16832
0
}
16833
16834
union_map union_map::polyhedral_hull() const
16835
0
{
16836
0
  auto res = isl_union_map_polyhedral_hull(copy());
16837
0
  return manage(res);
16838
0
}
16839
16840
union_map union_map::preimage_domain_multi_aff(multi_aff ma) const
16841
0
{
16842
0
  auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
16843
0
  return manage(res);
16844
0
}
16845
16846
union_map union_map::preimage_domain_multi_pw_aff(multi_pw_aff mpa) const
16847
0
{
16848
0
  auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
16849
0
  return manage(res);
16850
0
}
16851
16852
union_map union_map::preimage_domain_pw_multi_aff(pw_multi_aff pma) const
16853
0
{
16854
0
  auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
16855
0
  return manage(res);
16856
0
}
16857
16858
union_map union_map::preimage_domain_union_pw_multi_aff(union_pw_multi_aff upma) const
16859
0
{
16860
0
  auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
16861
0
  return manage(res);
16862
0
}
16863
16864
union_map union_map::preimage_range_multi_aff(multi_aff ma) const
16865
0
{
16866
0
  auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
16867
0
  return manage(res);
16868
0
}
16869
16870
union_map union_map::preimage_range_pw_multi_aff(pw_multi_aff pma) const
16871
0
{
16872
0
  auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
16873
0
  return manage(res);
16874
0
}
16875
16876
union_map union_map::preimage_range_union_pw_multi_aff(union_pw_multi_aff upma) const
16877
0
{
16878
0
  auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
16879
0
  return manage(res);
16880
0
}
16881
16882
union_map union_map::product(union_map umap2) const
16883
59
{
16884
59
  auto res = isl_union_map_product(copy(), umap2.release());
16885
59
  return manage(res);
16886
59
}
16887
16888
union_map union_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
16889
0
{
16890
0
  auto res = isl_union_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
16891
0
  return manage(res);
16892
0
}
16893
16894
union_map union_map::project_out_all_params() const
16895
0
{
16896
0
  auto res = isl_union_map_project_out_all_params(copy());
16897
0
  return manage(res);
16898
0
}
16899
16900
union_set union_map::range() const
16901
2.13k
{
16902
2.13k
  auto res = isl_union_map_range(copy());
16903
2.13k
  return manage(res);
16904
2.13k
}
16905
16906
union_map union_map::range_curry() const
16907
0
{
16908
0
  auto res = isl_union_map_range_curry(copy());
16909
0
  return manage(res);
16910
0
}
16911
16912
union_map union_map::range_factor_domain() const
16913
0
{
16914
0
  auto res = isl_union_map_range_factor_domain(copy());
16915
0
  return manage(res);
16916
0
}
16917
16918
union_map union_map::range_factor_range() const
16919
0
{
16920
0
  auto res = isl_union_map_range_factor_range(copy());
16921
0
  return manage(res);
16922
0
}
16923
16924
union_map union_map::range_map() const
16925
561
{
16926
561
  auto res = isl_union_map_range_map(copy());
16927
561
  return manage(res);
16928
561
}
16929
16930
union_map union_map::range_product(union_map umap2) const
16931
237
{
16932
237
  auto res = isl_union_map_range_product(copy(), umap2.release());
16933
237
  return manage(res);
16934
237
}
16935
16936
union_map union_map::remove_divs() const
16937
0
{
16938
0
  auto res = isl_union_map_remove_divs(copy());
16939
0
  return manage(res);
16940
0
}
16941
16942
union_map union_map::remove_redundancies() const
16943
0
{
16944
0
  auto res = isl_union_map_remove_redundancies(copy());
16945
0
  return manage(res);
16946
0
}
16947
16948
union_map union_map::reset_user() const
16949
0
{
16950
0
  auto res = isl_union_map_reset_user(copy());
16951
0
  return manage(res);
16952
0
}
16953
16954
union_map union_map::reverse() const
16955
1.50k
{
16956
1.50k
  auto res = isl_union_map_reverse(copy());
16957
1.50k
  return manage(res);
16958
1.50k
}
16959
16960
basic_map union_map::sample() const
16961
0
{
16962
0
  auto res = isl_union_map_sample(copy());
16963
0
  return manage(res);
16964
0
}
16965
16966
union_map union_map::simple_hull() const
16967
0
{
16968
0
  auto res = isl_union_map_simple_hull(copy());
16969
0
  return manage(res);
16970
0
}
16971
16972
union_map union_map::subtract(union_map umap2) const
16973
86
{
16974
86
  auto res = isl_union_map_subtract(copy(), umap2.release());
16975
86
  return manage(res);
16976
86
}
16977
16978
union_map union_map::subtract_domain(union_set dom) const
16979
225
{
16980
225
  auto res = isl_union_map_subtract_domain(copy(), dom.release());
16981
225
  return manage(res);
16982
225
}
16983
16984
union_map union_map::subtract_range(union_set dom) const
16985
0
{
16986
0
  auto res = isl_union_map_subtract_range(copy(), dom.release());
16987
0
  return manage(res);
16988
0
}
16989
16990
union_map union_map::uncurry() const
16991
617
{
16992
617
  auto res = isl_union_map_uncurry(copy());
16993
617
  return manage(res);
16994
617
}
16995
16996
union_map union_map::unite(union_map umap2) const
16997
3.74k
{
16998
3.74k
  auto res = isl_union_map_union(copy(), umap2.release());
16999
3.74k
  return manage(res);
17000
3.74k
}
17001
17002
union_map union_map::universe() const
17003
0
{
17004
0
  auto res = isl_union_map_universe(copy());
17005
0
  return manage(res);
17006
0
}
17007
17008
union_set union_map::wrap() const
17009
171
{
17010
171
  auto res = isl_union_map_wrap(copy());
17011
171
  return manage(res);
17012
171
}
17013
17014
union_map union_map::zip() const
17015
0
{
17016
0
  auto res = isl_union_map_zip(copy());
17017
0
  return manage(res);
17018
0
}
17019
17020
// implementations for isl::union_map_list
17021
0
union_map_list manage(__isl_take isl_union_map_list *ptr) {
17022
0
  return union_map_list(ptr);
17023
0
}
17024
0
union_map_list manage_copy(__isl_keep isl_union_map_list *ptr) {
17025
0
  ptr = isl_union_map_list_copy(ptr);
17026
0
  return union_map_list(ptr);
17027
0
}
17028
17029
union_map_list::union_map_list()
17030
    : ptr(nullptr) {}
17031
17032
union_map_list::union_map_list(const union_map_list &obj)
17033
    : ptr(nullptr)
17034
{
17035
  ptr = obj.copy();
17036
}
17037
union_map_list::union_map_list(std::nullptr_t)
17038
    : ptr(nullptr) {}
17039
17040
17041
union_map_list::union_map_list(__isl_take isl_union_map_list *ptr)
17042
    : ptr(ptr) {}
17043
17044
17045
0
union_map_list &union_map_list::operator=(union_map_list obj) {
17046
0
  std::swap(this->ptr, obj.ptr);
17047
0
  return *this;
17048
0
}
17049
17050
union_map_list::~union_map_list() {
17051
  if (ptr)
17052
    isl_union_map_list_free(ptr);
17053
}
17054
17055
0
__isl_give isl_union_map_list *union_map_list::copy() const & {
17056
0
  return isl_union_map_list_copy(ptr);
17057
0
}
17058
17059
0
__isl_keep isl_union_map_list *union_map_list::get() const {
17060
0
  return ptr;
17061
0
}
17062
17063
0
__isl_give isl_union_map_list *union_map_list::release() {
17064
0
  isl_union_map_list *tmp = ptr;
17065
0
  ptr = nullptr;
17066
0
  return tmp;
17067
0
}
17068
17069
0
bool union_map_list::is_null() const {
17070
0
  return ptr == nullptr;
17071
0
}
17072
0
union_map_list::operator bool() const {
17073
0
  return !is_null();
17074
0
}
17075
17076
17077
0
ctx union_map_list::get_ctx() const {
17078
0
  return ctx(isl_union_map_list_get_ctx(ptr));
17079
0
}
17080
17081
0
void union_map_list::dump() const {
17082
0
  isl_union_map_list_dump(get());
17083
0
}
17084
17085
17086
union_map_list union_map_list::add(union_map el) const
17087
0
{
17088
0
  auto res = isl_union_map_list_add(copy(), el.release());
17089
0
  return manage(res);
17090
0
}
17091
17092
union_map_list union_map_list::alloc(ctx ctx, int n)
17093
0
{
17094
0
  auto res = isl_union_map_list_alloc(ctx.release(), n);
17095
0
  return manage(res);
17096
0
}
17097
17098
union_map_list union_map_list::concat(union_map_list list2) const
17099
0
{
17100
0
  auto res = isl_union_map_list_concat(copy(), list2.release());
17101
0
  return manage(res);
17102
0
}
17103
17104
union_map_list union_map_list::drop(unsigned int first, unsigned int n) const
17105
0
{
17106
0
  auto res = isl_union_map_list_drop(copy(), first, n);
17107
0
  return manage(res);
17108
0
}
17109
17110
stat union_map_list::foreach(const std::function<stat(union_map)> &fn) const
17111
0
{
17112
0
  struct fn_data {
17113
0
    const std::function<stat(union_map)> *func;
17114
0
  } fn_data = { &fn };
17115
0
  auto fn_lambda = [](isl_union_map *arg_0, void *arg_1) -> isl_stat {
17116
0
    auto *data = static_cast<struct fn_data *>(arg_1);
17117
0
    stat ret = (*data->func)(manage(arg_0));
17118
0
    return ret.release();
17119
0
  };
17120
0
  auto res = isl_union_map_list_foreach(get(), fn_lambda, &fn_data);
17121
0
  return manage(res);
17122
0
}
17123
17124
union_map_list union_map_list::from_union_map(union_map el)
17125
0
{
17126
0
  auto res = isl_union_map_list_from_union_map(el.release());
17127
0
  return manage(res);
17128
0
}
17129
17130
union_map union_map_list::get_at(int index) const
17131
0
{
17132
0
  auto res = isl_union_map_list_get_at(get(), index);
17133
0
  return manage(res);
17134
0
}
17135
17136
union_map union_map_list::get_union_map(int index) const
17137
0
{
17138
0
  auto res = isl_union_map_list_get_union_map(get(), index);
17139
0
  return manage(res);
17140
0
}
17141
17142
union_map_list union_map_list::insert(unsigned int pos, union_map el) const
17143
0
{
17144
0
  auto res = isl_union_map_list_insert(copy(), pos, el.release());
17145
0
  return manage(res);
17146
0
}
17147
17148
int union_map_list::n_union_map() const
17149
0
{
17150
0
  auto res = isl_union_map_list_n_union_map(get());
17151
0
  return res;
17152
0
}
17153
17154
union_map_list union_map_list::reverse() const
17155
0
{
17156
0
  auto res = isl_union_map_list_reverse(copy());
17157
0
  return manage(res);
17158
0
}
17159
17160
union_map_list union_map_list::set_union_map(int index, union_map el) const
17161
0
{
17162
0
  auto res = isl_union_map_list_set_union_map(copy(), index, el.release());
17163
0
  return manage(res);
17164
0
}
17165
17166
int union_map_list::size() const
17167
0
{
17168
0
  auto res = isl_union_map_list_size(get());
17169
0
  return res;
17170
0
}
17171
17172
union_map_list union_map_list::swap(unsigned int pos1, unsigned int pos2) const
17173
0
{
17174
0
  auto res = isl_union_map_list_swap(copy(), pos1, pos2);
17175
0
  return manage(res);
17176
0
}
17177
17178
// implementations for isl::union_pw_aff
17179
950
union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
17180
950
  return union_pw_aff(ptr);
17181
950
}
17182
0
union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
17183
0
  ptr = isl_union_pw_aff_copy(ptr);
17184
0
  return union_pw_aff(ptr);
17185
0
}
17186
17187
union_pw_aff::union_pw_aff()
17188
0
    : ptr(nullptr) {}
17189
17190
union_pw_aff::union_pw_aff(const union_pw_aff &obj)
17191
    : ptr(nullptr)
17192
691
{
17193
691
  ptr = obj.copy();
17194
691
}
17195
union_pw_aff::union_pw_aff(std::nullptr_t)
17196
    : ptr(nullptr) {}
17197
17198
17199
union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
17200
950
    : ptr(ptr) {}
17201
17202
union_pw_aff::union_pw_aff(pw_aff pa)
17203
338
{
17204
338
  auto res = isl_union_pw_aff_from_pw_aff(pa.release());
17205
338
  ptr = res;
17206
338
}
17207
union_pw_aff::union_pw_aff(union_set domain, val v)
17208
{
17209
  auto res = isl_union_pw_aff_val_on_domain(domain.release(), v.release());
17210
  ptr = res;
17211
}
17212
union_pw_aff::union_pw_aff(ctx ctx, const std::string &str)
17213
{
17214
  auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
17215
  ptr = res;
17216
}
17217
17218
140
union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
17219
140
  std::swap(this->ptr, obj.ptr);
17220
140
  return *this;
17221
140
}
17222
17223
1.98k
union_pw_aff::~union_pw_aff() {
17224
1.98k
  if (ptr)
17225
1.30k
    isl_union_pw_aff_free(ptr);
17226
1.98k
}
17227
17228
1.26k
__isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
17229
1.26k
  return isl_union_pw_aff_copy(ptr);
17230
1.26k
}
17231
17232
77
__isl_keep isl_union_pw_aff *union_pw_aff::get() const {
17233
77
  return ptr;
17234
77
}
17235
17236
675
__isl_give isl_union_pw_aff *union_pw_aff::release() {
17237
675
  isl_union_pw_aff *tmp = ptr;
17238
675
  ptr = nullptr;
17239
675
  return tmp;
17240
675
}
17241
17242
0
bool union_pw_aff::is_null() const {
17243
0
  return ptr == nullptr;
17244
0
}
17245
0
union_pw_aff::operator bool() const {
17246
0
  return !is_null();
17247
0
}
17248
17249
17250
0
ctx union_pw_aff::get_ctx() const {
17251
0
  return ctx(isl_union_pw_aff_get_ctx(ptr));
17252
0
}
17253
0
std::string union_pw_aff::to_str() const {
17254
0
  char *Tmp = isl_union_pw_aff_to_str(get());
17255
0
  if (!Tmp)
17256
0
    return "";
17257
0
  std::string S(Tmp);
17258
0
  free(Tmp);
17259
0
  return S;
17260
0
}
17261
17262
17263
0
void union_pw_aff::dump() const {
17264
0
  isl_union_pw_aff_dump(get());
17265
0
}
17266
17267
17268
union_pw_aff union_pw_aff::add(union_pw_aff upa2) const
17269
138
{
17270
138
  auto res = isl_union_pw_aff_add(copy(), upa2.release());
17271
138
  return manage(res);
17272
138
}
17273
17274
union_pw_aff union_pw_aff::add_pw_aff(pw_aff pa) const
17275
0
{
17276
0
  auto res = isl_union_pw_aff_add_pw_aff(copy(), pa.release());
17277
0
  return manage(res);
17278
0
}
17279
17280
union_pw_aff union_pw_aff::aff_on_domain(union_set domain, aff aff)
17281
0
{
17282
0
  auto res = isl_union_pw_aff_aff_on_domain(domain.release(), aff.release());
17283
0
  return manage(res);
17284
0
}
17285
17286
union_pw_aff union_pw_aff::align_params(space model) const
17287
0
{
17288
0
  auto res = isl_union_pw_aff_align_params(copy(), model.release());
17289
0
  return manage(res);
17290
0
}
17291
17292
union_pw_aff union_pw_aff::coalesce() const
17293
0
{
17294
0
  auto res = isl_union_pw_aff_coalesce(copy());
17295
0
  return manage(res);
17296
0
}
17297
17298
unsigned int union_pw_aff::dim(isl::dim type) const
17299
0
{
17300
0
  auto res = isl_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
17301
0
  return res;
17302
0
}
17303
17304
union_set union_pw_aff::domain() const
17305
0
{
17306
0
  auto res = isl_union_pw_aff_domain(copy());
17307
0
  return manage(res);
17308
0
}
17309
17310
union_pw_aff union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
17311
0
{
17312
0
  auto res = isl_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
17313
0
  return manage(res);
17314
0
}
17315
17316
union_pw_aff union_pw_aff::empty(space space)
17317
38
{
17318
38
  auto res = isl_union_pw_aff_empty(space.release());
17319
38
  return manage(res);
17320
38
}
17321
17322
pw_aff union_pw_aff::extract_pw_aff(space space) const
17323
0
{
17324
0
  auto res = isl_union_pw_aff_extract_pw_aff(get(), space.release());
17325
0
  return manage(res);
17326
0
}
17327
17328
int union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
17329
0
{
17330
0
  auto res = isl_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
17331
0
  return res;
17332
0
}
17333
17334
union_pw_aff union_pw_aff::floor() const
17335
0
{
17336
0
  auto res = isl_union_pw_aff_floor(copy());
17337
0
  return manage(res);
17338
0
}
17339
17340
stat union_pw_aff::foreach_pw_aff(const std::function<stat(pw_aff)> &fn) const
17341
39
{
17342
39
  struct fn_data {
17343
39
    const std::function<stat(pw_aff)> *func;
17344
39
  } fn_data = { &fn };
17345
141
  auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
17346
141
    auto *data = static_cast<struct fn_data *>(arg_1);
17347
141
    stat ret = (*data->func)(manage(arg_0));
17348
141
    return ret.release();
17349
141
  };
17350
39
  auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_data);
17351
39
  return manage(res);
17352
39
}
17353
17354
pw_aff_list union_pw_aff::get_pw_aff_list() const
17355
0
{
17356
0
  auto res = isl_union_pw_aff_get_pw_aff_list(get());
17357
0
  return manage(res);
17358
0
}
17359
17360
space union_pw_aff::get_space() const
17361
38
{
17362
38
  auto res = isl_union_pw_aff_get_space(get());
17363
38
  return manage(res);
17364
38
}
17365
17366
union_pw_aff union_pw_aff::gist(union_set context) const
17367
0
{
17368
0
  auto res = isl_union_pw_aff_gist(copy(), context.release());
17369
0
  return manage(res);
17370
0
}
17371
17372
union_pw_aff union_pw_aff::gist_params(set context) const
17373
0
{
17374
0
  auto res = isl_union_pw_aff_gist_params(copy(), context.release());
17375
0
  return manage(res);
17376
0
}
17377
17378
union_pw_aff union_pw_aff::intersect_domain(union_set uset) const
17379
0
{
17380
0
  auto res = isl_union_pw_aff_intersect_domain(copy(), uset.release());
17381
0
  return manage(res);
17382
0
}
17383
17384
union_pw_aff union_pw_aff::intersect_params(set set) const
17385
0
{
17386
0
  auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
17387
0
  return manage(res);
17388
0
}
17389
17390
boolean union_pw_aff::involves_nan() const
17391
0
{
17392
0
  auto res = isl_union_pw_aff_involves_nan(get());
17393
0
  return manage(res);
17394
0
}
17395
17396
val union_pw_aff::max_val() const
17397
0
{
17398
0
  auto res = isl_union_pw_aff_max_val(copy());
17399
0
  return manage(res);
17400
0
}
17401
17402
val union_pw_aff::min_val() const
17403
0
{
17404
0
  auto res = isl_union_pw_aff_min_val(copy());
17405
0
  return manage(res);
17406
0
}
17407
17408
union_pw_aff union_pw_aff::mod_val(val f) const
17409
0
{
17410
0
  auto res = isl_union_pw_aff_mod_val(copy(), f.release());
17411
0
  return manage(res);
17412
0
}
17413
17414
int union_pw_aff::n_pw_aff() const
17415
0
{
17416
0
  auto res = isl_union_pw_aff_n_pw_aff(get());
17417
0
  return res;
17418
0
}
17419
17420
union_pw_aff union_pw_aff::neg() const
17421
0
{
17422
0
  auto res = isl_union_pw_aff_neg(copy());
17423
0
  return manage(res);
17424
0
}
17425
17426
union_pw_aff union_pw_aff::param_on_domain_id(union_set domain, id id)
17427
0
{
17428
0
  auto res = isl_union_pw_aff_param_on_domain_id(domain.release(), id.release());
17429
0
  return manage(res);
17430
0
}
17431
17432
boolean union_pw_aff::plain_is_equal(const union_pw_aff &upa2) const
17433
0
{
17434
0
  auto res = isl_union_pw_aff_plain_is_equal(get(), upa2.get());
17435
0
  return manage(res);
17436
0
}
17437
17438
union_pw_aff union_pw_aff::pullback(union_pw_multi_aff upma) const
17439
198
{
17440
198
  auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
17441
198
  return manage(res);
17442
198
}
17443
17444
union_pw_aff union_pw_aff::pw_aff_on_domain(union_set domain, pw_aff pa)
17445
0
{
17446
0
  auto res = isl_union_pw_aff_pw_aff_on_domain(domain.release(), pa.release());
17447
0
  return manage(res);
17448
0
}
17449
17450
union_pw_aff union_pw_aff::reset_user() const
17451
0
{
17452
0
  auto res = isl_union_pw_aff_reset_user(copy());
17453
0
  return manage(res);
17454
0
}
17455
17456
union_pw_aff union_pw_aff::scale_down_val(val v) const
17457
0
{
17458
0
  auto res = isl_union_pw_aff_scale_down_val(copy(), v.release());
17459
0
  return manage(res);
17460
0
}
17461
17462
union_pw_aff union_pw_aff::scale_val(val v) const
17463
0
{
17464
0
  auto res = isl_union_pw_aff_scale_val(copy(), v.release());
17465
0
  return manage(res);
17466
0
}
17467
17468
union_pw_aff union_pw_aff::sub(union_pw_aff upa2) const
17469
99
{
17470
99
  auto res = isl_union_pw_aff_sub(copy(), upa2.release());
17471
99
  return manage(res);
17472
99
}
17473
17474
union_pw_aff union_pw_aff::subtract_domain(union_set uset) const
17475
0
{
17476
0
  auto res = isl_union_pw_aff_subtract_domain(copy(), uset.release());
17477
0
  return manage(res);
17478
0
}
17479
17480
union_pw_aff union_pw_aff::union_add(union_pw_aff upa2) const
17481
140
{
17482
140
  auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
17483
140
  return manage(res);
17484
140
}
17485
17486
union_set union_pw_aff::zero_union_set() const
17487
0
{
17488
0
  auto res = isl_union_pw_aff_zero_union_set(copy());
17489
0
  return manage(res);
17490
0
}
17491
17492
// implementations for isl::union_pw_aff_list
17493
0
union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
17494
0
  return union_pw_aff_list(ptr);
17495
0
}
17496
0
union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
17497
0
  ptr = isl_union_pw_aff_list_copy(ptr);
17498
0
  return union_pw_aff_list(ptr);
17499
0
}
17500
17501
union_pw_aff_list::union_pw_aff_list()
17502
    : ptr(nullptr) {}
17503
17504
union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
17505
    : ptr(nullptr)
17506
{
17507
  ptr = obj.copy();
17508
}
17509
union_pw_aff_list::union_pw_aff_list(std::nullptr_t)
17510
    : ptr(nullptr) {}
17511
17512
17513
union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
17514
    : ptr(ptr) {}
17515
17516
17517
0
union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
17518
0
  std::swap(this->ptr, obj.ptr);
17519
0
  return *this;
17520
0
}
17521
17522
union_pw_aff_list::~union_pw_aff_list() {
17523
  if (ptr)
17524
    isl_union_pw_aff_list_free(ptr);
17525
}
17526
17527
0
__isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
17528
0
  return isl_union_pw_aff_list_copy(ptr);
17529
0
}
17530
17531
0
__isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
17532
0
  return ptr;
17533
0
}
17534
17535
0
__isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
17536
0
  isl_union_pw_aff_list *tmp = ptr;
17537
0
  ptr = nullptr;
17538
0
  return tmp;
17539
0
}
17540
17541
0
bool union_pw_aff_list::is_null() const {
17542
0
  return ptr == nullptr;
17543
0
}
17544
0
union_pw_aff_list::operator bool() const {
17545
0
  return !is_null();
17546
0
}
17547
17548
17549
0
ctx union_pw_aff_list::get_ctx() const {
17550
0
  return ctx(isl_union_pw_aff_list_get_ctx(ptr));
17551
0
}
17552
17553
0
void union_pw_aff_list::dump() const {
17554
0
  isl_union_pw_aff_list_dump(get());
17555
0
}
17556
17557
17558
union_pw_aff_list union_pw_aff_list::add(union_pw_aff el) const
17559
0
{
17560
0
  auto res = isl_union_pw_aff_list_add(copy(), el.release());
17561
0
  return manage(res);
17562
0
}
17563
17564
union_pw_aff_list union_pw_aff_list::alloc(ctx ctx, int n)
17565
0
{
17566
0
  auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
17567
0
  return manage(res);
17568
0
}
17569
17570
union_pw_aff_list union_pw_aff_list::concat(union_pw_aff_list list2) const
17571
0
{
17572
0
  auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
17573
0
  return manage(res);
17574
0
}
17575
17576
union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
17577
0
{
17578
0
  auto res = isl_union_pw_aff_list_drop(copy(), first, n);
17579
0
  return manage(res);
17580
0
}
17581
17582
stat union_pw_aff_list::foreach(const std::function<stat(union_pw_aff)> &fn) const
17583
0
{
17584
0
  struct fn_data {
17585
0
    const std::function<stat(union_pw_aff)> *func;
17586
0
  } fn_data = { &fn };
17587
0
  auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
17588
0
    auto *data = static_cast<struct fn_data *>(arg_1);
17589
0
    stat ret = (*data->func)(manage(arg_0));
17590
0
    return ret.release();
17591
0
  };
17592
0
  auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
17593
0
  return manage(res);
17594
0
}
17595
17596
union_pw_aff_list union_pw_aff_list::from_union_pw_aff(union_pw_aff el)
17597
0
{
17598
0
  auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
17599
0
  return manage(res);
17600
0
}
17601
17602
union_pw_aff union_pw_aff_list::get_at(int index) const
17603
0
{
17604
0
  auto res = isl_union_pw_aff_list_get_at(get(), index);
17605
0
  return manage(res);
17606
0
}
17607
17608
union_pw_aff union_pw_aff_list::get_union_pw_aff(int index) const
17609
0
{
17610
0
  auto res = isl_union_pw_aff_list_get_union_pw_aff(get(), index);
17611
0
  return manage(res);
17612
0
}
17613
17614
union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, union_pw_aff el) const
17615
0
{
17616
0
  auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
17617
0
  return manage(res);
17618
0
}
17619
17620
int union_pw_aff_list::n_union_pw_aff() const
17621
0
{
17622
0
  auto res = isl_union_pw_aff_list_n_union_pw_aff(get());
17623
0
  return res;
17624
0
}
17625
17626
union_pw_aff_list union_pw_aff_list::reverse() const
17627
0
{
17628
0
  auto res = isl_union_pw_aff_list_reverse(copy());
17629
0
  return manage(res);
17630
0
}
17631
17632
union_pw_aff_list union_pw_aff_list::set_union_pw_aff(int index, union_pw_aff el) const
17633
0
{
17634
0
  auto res = isl_union_pw_aff_list_set_union_pw_aff(copy(), index, el.release());
17635
0
  return manage(res);
17636
0
}
17637
17638
int union_pw_aff_list::size() const
17639
0
{
17640
0
  auto res = isl_union_pw_aff_list_size(get());
17641
0
  return res;
17642
0
}
17643
17644
union_pw_aff_list union_pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const
17645
0
{
17646
0
  auto res = isl_union_pw_aff_list_swap(copy(), pos1, pos2);
17647
0
  return manage(res);
17648
0
}
17649
17650
// implementations for isl::union_pw_multi_aff
17651
4.21k
union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
17652
4.21k
  return union_pw_multi_aff(ptr);
17653
4.21k
}
17654
0
union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
17655
0
  ptr = isl_union_pw_multi_aff_copy(ptr);
17656
0
  return union_pw_multi_aff(ptr);
17657
0
}
17658
17659
union_pw_multi_aff::union_pw_multi_aff()
17660
    : ptr(nullptr) {}
17661
17662
union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
17663
    : ptr(nullptr)
17664
2.01k
{
17665
2.01k
  ptr = obj.copy();
17666
2.01k
}
17667
union_pw_multi_aff::union_pw_multi_aff(std::nullptr_t)
17668
    : ptr(nullptr) {}
17669
17670
17671
union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
17672
4.21k
    : ptr(ptr) {}
17673
17674
union_pw_multi_aff::union_pw_multi_aff(aff aff)
17675
{
17676
  auto res = isl_union_pw_multi_aff_from_aff(aff.release());
17677
  ptr = res;
17678
}
17679
union_pw_multi_aff::union_pw_multi_aff(pw_multi_aff pma)
17680
{
17681
  auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
17682
  ptr = res;
17683
}
17684
union_pw_multi_aff::union_pw_multi_aff(union_set uset)
17685
59
{
17686
59
  auto res = isl_union_pw_multi_aff_from_domain(uset.release());
17687
59
  ptr = res;
17688
59
}
17689
union_pw_multi_aff::union_pw_multi_aff(union_map umap)
17690
177
{
17691
177
  auto res = isl_union_pw_multi_aff_from_union_map(umap.release());
17692
177
  ptr = res;
17693
177
}
17694
union_pw_multi_aff::union_pw_multi_aff(ctx ctx, const std::string &str)
17695
{
17696
  auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
17697
  ptr = res;
17698
}
17699
union_pw_multi_aff::union_pw_multi_aff(union_pw_aff upa)
17700
138
{
17701
138
  auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
17702
138
  ptr = res;
17703
138
}
17704
union_pw_multi_aff::union_pw_multi_aff(multi_union_pw_aff mupa)
17705
{
17706
  auto res = isl_union_pw_multi_aff_from_multi_union_pw_aff(mupa.release());
17707
  ptr = res;
17708
}
17709
17710
2.57k
union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
17711
2.57k
  std::swap(this->ptr, obj.ptr);
17712
2.57k
  return *this;
17713
2.57k
}
17714
17715
6.61k
union_pw_multi_aff::~union_pw_multi_aff() {
17716
6.61k
  if (ptr)
17717
4.45k
    isl_union_pw_multi_aff_free(ptr);
17718
6.61k
}
17719
17720
4.59k
__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
17721
4.59k
  return isl_union_pw_multi_aff_copy(ptr);
17722
4.59k
}
17723
17724
0
__isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
17725
0
  return ptr;
17726
0
}
17727
17728
2.15k
__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
17729
2.15k
  isl_union_pw_multi_aff *tmp = ptr;
17730
2.15k
  ptr = nullptr;
17731
2.15k
  return tmp;
17732
2.15k
}
17733
17734
0
bool union_pw_multi_aff::is_null() const {
17735
0
  return ptr == nullptr;
17736
0
}
17737
0
union_pw_multi_aff::operator bool() const {
17738
0
  return !is_null();
17739
0
}
17740
17741
17742
0
ctx union_pw_multi_aff::get_ctx() const {
17743
0
  return ctx(isl_union_pw_multi_aff_get_ctx(ptr));
17744
0
}
17745
0
std::string union_pw_multi_aff::to_str() const {
17746
0
  char *Tmp = isl_union_pw_multi_aff_to_str(get());
17747
0
  if (!Tmp)
17748
0
    return "";
17749
0
  std::string S(Tmp);
17750
0
  free(Tmp);
17751
0
  return S;
17752
0
}
17753
17754
17755
0
void union_pw_multi_aff::dump() const {
17756
0
  isl_union_pw_multi_aff_dump(get());
17757
0
}
17758
17759
17760
union_pw_multi_aff union_pw_multi_aff::add(union_pw_multi_aff upma2) const
17761
0
{
17762
0
  auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
17763
0
  return manage(res);
17764
0
}
17765
17766
union_pw_multi_aff union_pw_multi_aff::add_pw_multi_aff(pw_multi_aff pma) const
17767
2.57k
{
17768
2.57k
  auto res = isl_union_pw_multi_aff_add_pw_multi_aff(copy(), pma.release());
17769
2.57k
  return manage(res);
17770
2.57k
}
17771
17772
union_pw_multi_aff union_pw_multi_aff::align_params(space model) const
17773
0
{
17774
0
  auto res = isl_union_pw_multi_aff_align_params(copy(), model.release());
17775
0
  return manage(res);
17776
0
}
17777
17778
union_pw_multi_aff union_pw_multi_aff::coalesce() const
17779
0
{
17780
0
  auto res = isl_union_pw_multi_aff_coalesce(copy());
17781
0
  return manage(res);
17782
0
}
17783
17784
unsigned int union_pw_multi_aff::dim(isl::dim type) const
17785
0
{
17786
0
  auto res = isl_union_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
17787
0
  return res;
17788
0
}
17789
17790
union_set union_pw_multi_aff::domain() const
17791
0
{
17792
0
  auto res = isl_union_pw_multi_aff_domain(copy());
17793
0
  return manage(res);
17794
0
}
17795
17796
union_pw_multi_aff union_pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
17797
0
{
17798
0
  auto res = isl_union_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
17799
0
  return manage(res);
17800
0
}
17801
17802
union_pw_multi_aff union_pw_multi_aff::empty(space space)
17803
1.63k
{
17804
1.63k
  auto res = isl_union_pw_multi_aff_empty(space.release());
17805
1.63k
  return manage(res);
17806
1.63k
}
17807
17808
pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(space space) const
17809
0
{
17810
0
  auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
17811
0
  return manage(res);
17812
0
}
17813
17814
int union_pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
17815
0
{
17816
0
  auto res = isl_union_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
17817
0
  return res;
17818
0
}
17819
17820
union_pw_multi_aff union_pw_multi_aff::flat_range_product(union_pw_multi_aff upma2) const
17821
0
{
17822
0
  auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
17823
0
  return manage(res);
17824
0
}
17825
17826
stat union_pw_multi_aff::foreach_pw_multi_aff(const std::function<stat(pw_multi_aff)> &fn) const
17827
0
{
17828
0
  struct fn_data {
17829
0
    const std::function<stat(pw_multi_aff)> *func;
17830
0
  } fn_data = { &fn };
17831
0
  auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
17832
0
    auto *data = static_cast<struct fn_data *>(arg_1);
17833
0
    stat ret = (*data->func)(manage(arg_0));
17834
0
    return ret.release();
17835
0
  };
17836
0
  auto res = isl_union_pw_multi_aff_foreach_pw_multi_aff(get(), fn_lambda, &fn_data);
17837
0
  return manage(res);
17838
0
}
17839
17840
union_pw_multi_aff union_pw_multi_aff::from_union_set(union_set uset)
17841
0
{
17842
0
  auto res = isl_union_pw_multi_aff_from_union_set(uset.release());
17843
0
  return manage(res);
17844
0
}
17845
17846
pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
17847
0
{
17848
0
  auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
17849
0
  return manage(res);
17850
0
}
17851
17852
space union_pw_multi_aff::get_space() const
17853
0
{
17854
0
  auto res = isl_union_pw_multi_aff_get_space(get());
17855
0
  return manage(res);
17856
0
}
17857
17858
union_pw_aff union_pw_multi_aff::get_union_pw_aff(int pos) const
17859
0
{
17860
0
  auto res = isl_union_pw_multi_aff_get_union_pw_aff(get(), pos);
17861
0
  return manage(res);
17862
0
}
17863
17864
union_pw_multi_aff union_pw_multi_aff::gist(union_set context) const
17865
0
{
17866
0
  auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
17867
0
  return manage(res);
17868
0
}
17869
17870
union_pw_multi_aff union_pw_multi_aff::gist_params(set context) const
17871
0
{
17872
0
  auto res = isl_union_pw_multi_aff_gist_params(copy(), context.release());
17873
0
  return manage(res);
17874
0
}
17875
17876
union_pw_multi_aff union_pw_multi_aff::intersect_domain(union_set uset) const
17877
0
{
17878
0
  auto res = isl_union_pw_multi_aff_intersect_domain(copy(), uset.release());
17879
0
  return manage(res);
17880
0
}
17881
17882
union_pw_multi_aff union_pw_multi_aff::intersect_params(set set) const
17883
0
{
17884
0
  auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
17885
0
  return manage(res);
17886
0
}
17887
17888
boolean union_pw_multi_aff::involves_nan() const
17889
0
{
17890
0
  auto res = isl_union_pw_multi_aff_involves_nan(get());
17891
0
  return manage(res);
17892
0
}
17893
17894
union_pw_multi_aff union_pw_multi_aff::multi_val_on_domain(union_set domain, multi_val mv)
17895
0
{
17896
0
  auto res = isl_union_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
17897
0
  return manage(res);
17898
0
}
17899
17900
int union_pw_multi_aff::n_pw_multi_aff() const
17901
0
{
17902
0
  auto res = isl_union_pw_multi_aff_n_pw_multi_aff(get());
17903
0
  return res;
17904
0
}
17905
17906
union_pw_multi_aff union_pw_multi_aff::neg() const
17907
0
{
17908
0
  auto res = isl_union_pw_multi_aff_neg(copy());
17909
0
  return manage(res);
17910
0
}
17911
17912
boolean union_pw_multi_aff::plain_is_equal(const union_pw_multi_aff &upma2) const
17913
0
{
17914
0
  auto res = isl_union_pw_multi_aff_plain_is_equal(get(), upma2.get());
17915
0
  return manage(res);
17916
0
}
17917
17918
union_pw_multi_aff union_pw_multi_aff::pullback(union_pw_multi_aff upma2) const
17919
0
{
17920
0
  auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
17921
0
  return manage(res);
17922
0
}
17923
17924
union_pw_multi_aff union_pw_multi_aff::reset_user() const
17925
0
{
17926
0
  auto res = isl_union_pw_multi_aff_reset_user(copy());
17927
0
  return manage(res);
17928
0
}
17929
17930
union_pw_multi_aff union_pw_multi_aff::scale_down_val(val val) const
17931
0
{
17932
0
  auto res = isl_union_pw_multi_aff_scale_down_val(copy(), val.release());
17933
0
  return manage(res);
17934
0
}
17935
17936
union_pw_multi_aff union_pw_multi_aff::scale_multi_val(multi_val mv) const
17937
0
{
17938
0
  auto res = isl_union_pw_multi_aff_scale_multi_val(copy(), mv.release());
17939
0
  return manage(res);
17940
0
}
17941
17942
union_pw_multi_aff union_pw_multi_aff::scale_val(val val) const
17943
0
{
17944
0
  auto res = isl_union_pw_multi_aff_scale_val(copy(), val.release());
17945
0
  return manage(res);
17946
0
}
17947
17948
union_pw_multi_aff union_pw_multi_aff::sub(union_pw_multi_aff upma2) const
17949
0
{
17950
0
  auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
17951
0
  return manage(res);
17952
0
}
17953
17954
union_pw_multi_aff union_pw_multi_aff::subtract_domain(union_set uset) const
17955
0
{
17956
0
  auto res = isl_union_pw_multi_aff_subtract_domain(copy(), uset.release());
17957
0
  return manage(res);
17958
0
}
17959
17960
union_pw_multi_aff union_pw_multi_aff::union_add(union_pw_multi_aff upma2) const
17961
0
{
17962
0
  auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
17963
0
  return manage(res);
17964
0
}
17965
17966
// implementations for isl::union_pw_multi_aff_list
17967
0
union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr) {
17968
0
  return union_pw_multi_aff_list(ptr);
17969
0
}
17970
0
union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr) {
17971
0
  ptr = isl_union_pw_multi_aff_list_copy(ptr);
17972
0
  return union_pw_multi_aff_list(ptr);
17973
0
}
17974
17975
union_pw_multi_aff_list::union_pw_multi_aff_list()
17976
    : ptr(nullptr) {}
17977
17978
union_pw_multi_aff_list::union_pw_multi_aff_list(const union_pw_multi_aff_list &obj)
17979
    : ptr(nullptr)
17980
{
17981
  ptr = obj.copy();
17982
}
17983
union_pw_multi_aff_list::union_pw_multi_aff_list(std::nullptr_t)
17984
    : ptr(nullptr) {}
17985
17986
17987
union_pw_multi_aff_list::union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr)
17988
    : ptr(ptr) {}
17989
17990
17991
0
union_pw_multi_aff_list &union_pw_multi_aff_list::operator=(union_pw_multi_aff_list obj) {
17992
0
  std::swap(this->ptr, obj.ptr);
17993
0
  return *this;
17994
0
}
17995
17996
union_pw_multi_aff_list::~union_pw_multi_aff_list() {
17997
  if (ptr)
17998
    isl_union_pw_multi_aff_list_free(ptr);
17999
}
18000
18001
0
__isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::copy() const & {
18002
0
  return isl_union_pw_multi_aff_list_copy(ptr);
18003
0
}
18004
18005
0
__isl_keep isl_union_pw_multi_aff_list *union_pw_multi_aff_list::get() const {
18006
0
  return ptr;
18007
0
}
18008
18009
0
__isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::release() {
18010
0
  isl_union_pw_multi_aff_list *tmp = ptr;
18011
0
  ptr = nullptr;
18012
0
  return tmp;
18013
0
}
18014
18015
0
bool union_pw_multi_aff_list::is_null() const {
18016
0
  return ptr == nullptr;
18017
0
}
18018
0
union_pw_multi_aff_list::operator bool() const {
18019
0
  return !is_null();
18020
0
}
18021
18022
18023
0
ctx union_pw_multi_aff_list::get_ctx() const {
18024
0
  return ctx(isl_union_pw_multi_aff_list_get_ctx(ptr));
18025
0
}
18026
18027
0
void union_pw_multi_aff_list::dump() const {
18028
0
  isl_union_pw_multi_aff_list_dump(get());
18029
0
}
18030
18031
18032
union_pw_multi_aff_list union_pw_multi_aff_list::add(union_pw_multi_aff el) const
18033
0
{
18034
0
  auto res = isl_union_pw_multi_aff_list_add(copy(), el.release());
18035
0
  return manage(res);
18036
0
}
18037
18038
union_pw_multi_aff_list union_pw_multi_aff_list::alloc(ctx ctx, int n)
18039
0
{
18040
0
  auto res = isl_union_pw_multi_aff_list_alloc(ctx.release(), n);
18041
0
  return manage(res);
18042
0
}
18043
18044
union_pw_multi_aff_list union_pw_multi_aff_list::concat(union_pw_multi_aff_list list2) const
18045
0
{
18046
0
  auto res = isl_union_pw_multi_aff_list_concat(copy(), list2.release());
18047
0
  return manage(res);
18048
0
}
18049
18050
union_pw_multi_aff_list union_pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
18051
0
{
18052
0
  auto res = isl_union_pw_multi_aff_list_drop(copy(), first, n);
18053
0
  return manage(res);
18054
0
}
18055
18056
stat union_pw_multi_aff_list::foreach(const std::function<stat(union_pw_multi_aff)> &fn) const
18057
0
{
18058
0
  struct fn_data {
18059
0
    const std::function<stat(union_pw_multi_aff)> *func;
18060
0
  } fn_data = { &fn };
18061
0
  auto fn_lambda = [](isl_union_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
18062
0
    auto *data = static_cast<struct fn_data *>(arg_1);
18063
0
    stat ret = (*data->func)(manage(arg_0));
18064
0
    return ret.release();
18065
0
  };
18066
0
  auto res = isl_union_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
18067
0
  return manage(res);
18068
0
}
18069
18070
union_pw_multi_aff_list union_pw_multi_aff_list::from_union_pw_multi_aff(union_pw_multi_aff el)
18071
0
{
18072
0
  auto res = isl_union_pw_multi_aff_list_from_union_pw_multi_aff(el.release());
18073
0
  return manage(res);
18074
0
}
18075
18076
union_pw_multi_aff union_pw_multi_aff_list::get_at(int index) const
18077
0
{
18078
0
  auto res = isl_union_pw_multi_aff_list_get_at(get(), index);
18079
0
  return manage(res);
18080
0
}
18081
18082
union_pw_multi_aff union_pw_multi_aff_list::get_union_pw_multi_aff(int index) const
18083
0
{
18084
0
  auto res = isl_union_pw_multi_aff_list_get_union_pw_multi_aff(get(), index);
18085
0
  return manage(res);
18086
0
}
18087
18088
union_pw_multi_aff_list union_pw_multi_aff_list::insert(unsigned int pos, union_pw_multi_aff el) const
18089
0
{
18090
0
  auto res = isl_union_pw_multi_aff_list_insert(copy(), pos, el.release());
18091
0
  return manage(res);
18092
0
}
18093
18094
int union_pw_multi_aff_list::n_union_pw_multi_aff() const
18095
0
{
18096
0
  auto res = isl_union_pw_multi_aff_list_n_union_pw_multi_aff(get());
18097
0
  return res;
18098
0
}
18099
18100
union_pw_multi_aff_list union_pw_multi_aff_list::reverse() const
18101
0
{
18102
0
  auto res = isl_union_pw_multi_aff_list_reverse(copy());
18103
0
  return manage(res);
18104
0
}
18105
18106
union_pw_multi_aff_list union_pw_multi_aff_list::set_union_pw_multi_aff(int index, union_pw_multi_aff el) const
18107
0
{
18108
0
  auto res = isl_union_pw_multi_aff_list_set_union_pw_multi_aff(copy(), index, el.release());
18109
0
  return manage(res);
18110
0
}
18111
18112
int union_pw_multi_aff_list::size() const
18113
0
{
18114
0
  auto res = isl_union_pw_multi_aff_list_size(get());
18115
0
  return res;
18116
0
}
18117
18118
union_pw_multi_aff_list union_pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const
18119
0
{
18120
0
  auto res = isl_union_pw_multi_aff_list_swap(copy(), pos1, pos2);
18121
0
  return manage(res);
18122
0
}
18123
18124
// implementations for isl::union_pw_qpolynomial
18125
0
union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr) {
18126
0
  return union_pw_qpolynomial(ptr);
18127
0
}
18128
0
union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr) {
18129
0
  ptr = isl_union_pw_qpolynomial_copy(ptr);
18130
0
  return union_pw_qpolynomial(ptr);
18131
0
}
18132
18133
union_pw_qpolynomial::union_pw_qpolynomial()
18134
    : ptr(nullptr) {}
18135
18136
union_pw_qpolynomial::union_pw_qpolynomial(const union_pw_qpolynomial &obj)
18137
    : ptr(nullptr)
18138
{
18139
  ptr = obj.copy();
18140
}
18141
union_pw_qpolynomial::union_pw_qpolynomial(std::nullptr_t)
18142
    : ptr(nullptr) {}
18143
18144
18145
union_pw_qpolynomial::union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr)
18146
    : ptr(ptr) {}
18147
18148
union_pw_qpolynomial::union_pw_qpolynomial(ctx ctx, const std::string &str)
18149
{
18150
  auto res = isl_union_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
18151
  ptr = res;
18152
}
18153
18154
0
union_pw_qpolynomial &union_pw_qpolynomial::operator=(union_pw_qpolynomial obj) {
18155
0
  std::swap(this->ptr, obj.ptr);
18156
0
  return *this;
18157
0
}
18158
18159
union_pw_qpolynomial::~union_pw_qpolynomial() {
18160
  if (ptr)
18161
    isl_union_pw_qpolynomial_free(ptr);
18162
}
18163
18164
0
__isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::copy() const & {
18165
0
  return isl_union_pw_qpolynomial_copy(ptr);
18166
0
}
18167
18168
0
__isl_keep isl_union_pw_qpolynomial *union_pw_qpolynomial::get() const {
18169
0
  return ptr;
18170
0
}
18171
18172
0
__isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::release() {
18173
0
  isl_union_pw_qpolynomial *tmp = ptr;
18174
0
  ptr = nullptr;
18175
0
  return tmp;
18176
0
}
18177
18178
0
bool union_pw_qpolynomial::is_null() const {
18179
0
  return ptr == nullptr;
18180
0
}
18181
0
union_pw_qpolynomial::operator bool() const {
18182
0
  return !is_null();
18183
0
}
18184
18185
18186
0
ctx union_pw_qpolynomial::get_ctx() const {
18187
0
  return ctx(isl_union_pw_qpolynomial_get_ctx(ptr));
18188
0
}
18189
0
std::string union_pw_qpolynomial::to_str() const {
18190
0
  char *Tmp = isl_union_pw_qpolynomial_to_str(get());
18191
0
  if (!Tmp)
18192
0
    return "";
18193
0
  std::string S(Tmp);
18194
0
  free(Tmp);
18195
0
  return S;
18196
0
}
18197
18198
18199
18200
union_pw_qpolynomial union_pw_qpolynomial::add(union_pw_qpolynomial upwqp2) const
18201
0
{
18202
0
  auto res = isl_union_pw_qpolynomial_add(copy(), upwqp2.release());
18203
0
  return manage(res);
18204
0
}
18205
18206
union_pw_qpolynomial union_pw_qpolynomial::add_pw_qpolynomial(pw_qpolynomial pwqp) const
18207
0
{
18208
0
  auto res = isl_union_pw_qpolynomial_add_pw_qpolynomial(copy(), pwqp.release());
18209
0
  return manage(res);
18210
0
}
18211
18212
union_pw_qpolynomial union_pw_qpolynomial::align_params(space model) const
18213
0
{
18214
0
  auto res = isl_union_pw_qpolynomial_align_params(copy(), model.release());
18215
0
  return manage(res);
18216
0
}
18217
18218
union_pw_qpolynomial union_pw_qpolynomial::coalesce() const
18219
0
{
18220
0
  auto res = isl_union_pw_qpolynomial_coalesce(copy());
18221
0
  return manage(res);
18222
0
}
18223
18224
unsigned int union_pw_qpolynomial::dim(isl::dim type) const
18225
0
{
18226
0
  auto res = isl_union_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
18227
0
  return res;
18228
0
}
18229
18230
union_set union_pw_qpolynomial::domain() const
18231
0
{
18232
0
  auto res = isl_union_pw_qpolynomial_domain(copy());
18233
0
  return manage(res);
18234
0
}
18235
18236
union_pw_qpolynomial union_pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
18237
0
{
18238
0
  auto res = isl_union_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
18239
0
  return manage(res);
18240
0
}
18241
18242
val union_pw_qpolynomial::eval(point pnt) const
18243
0
{
18244
0
  auto res = isl_union_pw_qpolynomial_eval(copy(), pnt.release());
18245
0
  return manage(res);
18246
0
}
18247
18248
pw_qpolynomial union_pw_qpolynomial::extract_pw_qpolynomial(space dim) const
18249
0
{
18250
0
  auto res = isl_union_pw_qpolynomial_extract_pw_qpolynomial(get(), dim.release());
18251
0
  return manage(res);
18252
0
}
18253
18254
int union_pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const
18255
0
{
18256
0
  auto res = isl_union_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
18257
0
  return res;
18258
0
}
18259
18260
stat union_pw_qpolynomial::foreach_pw_qpolynomial(const std::function<stat(pw_qpolynomial)> &fn) const
18261
0
{
18262
0
  struct fn_data {
18263
0
    const std::function<stat(pw_qpolynomial)> *func;
18264
0
  } fn_data = { &fn };
18265
0
  auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
18266
0
    auto *data = static_cast<struct fn_data *>(arg_1);
18267
0
    stat ret = (*data->func)(manage(arg_0));
18268
0
    return ret.release();
18269
0
  };
18270
0
  auto res = isl_union_pw_qpolynomial_foreach_pw_qpolynomial(get(), fn_lambda, &fn_data);
18271
0
  return manage(res);
18272
0
}
18273
18274
union_pw_qpolynomial union_pw_qpolynomial::from_pw_qpolynomial(pw_qpolynomial pwqp)
18275
0
{
18276
0
  auto res = isl_union_pw_qpolynomial_from_pw_qpolynomial(pwqp.release());
18277
0
  return manage(res);
18278
0
}
18279
18280
pw_qpolynomial_list union_pw_qpolynomial::get_pw_qpolynomial_list() const
18281
0
{
18282
0
  auto res = isl_union_pw_qpolynomial_get_pw_qpolynomial_list(get());
18283
0
  return manage(res);
18284
0
}
18285
18286
space union_pw_qpolynomial::get_space() const
18287
0
{
18288
0
  auto res = isl_union_pw_qpolynomial_get_space(get());
18289
0
  return manage(res);
18290
0
}
18291
18292
union_pw_qpolynomial union_pw_qpolynomial::gist(union_set context) const
18293
0
{
18294
0
  auto res = isl_union_pw_qpolynomial_gist(copy(), context.release());
18295
0
  return manage(res);
18296
0
}
18297
18298
union_pw_qpolynomial union_pw_qpolynomial::gist_params(set context) const
18299
0
{
18300
0
  auto res = isl_union_pw_qpolynomial_gist_params(copy(), context.release());
18301
0
  return manage(res);
18302
0
}
18303
18304
union_pw_qpolynomial union_pw_qpolynomial::intersect_domain(union_set uset) const
18305
0
{
18306
0
  auto res = isl_union_pw_qpolynomial_intersect_domain(copy(), uset.release());
18307
0
  return manage(res);
18308
0
}
18309
18310
union_pw_qpolynomial union_pw_qpolynomial::intersect_params(set set) const
18311
0
{
18312
0
  auto res = isl_union_pw_qpolynomial_intersect_params(copy(), set.release());
18313
0
  return manage(res);
18314
0
}
18315
18316
boolean union_pw_qpolynomial::involves_nan() const
18317
0
{
18318
0
  auto res = isl_union_pw_qpolynomial_involves_nan(get());
18319
0
  return manage(res);
18320
0
}
18321
18322
union_pw_qpolynomial union_pw_qpolynomial::mul(union_pw_qpolynomial upwqp2) const
18323
0
{
18324
0
  auto res = isl_union_pw_qpolynomial_mul(copy(), upwqp2.release());
18325
0
  return manage(res);
18326
0
}
18327
18328
int union_pw_qpolynomial::n_pw_qpolynomial() const
18329
0
{
18330
0
  auto res = isl_union_pw_qpolynomial_n_pw_qpolynomial(get());
18331
0
  return res;
18332
0
}
18333
18334
union_pw_qpolynomial union_pw_qpolynomial::neg() const
18335
0
{
18336
0
  auto res = isl_union_pw_qpolynomial_neg(copy());
18337
0
  return manage(res);
18338
0
}
18339
18340
boolean union_pw_qpolynomial::plain_is_equal(const union_pw_qpolynomial &upwqp2) const
18341
0
{
18342
0
  auto res = isl_union_pw_qpolynomial_plain_is_equal(get(), upwqp2.get());
18343
0
  return manage(res);
18344
0
}
18345
18346
union_pw_qpolynomial union_pw_qpolynomial::reset_user() const
18347
0
{
18348
0
  auto res = isl_union_pw_qpolynomial_reset_user(copy());
18349
0
  return manage(res);
18350
0
}
18351
18352
union_pw_qpolynomial union_pw_qpolynomial::scale_down_val(val v) const
18353
0
{
18354
0
  auto res = isl_union_pw_qpolynomial_scale_down_val(copy(), v.release());
18355
0
  return manage(res);
18356
0
}
18357
18358
union_pw_qpolynomial union_pw_qpolynomial::scale_val(val v) const
18359
0
{
18360
0
  auto res = isl_union_pw_qpolynomial_scale_val(copy(), v.release());
18361
0
  return manage(res);
18362
0
}
18363
18364
union_pw_qpolynomial union_pw_qpolynomial::sub(union_pw_qpolynomial upwqp2) const
18365
0
{
18366
0
  auto res = isl_union_pw_qpolynomial_sub(copy(), upwqp2.release());
18367
0
  return manage(res);
18368
0
}
18369
18370
union_pw_qpolynomial union_pw_qpolynomial::subtract_domain(union_set uset) const
18371
0
{
18372
0
  auto res = isl_union_pw_qpolynomial_subtract_domain(copy(), uset.release());
18373
0
  return manage(res);
18374
0
}
18375
18376
union_pw_qpolynomial union_pw_qpolynomial::to_polynomial(int sign) const
18377
0
{
18378
0
  auto res = isl_union_pw_qpolynomial_to_polynomial(copy(), sign);
18379
0
  return manage(res);
18380
0
}
18381
18382
union_pw_qpolynomial union_pw_qpolynomial::zero(space dim)
18383
0
{
18384
0
  auto res = isl_union_pw_qpolynomial_zero(dim.release());
18385
0
  return manage(res);
18386
0
}
18387
18388
// implementations for isl::union_set
18389
23.8k
union_set manage(__isl_take isl_union_set *ptr) {
18390
23.8k
  return union_set(ptr);
18391
23.8k
}
18392
73
union_set manage_copy(__isl_keep isl_union_set *ptr) {
18393
73
  ptr = isl_union_set_copy(ptr);
18394
73
  return union_set(ptr);
18395
73
}
18396
18397
union_set::union_set()
18398
930
    : ptr(nullptr) {}
18399
18400
union_set::union_set(const union_set &obj)
18401
    : ptr(nullptr)
18402
13.8k
{
18403
13.8k
  ptr = obj.copy();
18404
13.8k
}
18405
union_set::union_set(std::nullptr_t)
18406
253
    : ptr(nullptr) {}
18407
18408
18409
union_set::union_set(__isl_take isl_union_set *ptr)
18410
23.8k
    : ptr(ptr) {}
18411
18412
union_set::union_set(basic_set bset)
18413
{
18414
  auto res = isl_union_set_from_basic_set(bset.release());
18415
  ptr = res;
18416
}
18417
union_set::union_set(set set)
18418
5.42k
{
18419
5.42k
  auto res = isl_union_set_from_set(set.release());
18420
5.42k
  ptr = res;
18421
5.42k
}
18422
union_set::union_set(point pnt)
18423
{
18424
  auto res = isl_union_set_from_point(pnt.release());
18425
  ptr = res;
18426
}
18427
union_set::union_set(ctx ctx, const std::string &str)
18428
204
{
18429
204
  auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
18430
204
  ptr = res;
18431
204
}
18432
18433
2.65k
union_set &union_set::operator=(union_set obj) {
18434
2.65k
  std::swap(this->ptr, obj.ptr);
18435
2.65k
  return *this;
18436
2.65k
}
18437
18438
44.5k
union_set::~union_set() {
18439
44.5k
  if (ptr)
18440
29.7k
    isl_union_set_free(ptr);
18441
44.5k
}
18442
18443
25.6k
__isl_give isl_union_set *union_set::copy() const & {
18444
25.6k
  return isl_union_set_copy(ptr);
18445
25.6k
}
18446
18447
9.12k
__isl_keep isl_union_set *union_set::get() const {
18448
9.12k
  return ptr;
18449
9.12k
}
18450
18451
12.4k
__isl_give isl_union_set *union_set::release() {
18452
12.4k
  isl_union_set *tmp = ptr;
18453
12.4k
  ptr = nullptr;
18454
12.4k
  return tmp;
18455
12.4k
}
18456
18457
791
bool union_set::is_null() const {
18458
791
  return ptr == nullptr;
18459
791
}
18460
791
union_set::operator bool() const {
18461
791
  return !is_null();
18462
791
}
18463
18464
18465
0
ctx union_set::get_ctx() const {
18466
0
  return ctx(isl_union_set_get_ctx(ptr));
18467
0
}
18468
0
std::string union_set::to_str() const {
18469
0
  char *Tmp = isl_union_set_to_str(get());
18470
0
  if (!Tmp)
18471
0
    return "";
18472
0
  std::string S(Tmp);
18473
0
  free(Tmp);
18474
0
  return S;
18475
0
}
18476
18477
18478
0
void union_set::dump() const {
18479
0
  isl_union_set_dump(get());
18480
0
}
18481
18482
18483
union_set union_set::add_set(set set) const
18484
1.15k
{
18485
1.15k
  auto res = isl_union_set_add_set(copy(), set.release());
18486
1.15k
  return manage(res);
18487
1.15k
}
18488
18489
union_set union_set::affine_hull() const
18490
6
{
18491
6
  auto res = isl_union_set_affine_hull(copy());
18492
6
  return manage(res);
18493
6
}
18494
18495
union_set union_set::align_params(space model) const
18496
0
{
18497
0
  auto res = isl_union_set_align_params(copy(), model.release());
18498
0
  return manage(res);
18499
0
}
18500
18501
union_set union_set::apply(union_map umap) const
18502
8
{
18503
8
  auto res = isl_union_set_apply(copy(), umap.release());
18504
8
  return manage(res);
18505
8
}
18506
18507
union_set union_set::coalesce() const
18508
110
{
18509
110
  auto res = isl_union_set_coalesce(copy());
18510
110
  return manage(res);
18511
110
}
18512
18513
union_set union_set::coefficients() const
18514
0
{
18515
0
  auto res = isl_union_set_coefficients(copy());
18516
0
  return manage(res);
18517
0
}
18518
18519
schedule union_set::compute_schedule(union_map validity, union_map proximity) const
18520
0
{
18521
0
  auto res = isl_union_set_compute_schedule(copy(), validity.release(), proximity.release());
18522
0
  return manage(res);
18523
0
}
18524
18525
boolean union_set::contains(const space &space) const
18526
283
{
18527
283
  auto res = isl_union_set_contains(get(), space.get());
18528
283
  return manage(res);
18529
283
}
18530
18531
union_set union_set::detect_equalities() const
18532
88
{
18533
88
  auto res = isl_union_set_detect_equalities(copy());
18534
88
  return manage(res);
18535
88
}
18536
18537
unsigned int union_set::dim(isl::dim type) const
18538
0
{
18539
0
  auto res = isl_union_set_dim(get(), static_cast<enum isl_dim_type>(type));
18540
0
  return res;
18541
0
}
18542
18543
union_set union_set::empty(space space)
18544
964
{
18545
964
  auto res = isl_union_set_empty(space.release());
18546
964
  return manage(res);
18547
964
}
18548
18549
set union_set::extract_set(space dim) const
18550
470
{
18551
470
  auto res = isl_union_set_extract_set(get(), dim.release());
18552
470
  return manage(res);
18553
470
}
18554
18555
stat union_set::foreach_point(const std::function<stat(point)> &fn) const
18556
0
{
18557
0
  struct fn_data {
18558
0
    const std::function<stat(point)> *func;
18559
0
  } fn_data = { &fn };
18560
0
  auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
18561
0
    auto *data = static_cast<struct fn_data *>(arg_1);
18562
0
    stat ret = (*data->func)(manage(arg_0));
18563
0
    return ret.release();
18564
0
  };
18565
0
  auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
18566
0
  return manage(res);
18567
0
}
18568
18569
stat union_set::foreach_set(const std::function<stat(set)> &fn) const
18570
{
18571
  struct fn_data {
18572
    const std::function<stat(set)> *func;
18573
  } fn_data = { &fn };
18574
  auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
18575
    auto *data = static_cast<struct fn_data *>(arg_1);
18576
    stat ret = (*data->func)(manage(arg_0));
18577
    return ret.release();
18578
  };
18579
  auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
18580
  return manage(res);
18581
}
18582
18583
basic_set_list union_set::get_basic_set_list() const
18584
0
{
18585
0
  auto res = isl_union_set_get_basic_set_list(get());
18586
0
  return manage(res);
18587
0
}
18588
18589
uint32_t union_set::get_hash() const
18590
0
{
18591
0
  auto res = isl_union_set_get_hash(get());
18592
0
  return res;
18593
0
}
18594
18595
set_list union_set::get_set_list() const
18596
2.88k
{
18597
2.88k
  auto res = isl_union_set_get_set_list(get());
18598
2.88k
  return manage(res);
18599
2.88k
}
18600
18601
space union_set::get_space() const
18602
2.74k
{
18603
2.74k
  auto res = isl_union_set_get_space(get());
18604
2.74k
  return manage(res);
18605
2.74k
}
18606
18607
union_set union_set::gist(union_set context) const
18608
0
{
18609
0
  auto res = isl_union_set_gist(copy(), context.release());
18610
0
  return manage(res);
18611
0
}
18612
18613
union_set union_set::gist_params(set set) const
18614
0
{
18615
0
  auto res = isl_union_set_gist_params(copy(), set.release());
18616
0
  return manage(res);
18617
0
}
18618
18619
union_map union_set::identity() const
18620
0
{
18621
0
  auto res = isl_union_set_identity(copy());
18622
0
  return manage(res);
18623
0
}
18624
18625
union_pw_multi_aff union_set::identity_union_pw_multi_aff() const
18626
14
{
18627
14
  auto res = isl_union_set_identity_union_pw_multi_aff(copy());
18628
14
  return manage(res);
18629
14
}
18630
18631
union_set union_set::intersect(union_set uset2) const
18632
311
{
18633
311
  auto res = isl_union_set_intersect(copy(), uset2.release());
18634
311
  return manage(res);
18635
311
}
18636
18637
union_set union_set::intersect_params(set set) const
18638
0
{
18639
0
  auto res = isl_union_set_intersect_params(copy(), set.release());
18640
0
  return manage(res);
18641
0
}
18642
18643
boolean union_set::is_disjoint(const union_set &uset2) const
18644
0
{
18645
0
  auto res = isl_union_set_is_disjoint(get(), uset2.get());
18646
0
  return manage(res);
18647
0
}
18648
18649
boolean union_set::is_empty() const
18650
8
{
18651
8
  auto res = isl_union_set_is_empty(get());
18652
8
  return manage(res);
18653
8
}
18654
18655
boolean union_set::is_equal(const union_set &uset2) const
18656
53
{
18657
53
  auto res = isl_union_set_is_equal(get(), uset2.get());
18658
53
  return manage(res);
18659
53
}
18660
18661
boolean union_set::is_params() const
18662
0
{
18663
0
  auto res = isl_union_set_is_params(get());
18664
0
  return manage(res);
18665
0
}
18666
18667
boolean union_set::is_strict_subset(const union_set &uset2) const
18668
0
{
18669
0
  auto res = isl_union_set_is_strict_subset(get(), uset2.get());
18670
0
  return manage(res);
18671
0
}
18672
18673
boolean union_set::is_subset(const union_set &uset2) const
18674
1.16k
{
18675
1.16k
  auto res = isl_union_set_is_subset(get(), uset2.get());
18676
1.16k
  return manage(res);
18677
1.16k
}
18678
18679
union_map union_set::lex_ge_union_set(union_set uset2) const
18680
0
{
18681
0
  auto res = isl_union_set_lex_ge_union_set(copy(), uset2.release());
18682
0
  return manage(res);
18683
0
}
18684
18685
union_map union_set::lex_gt_union_set(union_set uset2) const
18686
0
{
18687
0
  auto res = isl_union_set_lex_gt_union_set(copy(), uset2.release());
18688
0
  return manage(res);
18689
0
}
18690
18691
union_map union_set::lex_le_union_set(union_set uset2) const
18692
0
{
18693
0
  auto res = isl_union_set_lex_le_union_set(copy(), uset2.release());
18694
0
  return manage(res);
18695
0
}
18696
18697
union_map union_set::lex_lt_union_set(union_set uset2) const
18698
0
{
18699
0
  auto res = isl_union_set_lex_lt_union_set(copy(), uset2.release());
18700
0
  return manage(res);
18701
0
}
18702
18703
union_set union_set::lexmax() const
18704
0
{
18705
0
  auto res = isl_union_set_lexmax(copy());
18706
0
  return manage(res);
18707
0
}
18708
18709
union_set union_set::lexmin() const
18710
0
{
18711
0
  auto res = isl_union_set_lexmin(copy());
18712
0
  return manage(res);
18713
0
}
18714
18715
multi_val union_set::min_multi_union_pw_aff(const multi_union_pw_aff &obj) const
18716
0
{
18717
0
  auto res = isl_union_set_min_multi_union_pw_aff(get(), obj.get());
18718
0
  return manage(res);
18719
0
}
18720
18721
int union_set::n_set() const
18722
0
{
18723
0
  auto res = isl_union_set_n_set(get());
18724
0
  return res;
18725
0
}
18726
18727
set union_set::params() const
18728
8.84k
{
18729
8.84k
  auto res = isl_union_set_params(copy());
18730
8.84k
  return manage(res);
18731
8.84k
}
18732
18733
union_set union_set::polyhedral_hull() const
18734
0
{
18735
0
  auto res = isl_union_set_polyhedral_hull(copy());
18736
0
  return manage(res);
18737
0
}
18738
18739
union_set union_set::preimage(multi_aff ma) const
18740
0
{
18741
0
  auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
18742
0
  return manage(res);
18743
0
}
18744
18745
union_set union_set::preimage(pw_multi_aff pma) const
18746
0
{
18747
0
  auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
18748
0
  return manage(res);
18749
0
}
18750
18751
union_set union_set::preimage(union_pw_multi_aff upma) const
18752
0
{
18753
0
  auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
18754
0
  return manage(res);
18755
0
}
18756
18757
union_set union_set::product(union_set uset2) const
18758
0
{
18759
0
  auto res = isl_union_set_product(copy(), uset2.release());
18760
0
  return manage(res);
18761
0
}
18762
18763
union_set union_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
18764
0
{
18765
0
  auto res = isl_union_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
18766
0
  return manage(res);
18767
0
}
18768
18769
union_set union_set::remove_divs() const
18770
0
{
18771
0
  auto res = isl_union_set_remove_divs(copy());
18772
0
  return manage(res);
18773
0
}
18774
18775
union_set union_set::remove_redundancies() const
18776
0
{
18777
0
  auto res = isl_union_set_remove_redundancies(copy());
18778
0
  return manage(res);
18779
0
}
18780
18781
union_set union_set::reset_user() const
18782
0
{
18783
0
  auto res = isl_union_set_reset_user(copy());
18784
0
  return manage(res);
18785
0
}
18786
18787
basic_set union_set::sample() const
18788
0
{
18789
0
  auto res = isl_union_set_sample(copy());
18790
0
  return manage(res);
18791
0
}
18792
18793
point union_set::sample_point() const
18794
0
{
18795
0
  auto res = isl_union_set_sample_point(copy());
18796
0
  return manage(res);
18797
0
}
18798
18799
union_set union_set::simple_hull() const
18800
0
{
18801
0
  auto res = isl_union_set_simple_hull(copy());
18802
0
  return manage(res);
18803
0
}
18804
18805
union_set union_set::solutions() const
18806
0
{
18807
0
  auto res = isl_union_set_solutions(copy());
18808
0
  return manage(res);
18809
0
}
18810
18811
union_set union_set::subtract(union_set uset2) const
18812
323
{
18813
323
  auto res = isl_union_set_subtract(copy(), uset2.release());
18814
323
  return manage(res);
18815
323
}
18816
18817
union_set union_set::unite(union_set uset2) const
18818
612
{
18819
612
  auto res = isl_union_set_union(copy(), uset2.release());
18820
612
  return manage(res);
18821
612
}
18822
18823
union_set union_set::universe() const
18824
0
{
18825
0
  auto res = isl_union_set_universe(copy());
18826
0
  return manage(res);
18827
0
}
18828
18829
union_map union_set::unwrap() const
18830
273
{
18831
273
  auto res = isl_union_set_unwrap(copy());
18832
273
  return manage(res);
18833
273
}
18834
18835
union_map union_set::wrapped_domain_map() const
18836
0
{
18837
0
  auto res = isl_union_set_wrapped_domain_map(copy());
18838
0
  return manage(res);
18839
0
}
18840
18841
// implementations for isl::union_set_list
18842
0
union_set_list manage(__isl_take isl_union_set_list *ptr) {
18843
0
  return union_set_list(ptr);
18844
0
}
18845
0
union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
18846
0
  ptr = isl_union_set_list_copy(ptr);
18847
0
  return union_set_list(ptr);
18848
0
}
18849
18850
union_set_list::union_set_list()
18851
    : ptr(nullptr) {}
18852
18853
union_set_list::union_set_list(const union_set_list &obj)
18854
    : ptr(nullptr)
18855
{
18856
  ptr = obj.copy();
18857
}
18858
union_set_list::union_set_list(std::nullptr_t)
18859
    : ptr(nullptr) {}
18860
18861
18862
union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
18863
    : ptr(ptr) {}
18864
18865
18866
0
union_set_list &union_set_list::operator=(union_set_list obj) {
18867
0
  std::swap(this->ptr, obj.ptr);
18868
0
  return *this;
18869
0
}
18870
18871
union_set_list::~union_set_list() {
18872
  if (ptr)
18873
    isl_union_set_list_free(ptr);
18874
}
18875
18876
0
__isl_give isl_union_set_list *union_set_list::copy() const & {
18877
0
  return isl_union_set_list_copy(ptr);
18878
0
}
18879
18880
0
__isl_keep isl_union_set_list *union_set_list::get() const {
18881
0
  return ptr;
18882
0
}
18883
18884
0
__isl_give isl_union_set_list *union_set_list::release() {
18885
0
  isl_union_set_list *tmp = ptr;
18886
0
  ptr = nullptr;
18887
0
  return tmp;
18888
0
}
18889
18890
0
bool union_set_list::is_null() const {
18891
0
  return ptr == nullptr;
18892
0
}
18893
0
union_set_list::operator bool() const {
18894
0
  return !is_null();
18895
0
}
18896
18897
18898
0
ctx union_set_list::get_ctx() const {
18899
0
  return ctx(isl_union_set_list_get_ctx(ptr));
18900
0
}
18901
18902
0
void union_set_list::dump() const {
18903
0
  isl_union_set_list_dump(get());
18904
0
}
18905
18906
18907
union_set_list union_set_list::add(union_set el) const
18908
0
{
18909
0
  auto res = isl_union_set_list_add(copy(), el.release());
18910
0
  return manage(res);
18911
0
}
18912
18913
union_set_list union_set_list::alloc(ctx ctx, int n)
18914
0
{
18915
0
  auto res = isl_union_set_list_alloc(ctx.release(), n);
18916
0
  return manage(res);
18917
0
}
18918
18919
union_set_list union_set_list::concat(union_set_list list2) const
18920
0
{
18921
0
  auto res = isl_union_set_list_concat(copy(), list2.release());
18922
0
  return manage(res);
18923
0
}
18924
18925
union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
18926
0
{
18927
0
  auto res = isl_union_set_list_drop(copy(), first, n);
18928
0
  return manage(res);
18929
0
}
18930
18931
stat union_set_list::foreach(const std::function<stat(union_set)> &fn) const
18932
0
{
18933
0
  struct fn_data {
18934
0
    const std::function<stat(union_set)> *func;
18935
0
  } fn_data = { &fn };
18936
0
  auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
18937
0
    auto *data = static_cast<struct fn_data *>(arg_1);
18938
0
    stat ret = (*data->func)(manage(arg_0));
18939
0
    return ret.release();
18940
0
  };
18941
0
  auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
18942
0
  return manage(res);
18943
0
}
18944
18945
union_set_list union_set_list::from_union_set(union_set el)
18946
0
{
18947
0
  auto res = isl_union_set_list_from_union_set(el.release());
18948
0
  return manage(res);
18949
0
}
18950
18951
union_set union_set_list::get_at(int index) const
18952
0
{
18953
0
  auto res = isl_union_set_list_get_at(get(), index);
18954
0
  return manage(res);
18955
0
}
18956
18957
union_set union_set_list::get_union_set(int index) const
18958
0
{
18959
0
  auto res = isl_union_set_list_get_union_set(get(), index);
18960
0
  return manage(res);
18961
0
}
18962
18963
union_set_list union_set_list::insert(unsigned int pos, union_set el) const
18964
0
{
18965
0
  auto res = isl_union_set_list_insert(copy(), pos, el.release());
18966
0
  return manage(res);
18967
0
}
18968
18969
int union_set_list::n_union_set() const
18970
0
{
18971
0
  auto res = isl_union_set_list_n_union_set(get());
18972
0
  return res;
18973
0
}
18974
18975
union_set_list union_set_list::reverse() const
18976
0
{
18977
0
  auto res = isl_union_set_list_reverse(copy());
18978
0
  return manage(res);
18979
0
}
18980
18981
union_set_list union_set_list::set_union_set(int index, union_set el) const
18982
0
{
18983
0
  auto res = isl_union_set_list_set_union_set(copy(), index, el.release());
18984
0
  return manage(res);
18985
0
}
18986
18987
int union_set_list::size() const
18988
0
{
18989
0
  auto res = isl_union_set_list_size(get());
18990
0
  return res;
18991
0
}
18992
18993
union_set_list union_set_list::swap(unsigned int pos1, unsigned int pos2) const
18994
0
{
18995
0
  auto res = isl_union_set_list_swap(copy(), pos1, pos2);
18996
0
  return manage(res);
18997
0
}
18998
18999
union_set union_set_list::unite() const
19000
0
{
19001
0
  auto res = isl_union_set_list_union(copy());
19002
0
  return manage(res);
19003
0
}
19004
19005
// implementations for isl::val
19006
10.2k
val manage(__isl_take isl_val *ptr) {
19007
10.2k
  return val(ptr);
19008
10.2k
}
19009
0
val manage_copy(__isl_keep isl_val *ptr) {
19010
0
  ptr = isl_val_copy(ptr);
19011
0
  return val(ptr);
19012
0
}
19013
19014
val::val()
19015
1.38k
    : ptr(nullptr) {}
19016
19017
val::val(const val &obj)
19018
    : ptr(nullptr)
19019
10.0k
{
19020
10.0k
  ptr = obj.copy();
19021
10.0k
}
19022
val::val(std::nullptr_t)
19023
    : ptr(nullptr) {}
19024
19025
19026
val::val(__isl_take isl_val *ptr)
19027
10.2k
    : ptr(ptr) {}
19028
19029
val::val(ctx ctx, const std::string &str)
19030
{
19031
  auto res = isl_val_read_from_str(ctx.release(), str.c_str());
19032
  ptr = res;
19033
}
19034
val::val(ctx ctx, long i)
19035
3.29k
{
19036
3.29k
  auto res = isl_val_int_from_si(ctx.release(), i);
19037
3.29k
  ptr = res;
19038
3.29k
}
19039
19040
5.55k
val &val::operator=(val obj) {
19041
5.55k
  std::swap(this->ptr, obj.ptr);
19042
5.55k
  return *this;
19043
5.55k
}
19044
19045
24.9k
val::~val() {
19046
24.9k
  if (ptr)
19047
13.2k
    isl_val_free(ptr);
19048
24.9k
}
19049
19050
13.0k
__isl_give isl_val *val::copy() const & {
19051
13.0k
  return isl_val_copy(ptr);
19052
13.0k
}
19053
19054
618
__isl_keep isl_val *val::get() const {
19055
618
  return ptr;
19056
618
}
19057
19058
10.2k
__isl_give isl_val *val::release() {
19059
10.2k
  isl_val *tmp = ptr;
19060
10.2k
  ptr = nullptr;
19061
10.2k
  return tmp;
19062
10.2k
}
19063
19064
598
bool val::is_null() const {
19065
598
  return ptr == nullptr;
19066
598
}
19067
598
val::operator bool() const {
19068
598
  return !is_null();
19069
598
}
19070
19071
19072
0
ctx val::get_ctx() const {
19073
0
  return ctx(isl_val_get_ctx(ptr));
19074
0
}
19075
0
std::string val::to_str() const {
19076
0
  char *Tmp = isl_val_to_str(get());
19077
0
  if (!Tmp)
19078
0
    return "";
19079
0
  std::string S(Tmp);
19080
0
  free(Tmp);
19081
0
  return S;
19082
0
}
19083
19084
19085
0
void val::dump() const {
19086
0
  isl_val_dump(get());
19087
0
}
19088
19089
19090
val val::abs() const
19091
0
{
19092
0
  auto res = isl_val_abs(copy());
19093
0
  return manage(res);
19094
0
}
19095
19096
boolean val::abs_eq(const val &v2) const
19097
0
{
19098
0
  auto res = isl_val_abs_eq(get(), v2.get());
19099
0
  return manage(res);
19100
0
}
19101
19102
val val::add(val v2) const
19103
0
{
19104
0
  auto res = isl_val_add(copy(), v2.release());
19105
0
  return manage(res);
19106
0
}
19107
19108
val val::add_ui(unsigned long v2) const
19109
39
{
19110
39
  auto res = isl_val_add_ui(copy(), v2);
19111
39
  return manage(res);
19112
39
}
19113
19114
val val::ceil() const
19115
0
{
19116
0
  auto res = isl_val_ceil(copy());
19117
0
  return manage(res);
19118
0
}
19119
19120
int val::cmp_si(long i) const
19121
{
19122
  auto res = isl_val_cmp_si(get(), i);
19123
  return res;
19124
}
19125
19126
val val::div(val v2) const
19127
0
{
19128
0
  auto res = isl_val_div(copy(), v2.release());
19129
0
  return manage(res);
19130
0
}
19131
19132
val val::div_ui(unsigned long v2) const
19133
0
{
19134
0
  auto res = isl_val_div_ui(copy(), v2);
19135
0
  return manage(res);
19136
0
}
19137
19138
boolean val::eq(const val &v2) const
19139
3
{
19140
3
  auto res = isl_val_eq(get(), v2.get());
19141
3
  return manage(res);
19142
3
}
19143
19144
val val::floor() const
19145
0
{
19146
0
  auto res = isl_val_floor(copy());
19147
0
  return manage(res);
19148
0
}
19149
19150
val val::gcd(val v2) const
19151
0
{
19152
0
  auto res = isl_val_gcd(copy(), v2.release());
19153
0
  return manage(res);
19154
0
}
19155
19156
boolean val::ge(const val &v2) const
19157
0
{
19158
0
  auto res = isl_val_ge(get(), v2.get());
19159
0
  return manage(res);
19160
0
}
19161
19162
uint32_t val::get_hash() const
19163
0
{
19164
0
  auto res = isl_val_get_hash(get());
19165
0
  return res;
19166
0
}
19167
19168
long val::get_num_si() const
19169
99
{
19170
99
  auto res = isl_val_get_num_si(get());
19171
99
  return res;
19172
99
}
19173
19174
boolean val::gt(const val &v2) const
19175
0
{
19176
0
  auto res = isl_val_gt(get(), v2.get());
19177
0
  return manage(res);
19178
0
}
19179
19180
boolean val::gt_si(long i) const
19181
0
{
19182
0
  auto res = isl_val_gt_si(get(), i);
19183
0
  return manage(res);
19184
0
}
19185
19186
val val::infty(ctx ctx)
19187
0
{
19188
0
  auto res = isl_val_infty(ctx.release());
19189
0
  return manage(res);
19190
0
}
19191
19192
val val::int_from_ui(ctx ctx, unsigned long u)
19193
3.27k
{
19194
3.27k
  auto res = isl_val_int_from_ui(ctx.release(), u);
19195
3.27k
  return manage(res);
19196
3.27k
}
19197
19198
val val::inv() const
19199
0
{
19200
0
  auto res = isl_val_inv(copy());
19201
0
  return manage(res);
19202
0
}
19203
19204
boolean val::is_divisible_by(const val &v2) const
19205
0
{
19206
0
  auto res = isl_val_is_divisible_by(get(), v2.get());
19207
0
  return manage(res);
19208
0
}
19209
19210
boolean val::is_infty() const
19211
0
{
19212
0
  auto res = isl_val_is_infty(get());
19213
0
  return manage(res);
19214
0
}
19215
19216
boolean val::is_int() const
19217
5
{
19218
5
  auto res = isl_val_is_int(get());
19219
5
  return manage(res);
19220
5
}
19221
19222
boolean val::is_nan() const
19223
324
{
19224
324
  auto res = isl_val_is_nan(get());
19225
324
  return manage(res);
19226
324
}
19227
19228
boolean val::is_neg() const
19229
0
{
19230
0
  auto res = isl_val_is_neg(get());
19231
0
  return manage(res);
19232
0
}
19233
19234
boolean val::is_neginfty() const
19235
0
{
19236
0
  auto res = isl_val_is_neginfty(get());
19237
0
  return manage(res);
19238
0
}
19239
19240
boolean val::is_negone() const
19241
{
19242
  auto res = isl_val_is_negone(get());
19243
  return manage(res);
19244
}
19245
19246
boolean val::is_nonneg() const
19247
0
{
19248
0
  auto res = isl_val_is_nonneg(get());
19249
0
  return manage(res);
19250
0
}
19251
19252
boolean val::is_nonpos() const
19253
0
{
19254
0
  auto res = isl_val_is_nonpos(get());
19255
0
  return manage(res);
19256
0
}
19257
19258
boolean val::is_one() const
19259
97
{
19260
97
  auto res = isl_val_is_one(get());
19261
97
  return manage(res);
19262
97
}
19263
19264
boolean val::is_pos() const
19265
0
{
19266
0
  auto res = isl_val_is_pos(get());
19267
0
  return manage(res);
19268
0
}
19269
19270
boolean val::is_rat() const
19271
0
{
19272
0
  auto res = isl_val_is_rat(get());
19273
0
  return manage(res);
19274
0
}
19275
19276
boolean val::is_zero() const
19277
84
{
19278
84
  auto res = isl_val_is_zero(get());
19279
84
  return manage(res);
19280
84
}
19281
19282
boolean val::le(const val &v2) const
19283
0
{
19284
0
  auto res = isl_val_le(get(), v2.get());
19285
0
  return manage(res);
19286
0
}
19287
19288
boolean val::lt(const val &v2) const
19289
0
{
19290
0
  auto res = isl_val_lt(get(), v2.get());
19291
0
  return manage(res);
19292
0
}
19293
19294
val val::max(val v2) const
19295
0
{
19296
0
  auto res = isl_val_max(copy(), v2.release());
19297
0
  return manage(res);
19298
0
}
19299
19300
val val::min(val v2) const
19301
0
{
19302
0
  auto res = isl_val_min(copy(), v2.release());
19303
0
  return manage(res);
19304
0
}
19305
19306
val val::mod(val v2) const
19307
0
{
19308
0
  auto res = isl_val_mod(copy(), v2.release());
19309
0
  return manage(res);
19310
0
}
19311
19312
val val::mul(val v2) const
19313
0
{
19314
0
  auto res = isl_val_mul(copy(), v2.release());
19315
0
  return manage(res);
19316
0
}
19317
19318
val val::mul_ui(unsigned long v2) const
19319
0
{
19320
0
  auto res = isl_val_mul_ui(copy(), v2);
19321
0
  return manage(res);
19322
0
}
19323
19324
size_t val::n_abs_num_chunks(size_t size) const
19325
0
{
19326
0
  auto res = isl_val_n_abs_num_chunks(get(), size);
19327
0
  return res;
19328
0
}
19329
19330
val val::nan(ctx ctx)
19331
0
{
19332
0
  auto res = isl_val_nan(ctx.release());
19333
0
  return manage(res);
19334
0
}
19335
19336
boolean val::ne(const val &v2) const
19337
0
{
19338
0
  auto res = isl_val_ne(get(), v2.get());
19339
0
  return manage(res);
19340
0
}
19341
19342
val val::neg() const
19343
{
19344
  auto res = isl_val_neg(copy());
19345
  return manage(res);
19346
}
19347
19348
val val::neginfty(ctx ctx)
19349
0
{
19350
0
  auto res = isl_val_neginfty(ctx.release());
19351
0
  return manage(res);
19352
0
}
19353
19354
val val::negone(ctx ctx)
19355
0
{
19356
0
  auto res = isl_val_negone(ctx.release());
19357
0
  return manage(res);
19358
0
}
19359
19360
val val::one(ctx ctx)
19361
99
{
19362
99
  auto res = isl_val_one(ctx.release());
19363
99
  return manage(res);
19364
99
}
19365
19366
val val::pow2() const
19367
2.93k
{
19368
2.93k
  auto res = isl_val_pow2(copy());
19369
2.93k
  return manage(res);
19370
2.93k
}
19371
19372
val val::set_si(long i) const
19373
0
{
19374
0
  auto res = isl_val_set_si(copy(), i);
19375
0
  return manage(res);
19376
0
}
19377
19378
int val::sgn() const
19379
0
{
19380
0
  auto res = isl_val_sgn(get());
19381
0
  return res;
19382
0
}
19383
19384
val val::sub(val v2) const
19385
39
{
19386
39
  auto res = isl_val_sub(copy(), v2.release());
19387
39
  return manage(res);
19388
39
}
19389
19390
val val::sub_ui(unsigned long v2) const
19391
10
{
19392
10
  auto res = isl_val_sub_ui(copy(), v2);
19393
10
  return manage(res);
19394
10
}
19395
19396
val val::trunc() const
19397
0
{
19398
0
  auto res = isl_val_trunc(copy());
19399
0
  return manage(res);
19400
0
}
19401
19402
val val::zero(ctx ctx)
19403
{
19404
  auto res = isl_val_zero(ctx.release());
19405
  return manage(res);
19406
}
19407
19408
// implementations for isl::val_list
19409
0
val_list manage(__isl_take isl_val_list *ptr) {
19410
0
  return val_list(ptr);
19411
0
}
19412
0
val_list manage_copy(__isl_keep isl_val_list *ptr) {
19413
0
  ptr = isl_val_list_copy(ptr);
19414
0
  return val_list(ptr);
19415
0
}
19416
19417
val_list::val_list()
19418
    : ptr(nullptr) {}
19419
19420
val_list::val_list(const val_list &obj)
19421
    : ptr(nullptr)
19422
{
19423
  ptr = obj.copy();
19424
}
19425
val_list::val_list(std::nullptr_t)
19426
    : ptr(nullptr) {}
19427
19428
19429
val_list::val_list(__isl_take isl_val_list *ptr)
19430
    : ptr(ptr) {}
19431
19432
19433
0
val_list &val_list::operator=(val_list obj) {
19434
0
  std::swap(this->ptr, obj.ptr);
19435
0
  return *this;
19436
0
}
19437
19438
val_list::~val_list() {
19439
  if (ptr)
19440
    isl_val_list_free(ptr);
19441
}
19442
19443
0
__isl_give isl_val_list *val_list::copy() const & {
19444
0
  return isl_val_list_copy(ptr);
19445
0
}
19446
19447
0
__isl_keep isl_val_list *val_list::get() const {
19448
0
  return ptr;
19449
0
}
19450
19451
0
__isl_give isl_val_list *val_list::release() {
19452
0
  isl_val_list *tmp = ptr;
19453
0
  ptr = nullptr;
19454
0
  return tmp;
19455
0
}
19456
19457
0
bool val_list::is_null() const {
19458
0
  return ptr == nullptr;
19459
0
}
19460
0
val_list::operator bool() const {
19461
0
  return !is_null();
19462
0
}
19463
19464
19465
0
ctx val_list::get_ctx() const {
19466
0
  return ctx(isl_val_list_get_ctx(ptr));
19467
0
}
19468
19469
0
void val_list::dump() const {
19470
0
  isl_val_list_dump(get());
19471
0
}
19472
19473
19474
val_list val_list::add(val el) const
19475
0
{
19476
0
  auto res = isl_val_list_add(copy(), el.release());
19477
0
  return manage(res);
19478
0
}
19479
19480
val_list val_list::alloc(ctx ctx, int n)
19481
0
{
19482
0
  auto res = isl_val_list_alloc(ctx.release(), n);
19483
0
  return manage(res);
19484
0
}
19485
19486
val_list val_list::concat(val_list list2) const
19487
0
{
19488
0
  auto res = isl_val_list_concat(copy(), list2.release());
19489
0
  return manage(res);
19490
0
}
19491
19492
val_list val_list::drop(unsigned int first, unsigned int n) const
19493
0
{
19494
0
  auto res = isl_val_list_drop(copy(), first, n);
19495
0
  return manage(res);
19496
0
}
19497
19498
stat val_list::foreach(const std::function<stat(val)> &fn) const
19499
0
{
19500
0
  struct fn_data {
19501
0
    const std::function<stat(val)> *func;
19502
0
  } fn_data = { &fn };
19503
0
  auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
19504
0
    auto *data = static_cast<struct fn_data *>(arg_1);
19505
0
    stat ret = (*data->func)(manage(arg_0));
19506
0
    return ret.release();
19507
0
  };
19508
0
  auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
19509
0
  return manage(res);
19510
0
}
19511
19512
val_list val_list::from_val(val el)
19513
0
{
19514
0
  auto res = isl_val_list_from_val(el.release());
19515
0
  return manage(res);
19516
0
}
19517
19518
val val_list::get_at(int index) const
19519
0
{
19520
0
  auto res = isl_val_list_get_at(get(), index);
19521
0
  return manage(res);
19522
0
}
19523
19524
val val_list::get_val(int index) const
19525
0
{
19526
0
  auto res = isl_val_list_get_val(get(), index);
19527
0
  return manage(res);
19528
0
}
19529
19530
val_list val_list::insert(unsigned int pos, val el) const
19531
0
{
19532
0
  auto res = isl_val_list_insert(copy(), pos, el.release());
19533
0
  return manage(res);
19534
0
}
19535
19536
int val_list::n_val() const
19537
0
{
19538
0
  auto res = isl_val_list_n_val(get());
19539
0
  return res;
19540
0
}
19541
19542
val_list val_list::reverse() const
19543
0
{
19544
0
  auto res = isl_val_list_reverse(copy());
19545
0
  return manage(res);
19546
0
}
19547
19548
val_list val_list::set_val(int index, val el) const
19549
0
{
19550
0
  auto res = isl_val_list_set_val(copy(), index, el.release());
19551
0
  return manage(res);
19552
0
}
19553
19554
int val_list::size() const
19555
0
{
19556
0
  auto res = isl_val_list_size(get());
19557
0
  return res;
19558
0
}
19559
19560
val_list val_list::swap(unsigned int pos1, unsigned int pos2) const
19561
0
{
19562
0
  auto res = isl_val_list_swap(copy(), pos1, pos2);
19563
0
  return manage(res);
19564
0
}
19565
19566
// implementations for isl::vec
19567
0
vec manage(__isl_take isl_vec *ptr) {
19568
0
  return vec(ptr);
19569
0
}
19570
0
vec manage_copy(__isl_keep isl_vec *ptr) {
19571
0
  ptr = isl_vec_copy(ptr);
19572
0
  return vec(ptr);
19573
0
}
19574
19575
vec::vec()
19576
    : ptr(nullptr) {}
19577
19578
vec::vec(const vec &obj)
19579
    : ptr(nullptr)
19580
{
19581
  ptr = obj.copy();
19582
}
19583
vec::vec(std::nullptr_t)
19584
    : ptr(nullptr) {}
19585
19586
19587
vec::vec(__isl_take isl_vec *ptr)
19588
    : ptr(ptr) {}
19589
19590
19591
0
vec &vec::operator=(vec obj) {
19592
0
  std::swap(this->ptr, obj.ptr);
19593
0
  return *this;
19594
0
}
19595
19596
vec::~vec() {
19597
  if (ptr)
19598
    isl_vec_free(ptr);
19599
}
19600
19601
0
__isl_give isl_vec *vec::copy() const & {
19602
0
  return isl_vec_copy(ptr);
19603
0
}
19604
19605
0
__isl_keep isl_vec *vec::get() const {
19606
0
  return ptr;
19607
0
}
19608
19609
0
__isl_give isl_vec *vec::release() {
19610
0
  isl_vec *tmp = ptr;
19611
0
  ptr = nullptr;
19612
0
  return tmp;
19613
0
}
19614
19615
0
bool vec::is_null() const {
19616
0
  return ptr == nullptr;
19617
0
}
19618
0
vec::operator bool() const {
19619
0
  return !is_null();
19620
0
}
19621
19622
19623
0
ctx vec::get_ctx() const {
19624
0
  return ctx(isl_vec_get_ctx(ptr));
19625
0
}
19626
19627
0
void vec::dump() const {
19628
0
  isl_vec_dump(get());
19629
0
}
19630
19631
19632
vec vec::add(vec vec2) const
19633
0
{
19634
0
  auto res = isl_vec_add(copy(), vec2.release());
19635
0
  return manage(res);
19636
0
}
19637
19638
vec vec::add_els(unsigned int n) const
19639
0
{
19640
0
  auto res = isl_vec_add_els(copy(), n);
19641
0
  return manage(res);
19642
0
}
19643
19644
vec vec::alloc(ctx ctx, unsigned int size)
19645
0
{
19646
0
  auto res = isl_vec_alloc(ctx.release(), size);
19647
0
  return manage(res);
19648
0
}
19649
19650
vec vec::ceil() const
19651
0
{
19652
0
  auto res = isl_vec_ceil(copy());
19653
0
  return manage(res);
19654
0
}
19655
19656
vec vec::clr() const
19657
0
{
19658
0
  auto res = isl_vec_clr(copy());
19659
0
  return manage(res);
19660
0
}
19661
19662
int vec::cmp_element(const vec &vec2, int pos) const
19663
0
{
19664
0
  auto res = isl_vec_cmp_element(get(), vec2.get(), pos);
19665
0
  return res;
19666
0
}
19667
19668
vec vec::concat(vec vec2) const
19669
0
{
19670
0
  auto res = isl_vec_concat(copy(), vec2.release());
19671
0
  return manage(res);
19672
0
}
19673
19674
vec vec::drop_els(unsigned int pos, unsigned int n) const
19675
0
{
19676
0
  auto res = isl_vec_drop_els(copy(), pos, n);
19677
0
  return manage(res);
19678
0
}
19679
19680
vec vec::extend(unsigned int size) const
19681
0
{
19682
0
  auto res = isl_vec_extend(copy(), size);
19683
0
  return manage(res);
19684
0
}
19685
19686
val vec::get_element_val(int pos) const
19687
0
{
19688
0
  auto res = isl_vec_get_element_val(get(), pos);
19689
0
  return manage(res);
19690
0
}
19691
19692
vec vec::insert_els(unsigned int pos, unsigned int n) const
19693
0
{
19694
0
  auto res = isl_vec_insert_els(copy(), pos, n);
19695
0
  return manage(res);
19696
0
}
19697
19698
vec vec::insert_zero_els(unsigned int pos, unsigned int n) const
19699
0
{
19700
0
  auto res = isl_vec_insert_zero_els(copy(), pos, n);
19701
0
  return manage(res);
19702
0
}
19703
19704
boolean vec::is_equal(const vec &vec2) const
19705
0
{
19706
0
  auto res = isl_vec_is_equal(get(), vec2.get());
19707
0
  return manage(res);
19708
0
}
19709
19710
vec vec::mat_product(mat mat) const
19711
0
{
19712
0
  auto res = isl_vec_mat_product(copy(), mat.release());
19713
0
  return manage(res);
19714
0
}
19715
19716
vec vec::move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const
19717
0
{
19718
0
  auto res = isl_vec_move_els(copy(), dst_col, src_col, n);
19719
0
  return manage(res);
19720
0
}
19721
19722
vec vec::neg() const
19723
0
{
19724
0
  auto res = isl_vec_neg(copy());
19725
0
  return manage(res);
19726
0
}
19727
19728
vec vec::set_element_si(int pos, int v) const
19729
0
{
19730
0
  auto res = isl_vec_set_element_si(copy(), pos, v);
19731
0
  return manage(res);
19732
0
}
19733
19734
vec vec::set_element_val(int pos, val v) const
19735
0
{
19736
0
  auto res = isl_vec_set_element_val(copy(), pos, v.release());
19737
0
  return manage(res);
19738
0
}
19739
19740
vec vec::set_si(int v) const
19741
0
{
19742
0
  auto res = isl_vec_set_si(copy(), v);
19743
0
  return manage(res);
19744
0
}
19745
19746
vec vec::set_val(val v) const
19747
0
{
19748
0
  auto res = isl_vec_set_val(copy(), v.release());
19749
0
  return manage(res);
19750
0
}
19751
19752
int vec::size() const
19753
0
{
19754
0
  auto res = isl_vec_size(get());
19755
0
  return res;
19756
0
}
19757
19758
vec vec::sort() const
19759
0
{
19760
0
  auto res = isl_vec_sort(copy());
19761
0
  return manage(res);
19762
0
}
19763
19764
vec vec::zero(ctx ctx, unsigned int size)
19765
0
{
19766
0
  auto res = isl_vec_zero(ctx.release(), size);
19767
0
  return manage(res);
19768
0
}
19769
19770
vec vec::zero_extend(unsigned int size) const
19771
0
{
19772
0
  auto res = isl_vec_zero_extend(copy(), size);
19773
0
  return manage(res);
19774
0
}
19775
} // namespace noexceptions 
19776
} // namespace isl
19777
19778
#endif /* ISL_CPP_CHECKED */