Coverage Report

Created: 2017-06-28 17:40

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