/// These are automatically generated checked C++ bindings for isl. /// /// isl is a library for computing with integer sets and maps described by /// Presburger formulas. On top of this, isl provides various tools for /// polyhedral compilation, ranging from dependence analysis over scheduling /// to AST generation. #ifndef ISL_CPP_CHECKED #define ISL_CPP_CHECKED #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace isl { inline namespace noexceptions { #define ISLPP_STRINGIZE_(X) #X #define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X) #define ISLPP_ASSERT(test, message) \ do { \ if (test) \ break; \ fputs("Assertion \"" #test "\" failed at " __FILE__ \ ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \ stderr); \ abort(); \ } while (0) class boolean { private: mutable bool checked = false; isl_bool val; friend boolean manage(isl_bool val); boolean(isl_bool val): val(val) {} public: boolean() : val(isl_bool_error) {} ~boolean() { // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state"); } /* implicit */ boolean(bool val) : val(val ? isl_bool_true : isl_bool_false) {} bool is_error() const { checked = true; return val == isl_bool_error; } bool is_false() const { checked = true; return val == isl_bool_false; } bool is_true() const { checked = true; return val == isl_bool_true; } operator bool() const { // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked error state"); ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state"); return is_true(); } boolean operator!() const { if (is_error()) return *this; return !is_true(); } }; inline boolean manage(isl_bool val) { return boolean(val); } class ctx { isl_ctx *ptr; public: /* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {} isl_ctx *release() { auto tmp = ptr; ptr = nullptr; return tmp; } isl_ctx *get() { return ptr; } }; /* Class encapsulating an isl_stat value. */ class stat { private: mutable bool checked = false; isl_stat val; friend stat manage(isl_stat val); public: constexpr stat(isl_stat val) : val(val) {} static stat ok() { return stat(isl_stat_ok); } static stat error() { return stat(isl_stat_error); } stat() : val(isl_stat_error) {} ~stat() { // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state"); } isl_stat release() { checked = true; return val; } bool is_error() const { checked = true; return val == isl_stat_error; } bool is_ok() const { checked = true; return val == isl_stat_ok; } }; inline stat manage(isl_stat val) { return stat(val); } enum class dim { cst = isl_dim_cst, param = isl_dim_param, in = isl_dim_in, out = isl_dim_out, set = isl_dim_set, div = isl_dim_div, all = isl_dim_all }; } } // namespace isl namespace isl { inline namespace noexceptions { // forward declarations class aff; class aff_list; class ast_build; class ast_expr; class ast_expr_list; class ast_node; class ast_node_list; class basic_map; class basic_map_list; class basic_set; class basic_set_list; class constraint; class constraint_list; class fixed_box; class id; class id_list; class id_to_ast_expr; class local_space; class map; class map_list; class mat; class multi_aff; class multi_pw_aff; class multi_union_pw_aff; class multi_val; class point; class pw_aff; class pw_aff_list; class pw_multi_aff; class pw_multi_aff_list; class pw_qpolynomial; class pw_qpolynomial_fold_list; class pw_qpolynomial_list; class qpolynomial; class schedule; class schedule_constraints; class schedule_node; class set; class set_list; class space; class term; class union_access_info; class union_flow; class union_map; class union_map_list; class union_pw_aff; class union_pw_aff_list; class union_pw_multi_aff; class union_pw_multi_aff_list; class union_pw_qpolynomial; class union_set; class union_set_list; class val; class val_list; class vec; // declarations for isl::aff inline aff manage(__isl_take isl_aff *ptr); inline aff manage_copy(__isl_keep isl_aff *ptr); class aff { friend inline aff manage(__isl_take isl_aff *ptr); friend inline aff manage_copy(__isl_keep isl_aff *ptr); isl_aff *ptr = nullptr; inline explicit aff(__isl_take isl_aff *ptr); public: inline /* implicit */ aff(); inline /* implicit */ aff(const aff &obj); inline /* implicit */ aff(std::nullptr_t); inline explicit aff(local_space ls); inline explicit aff(local_space ls, val val); inline explicit aff(ctx ctx, const std::string &str); inline aff &operator=(aff obj); inline ~aff(); inline __isl_give isl_aff *copy() const &; inline __isl_give isl_aff *copy() && = delete; inline __isl_keep isl_aff *get() const; inline __isl_give isl_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline aff add(aff aff2) const; inline aff add_coefficient_si(isl::dim type, int pos, int v) const; inline aff add_coefficient_val(isl::dim type, int pos, val v) const; inline aff add_constant_num_si(int v) const; inline aff add_constant_si(int v) const; inline aff add_constant_val(val v) const; inline aff add_dims(isl::dim type, unsigned int n) const; inline aff align_params(space model) const; inline aff ceil() const; inline int coefficient_sgn(isl::dim type, int pos) const; inline int dim(isl::dim type) const; inline aff div(aff aff2) const; inline aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_set eq_basic_set(aff aff2) const; inline set eq_set(aff aff2) const; inline val eval(point pnt) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline aff floor() const; inline aff from_range() const; inline basic_set ge_basic_set(aff aff2) const; inline set ge_set(aff aff2) const; inline val get_coefficient_val(isl::dim type, int pos) const; inline val get_constant_val() const; inline val get_denominator_val() const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline aff get_div(int pos) const; inline local_space get_domain_local_space() const; inline space get_domain_space() const; inline uint32_t get_hash() const; inline local_space get_local_space() const; inline space get_space() const; inline aff gist(set context) const; inline aff gist_params(set context) const; inline basic_set gt_basic_set(aff aff2) const; inline set gt_set(aff aff2) const; inline aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_cst() const; inline boolean is_nan() const; inline basic_set le_basic_set(aff aff2) const; inline set le_set(aff aff2) const; inline basic_set lt_basic_set(aff aff2) const; inline set lt_set(aff aff2) const; inline aff mod(val mod) const; inline aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline aff mul(aff aff2) const; static inline aff nan_on_domain(local_space ls); inline set ne_set(aff aff2) const; inline aff neg() const; inline basic_set neg_basic_set() const; static inline aff param_on_domain_space_id(space space, id id); inline boolean plain_is_equal(const aff &aff2) const; inline boolean plain_is_zero() const; inline aff project_domain_on_params() const; inline aff pullback(multi_aff ma) const; inline aff pullback_aff(aff aff2) const; inline aff scale(val v) const; inline aff scale_down(val v) const; inline aff scale_down_ui(unsigned int f) const; inline aff set_coefficient_si(isl::dim type, int pos, int v) const; inline aff set_coefficient_val(isl::dim type, int pos, val v) const; inline aff set_constant_si(int v) const; inline aff set_constant_val(val v) const; inline aff set_dim_id(isl::dim type, unsigned int pos, id id) const; inline aff set_tuple_id(isl::dim type, id id) const; inline aff sub(aff aff2) const; static inline aff var_on_domain(local_space ls, isl::dim type, unsigned int pos); inline basic_set zero_basic_set() const; }; // declarations for isl::aff_list inline aff_list manage(__isl_take isl_aff_list *ptr); inline aff_list manage_copy(__isl_keep isl_aff_list *ptr); class aff_list { friend inline aff_list manage(__isl_take isl_aff_list *ptr); friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr); isl_aff_list *ptr = nullptr; inline explicit aff_list(__isl_take isl_aff_list *ptr); public: inline /* implicit */ aff_list(); inline /* implicit */ aff_list(const aff_list &obj); inline /* implicit */ aff_list(std::nullptr_t); inline aff_list &operator=(aff_list obj); inline ~aff_list(); inline __isl_give isl_aff_list *copy() const &; inline __isl_give isl_aff_list *copy() && = delete; inline __isl_keep isl_aff_list *get() const; inline __isl_give isl_aff_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline aff_list add(aff el) const; static inline aff_list alloc(ctx ctx, int n); inline aff_list concat(aff_list list2) const; inline aff_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline aff_list from_aff(aff el); inline aff get_aff(int index) const; inline aff get_at(int index) const; inline aff_list insert(unsigned int pos, aff el) const; inline int n_aff() const; inline aff_list reverse() const; inline aff_list set_aff(int index, aff el) const; inline int size() const; inline aff_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::ast_build inline ast_build manage(__isl_take isl_ast_build *ptr); inline ast_build manage_copy(__isl_keep isl_ast_build *ptr); class ast_build { friend inline ast_build manage(__isl_take isl_ast_build *ptr); friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr); isl_ast_build *ptr = nullptr; inline explicit ast_build(__isl_take isl_ast_build *ptr); public: inline /* implicit */ ast_build(); inline /* implicit */ ast_build(const ast_build &obj); inline /* implicit */ ast_build(std::nullptr_t); inline explicit ast_build(ctx ctx); inline ast_build &operator=(ast_build obj); inline ~ast_build(); inline __isl_give isl_ast_build *copy() const &; inline __isl_give isl_ast_build *copy() && = delete; inline __isl_keep isl_ast_build *get() const; inline __isl_give isl_ast_build *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline ast_expr access_from(pw_multi_aff pma) const; inline ast_expr access_from(multi_pw_aff mpa) const; inline ast_node ast_from_schedule(union_map schedule) const; inline ast_expr call_from(pw_multi_aff pma) const; inline ast_expr call_from(multi_pw_aff mpa) const; inline ast_expr expr_from(set set) const; inline ast_expr expr_from(pw_aff pa) const; static inline ast_build from_context(set set); inline union_map get_schedule() const; inline space get_schedule_space() const; inline ast_node node_from_schedule(schedule schedule) const; inline ast_node node_from_schedule_map(union_map schedule) const; inline ast_build restrict(set set) const; }; // declarations for isl::ast_expr inline ast_expr manage(__isl_take isl_ast_expr *ptr); inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr); class ast_expr { friend inline ast_expr manage(__isl_take isl_ast_expr *ptr); friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr); isl_ast_expr *ptr = nullptr; inline explicit ast_expr(__isl_take isl_ast_expr *ptr); public: inline /* implicit */ ast_expr(); inline /* implicit */ ast_expr(const ast_expr &obj); inline /* implicit */ ast_expr(std::nullptr_t); inline ast_expr &operator=(ast_expr obj); inline ~ast_expr(); inline __isl_give isl_ast_expr *copy() const &; inline __isl_give isl_ast_expr *copy() && = delete; inline __isl_keep isl_ast_expr *get() const; inline __isl_give isl_ast_expr *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline ast_expr access(ast_expr_list indices) const; inline ast_expr add(ast_expr expr2) const; inline ast_expr address_of() const; inline ast_expr call(ast_expr_list arguments) const; inline ast_expr div(ast_expr expr2) const; inline ast_expr eq(ast_expr expr2) const; static inline ast_expr from_id(id id); static inline ast_expr from_val(val v); inline ast_expr ge(ast_expr expr2) const; inline id get_id() const; inline ast_expr get_op_arg(int pos) const; inline int get_op_n_arg() const; inline val get_val() const; inline ast_expr gt(ast_expr expr2) const; inline boolean is_equal(const ast_expr &expr2) const; inline ast_expr le(ast_expr expr2) const; inline ast_expr lt(ast_expr expr2) const; inline ast_expr mul(ast_expr expr2) const; inline ast_expr neg() const; inline ast_expr pdiv_q(ast_expr expr2) const; inline ast_expr pdiv_r(ast_expr expr2) const; inline ast_expr set_op_arg(int pos, ast_expr arg) const; inline ast_expr sub(ast_expr expr2) const; inline ast_expr substitute_ids(id_to_ast_expr id2expr) const; inline std::string to_C_str() const; }; // declarations for isl::ast_expr_list inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr); inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr); class ast_expr_list { friend inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr); friend inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr); isl_ast_expr_list *ptr = nullptr; inline explicit ast_expr_list(__isl_take isl_ast_expr_list *ptr); public: inline /* implicit */ ast_expr_list(); inline /* implicit */ ast_expr_list(const ast_expr_list &obj); inline /* implicit */ ast_expr_list(std::nullptr_t); inline ast_expr_list &operator=(ast_expr_list obj); inline ~ast_expr_list(); inline __isl_give isl_ast_expr_list *copy() const &; inline __isl_give isl_ast_expr_list *copy() && = delete; inline __isl_keep isl_ast_expr_list *get() const; inline __isl_give isl_ast_expr_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline ast_expr_list add(ast_expr el) const; static inline ast_expr_list alloc(ctx ctx, int n); inline ast_expr_list concat(ast_expr_list list2) const; inline ast_expr_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline ast_expr_list from_ast_expr(ast_expr el); inline ast_expr get_ast_expr(int index) const; inline ast_expr get_at(int index) const; inline ast_expr_list insert(unsigned int pos, ast_expr el) const; inline int n_ast_expr() const; inline ast_expr_list reverse() const; inline ast_expr_list set_ast_expr(int index, ast_expr el) const; inline int size() const; inline ast_expr_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::ast_node inline ast_node manage(__isl_take isl_ast_node *ptr); inline ast_node manage_copy(__isl_keep isl_ast_node *ptr); class ast_node { friend inline ast_node manage(__isl_take isl_ast_node *ptr); friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr); isl_ast_node *ptr = nullptr; inline explicit ast_node(__isl_take isl_ast_node *ptr); public: inline /* implicit */ ast_node(); inline /* implicit */ ast_node(const ast_node &obj); inline /* implicit */ ast_node(std::nullptr_t); inline ast_node &operator=(ast_node obj); inline ~ast_node(); inline __isl_give isl_ast_node *copy() const &; inline __isl_give isl_ast_node *copy() && = delete; inline __isl_keep isl_ast_node *get() const; inline __isl_give isl_ast_node *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; static inline ast_node alloc_user(ast_expr expr); inline ast_node_list block_get_children() const; inline ast_node for_get_body() const; inline ast_expr for_get_cond() const; inline ast_expr for_get_inc() const; inline ast_expr for_get_init() const; inline ast_expr for_get_iterator() const; inline boolean for_is_degenerate() const; inline id get_annotation() const; inline ast_expr if_get_cond() const; inline ast_node if_get_else() const; inline ast_node if_get_then() const; inline boolean if_has_else() const; inline id mark_get_id() const; inline ast_node mark_get_node() const; inline ast_node set_annotation(id annotation) const; inline std::string to_C_str() const; inline ast_expr user_get_expr() const; }; // declarations for isl::ast_node_list inline ast_node_list manage(__isl_take isl_ast_node_list *ptr); inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr); class ast_node_list { friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr); friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr); isl_ast_node_list *ptr = nullptr; inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr); public: inline /* implicit */ ast_node_list(); inline /* implicit */ ast_node_list(const ast_node_list &obj); inline /* implicit */ ast_node_list(std::nullptr_t); inline ast_node_list &operator=(ast_node_list obj); inline ~ast_node_list(); inline __isl_give isl_ast_node_list *copy() const &; inline __isl_give isl_ast_node_list *copy() && = delete; inline __isl_keep isl_ast_node_list *get() const; inline __isl_give isl_ast_node_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline ast_node_list add(ast_node el) const; static inline ast_node_list alloc(ctx ctx, int n); inline ast_node_list concat(ast_node_list list2) const; inline ast_node_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline ast_node_list from_ast_node(ast_node el); inline ast_node get_ast_node(int index) const; inline ast_node get_at(int index) const; inline ast_node_list insert(unsigned int pos, ast_node el) const; inline int n_ast_node() const; inline ast_node_list reverse() const; inline ast_node_list set_ast_node(int index, ast_node el) const; inline int size() const; inline ast_node_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::basic_map inline basic_map manage(__isl_take isl_basic_map *ptr); inline basic_map manage_copy(__isl_keep isl_basic_map *ptr); class basic_map { friend inline basic_map manage(__isl_take isl_basic_map *ptr); friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr); isl_basic_map *ptr = nullptr; inline explicit basic_map(__isl_take isl_basic_map *ptr); public: inline /* implicit */ basic_map(); inline /* implicit */ basic_map(const basic_map &obj); inline /* implicit */ basic_map(std::nullptr_t); inline explicit basic_map(ctx ctx, const std::string &str); inline basic_map &operator=(basic_map obj); inline ~basic_map(); inline __isl_give isl_basic_map *copy() const &; inline __isl_give isl_basic_map *copy() && = delete; inline __isl_keep isl_basic_map *get() const; inline __isl_give isl_basic_map *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline basic_map add_constraint(constraint constraint) const; inline basic_map add_dims(isl::dim type, unsigned int n) const; inline basic_map affine_hull() const; inline basic_map align_params(space model) const; inline basic_map apply_domain(basic_map bmap2) const; inline basic_map apply_range(basic_map bmap2) const; inline boolean can_curry() const; inline boolean can_uncurry() const; inline boolean can_zip() const; inline basic_map curry() const; inline basic_set deltas() const; inline basic_map deltas_map() const; inline basic_map detect_equalities() const; inline unsigned int dim(isl::dim type) const; inline basic_set domain() const; inline basic_map domain_map() const; inline basic_map domain_product(basic_map bmap2) const; inline basic_map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_map drop_unused_params() const; inline basic_map eliminate(isl::dim type, unsigned int first, unsigned int n) const; static inline basic_map empty(space space); static inline basic_map equal(space dim, unsigned int n_equal); inline mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const; inline basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline basic_map fix_si(isl::dim type, unsigned int pos, int value) const; inline basic_map fix_val(isl::dim type, unsigned int pos, val v) const; inline basic_map flat_product(basic_map bmap2) const; inline basic_map flat_range_product(basic_map bmap2) const; inline basic_map flatten() const; inline basic_map flatten_domain() const; inline basic_map flatten_range() const; inline stat foreach_constraint(const std::function &fn) const; static inline basic_map from_aff(aff aff); static inline basic_map from_aff_list(space domain_space, aff_list list); static inline basic_map from_constraint(constraint constraint); static inline basic_map from_domain(basic_set bset); static inline basic_map from_domain_and_range(basic_set domain, basic_set range); static inline basic_map from_multi_aff(multi_aff maff); static inline basic_map from_qpolynomial(qpolynomial qp); static inline basic_map from_range(basic_set bset); inline constraint_list get_constraint_list() const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline aff get_div(int pos) const; inline local_space get_local_space() const; inline space get_space() const; inline std::string get_tuple_name(isl::dim type) const; inline basic_map gist(basic_map context) const; inline basic_map gist_domain(basic_set context) const; inline boolean has_dim_id(isl::dim type, unsigned int pos) const; static inline basic_map identity(space dim); inline boolean image_is_bounded() const; inline mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const; inline basic_map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const; inline basic_map intersect(basic_map bmap2) const; inline basic_map intersect_domain(basic_set bset) const; inline basic_map intersect_range(basic_set bset) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_disjoint(const basic_map &bmap2) const; inline boolean is_empty() const; inline boolean is_equal(const basic_map &bmap2) const; inline boolean is_rational() const; inline boolean is_single_valued() const; inline boolean is_strict_subset(const basic_map &bmap2) const; inline boolean is_subset(const basic_map &bmap2) const; inline boolean is_universe() const; static inline basic_map less_at(space dim, unsigned int pos); inline map lexmax() const; inline map lexmin() const; inline pw_multi_aff lexmin_pw_multi_aff() const; inline basic_map lower_bound_si(isl::dim type, unsigned int pos, int value) const; static inline basic_map more_at(space dim, unsigned int pos); inline basic_map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline int n_constraint() const; static inline basic_map nat_universe(space dim); inline basic_map neg() const; inline basic_map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline basic_map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const; inline boolean plain_is_empty() const; inline boolean plain_is_universe() const; inline basic_map preimage_domain_multi_aff(multi_aff ma) const; inline basic_map preimage_range_multi_aff(multi_aff ma) const; inline basic_map product(basic_map bmap2) const; inline basic_map project_out(isl::dim type, unsigned int first, unsigned int n) const; inline basic_set range() const; inline basic_map range_map() const; inline basic_map range_product(basic_map bmap2) const; inline basic_map remove_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_map remove_divs() const; inline basic_map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_map remove_redundancies() const; inline basic_map reverse() const; inline basic_map sample() const; inline basic_map set_tuple_id(isl::dim type, id id) const; inline basic_map set_tuple_name(isl::dim type, const std::string &s) const; inline basic_map sum(basic_map bmap2) const; inline basic_map uncurry() const; inline map unite(basic_map bmap2) const; static inline basic_map universe(space space); inline basic_map upper_bound_si(isl::dim type, unsigned int pos, int value) const; inline basic_set wrap() const; inline basic_map zip() const; }; // declarations for isl::basic_map_list inline basic_map_list manage(__isl_take isl_basic_map_list *ptr); inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr); class basic_map_list { friend inline basic_map_list manage(__isl_take isl_basic_map_list *ptr); friend inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr); isl_basic_map_list *ptr = nullptr; inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr); public: inline /* implicit */ basic_map_list(); inline /* implicit */ basic_map_list(const basic_map_list &obj); inline /* implicit */ basic_map_list(std::nullptr_t); inline basic_map_list &operator=(basic_map_list obj); inline ~basic_map_list(); inline __isl_give isl_basic_map_list *copy() const &; inline __isl_give isl_basic_map_list *copy() && = delete; inline __isl_keep isl_basic_map_list *get() const; inline __isl_give isl_basic_map_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline basic_map_list add(basic_map el) const; static inline basic_map_list alloc(ctx ctx, int n); inline basic_map_list concat(basic_map_list list2) const; inline basic_map_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline basic_map_list from_basic_map(basic_map el); inline basic_map get_at(int index) const; inline basic_map get_basic_map(int index) const; inline basic_map_list insert(unsigned int pos, basic_map el) const; inline int n_basic_map() const; inline basic_map_list reverse() const; inline basic_map_list set_basic_map(int index, basic_map el) const; inline int size() const; inline basic_map_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::basic_set inline basic_set manage(__isl_take isl_basic_set *ptr); inline basic_set manage_copy(__isl_keep isl_basic_set *ptr); class basic_set { friend inline basic_set manage(__isl_take isl_basic_set *ptr); friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr); isl_basic_set *ptr = nullptr; inline explicit basic_set(__isl_take isl_basic_set *ptr); public: inline /* implicit */ basic_set(); inline /* implicit */ basic_set(const basic_set &obj); inline /* implicit */ basic_set(std::nullptr_t); inline explicit basic_set(ctx ctx, const std::string &str); inline /* implicit */ basic_set(point pnt); inline basic_set &operator=(basic_set obj); inline ~basic_set(); inline __isl_give isl_basic_set *copy() const &; inline __isl_give isl_basic_set *copy() && = delete; inline __isl_keep isl_basic_set *get() const; inline __isl_give isl_basic_set *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline basic_set affine_hull() const; inline basic_set align_params(space model) const; inline basic_set apply(basic_map bmap) const; static inline basic_set box_from_points(point pnt1, point pnt2); inline basic_set coefficients() const; inline basic_set detect_equalities() const; inline unsigned int dim(isl::dim type) const; inline val dim_max_val(int pos) const; inline basic_set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_set drop_unused_params() const; inline basic_set eliminate(isl::dim type, unsigned int first, unsigned int n) const; static inline basic_set empty(space space); inline mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const; inline basic_set fix_si(isl::dim type, unsigned int pos, int value) const; inline basic_set fix_val(isl::dim type, unsigned int pos, val v) const; inline basic_set flat_product(basic_set bset2) const; inline basic_set flatten() const; inline stat foreach_bound_pair(isl::dim type, unsigned int pos, const std::function &fn) const; inline stat foreach_constraint(const std::function &fn) const; static inline basic_set from_constraint(constraint constraint); static inline basic_set from_multi_aff(multi_aff ma); inline basic_set from_params() const; inline constraint_list get_constraint_list() const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline aff get_div(int pos) const; inline local_space get_local_space() const; inline space get_space() const; inline std::string get_tuple_name() const; inline basic_set gist(basic_set context) const; inline mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const; inline basic_set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const; inline basic_set intersect(basic_set bset2) const; inline basic_set intersect_params(basic_set bset2) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_bounded() const; inline boolean is_disjoint(const basic_set &bset2) const; inline boolean is_empty() const; inline boolean is_equal(const basic_set &bset2) const; inline int is_rational() const; inline boolean is_subset(const basic_set &bset2) const; inline boolean is_universe() const; inline boolean is_wrapping() const; inline set lexmax() const; inline set lexmin() const; inline basic_set lower_bound_val(isl::dim type, unsigned int pos, val value) const; inline val max_val(const aff &obj) const; inline basic_set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline int n_constraint() const; inline unsigned int n_dim() const; static inline basic_set nat_universe(space dim); inline basic_set neg() const; inline basic_set params() const; inline boolean plain_is_empty() const; inline boolean plain_is_equal(const basic_set &bset2) const; inline boolean plain_is_universe() const; static inline basic_set positive_orthant(space space); inline basic_set preimage_multi_aff(multi_aff ma) const; inline basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const; inline mat reduced_basis() const; inline basic_set remove_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_set remove_divs() const; inline basic_set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline basic_set remove_redundancies() const; inline basic_set remove_unknown_divs() const; inline basic_set sample() const; inline point sample_point() const; inline basic_set set_tuple_id(id id) const; inline basic_set set_tuple_name(const std::string &s) const; inline basic_set solutions() const; inline set unite(basic_set bset2) const; static inline basic_set universe(space space); inline basic_map unwrap() const; inline basic_set upper_bound_val(isl::dim type, unsigned int pos, val value) const; }; // declarations for isl::basic_set_list inline basic_set_list manage(__isl_take isl_basic_set_list *ptr); inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr); class basic_set_list { friend inline basic_set_list manage(__isl_take isl_basic_set_list *ptr); friend inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr); isl_basic_set_list *ptr = nullptr; inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr); public: inline /* implicit */ basic_set_list(); inline /* implicit */ basic_set_list(const basic_set_list &obj); inline /* implicit */ basic_set_list(std::nullptr_t); inline basic_set_list &operator=(basic_set_list obj); inline ~basic_set_list(); inline __isl_give isl_basic_set_list *copy() const &; inline __isl_give isl_basic_set_list *copy() && = delete; inline __isl_keep isl_basic_set_list *get() const; inline __isl_give isl_basic_set_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline basic_set_list add(basic_set el) const; static inline basic_set_list alloc(ctx ctx, int n); inline basic_set_list coefficients() const; inline basic_set_list concat(basic_set_list list2) const; inline basic_set_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline basic_set_list from_basic_set(basic_set el); inline basic_set get_at(int index) const; inline basic_set get_basic_set(int index) const; inline basic_set_list insert(unsigned int pos, basic_set el) const; inline int n_basic_set() const; inline basic_set_list reverse() const; inline basic_set_list set_basic_set(int index, basic_set el) const; inline int size() const; inline basic_set_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::constraint inline constraint manage(__isl_take isl_constraint *ptr); inline constraint manage_copy(__isl_keep isl_constraint *ptr); class constraint { friend inline constraint manage(__isl_take isl_constraint *ptr); friend inline constraint manage_copy(__isl_keep isl_constraint *ptr); isl_constraint *ptr = nullptr; inline explicit constraint(__isl_take isl_constraint *ptr); public: inline /* implicit */ constraint(); inline /* implicit */ constraint(const constraint &obj); inline /* implicit */ constraint(std::nullptr_t); inline constraint &operator=(constraint obj); inline ~constraint(); inline __isl_give isl_constraint *copy() const &; inline __isl_give isl_constraint *copy() && = delete; inline __isl_keep isl_constraint *get() const; inline __isl_give isl_constraint *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; static inline constraint alloc_equality(local_space ls); static inline constraint alloc_inequality(local_space ls); inline int cmp_last_non_zero(const constraint &c2) const; inline aff get_aff() const; inline aff get_bound(isl::dim type, int pos) const; inline val get_coefficient_val(isl::dim type, int pos) const; inline val get_constant_val() const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline aff get_div(int pos) const; inline local_space get_local_space() const; inline space get_space() const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline int is_div_constraint() const; inline boolean is_lower_bound(isl::dim type, unsigned int pos) const; inline boolean is_upper_bound(isl::dim type, unsigned int pos) const; inline int plain_cmp(const constraint &c2) const; inline constraint set_coefficient_si(isl::dim type, int pos, int v) const; inline constraint set_coefficient_val(isl::dim type, int pos, val v) const; inline constraint set_constant_si(int v) const; inline constraint set_constant_val(val v) const; }; // declarations for isl::constraint_list inline constraint_list manage(__isl_take isl_constraint_list *ptr); inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr); class constraint_list { friend inline constraint_list manage(__isl_take isl_constraint_list *ptr); friend inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr); isl_constraint_list *ptr = nullptr; inline explicit constraint_list(__isl_take isl_constraint_list *ptr); public: inline /* implicit */ constraint_list(); inline /* implicit */ constraint_list(const constraint_list &obj); inline /* implicit */ constraint_list(std::nullptr_t); inline constraint_list &operator=(constraint_list obj); inline ~constraint_list(); inline __isl_give isl_constraint_list *copy() const &; inline __isl_give isl_constraint_list *copy() && = delete; inline __isl_keep isl_constraint_list *get() const; inline __isl_give isl_constraint_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline constraint_list add(constraint el) const; static inline constraint_list alloc(ctx ctx, int n); inline constraint_list concat(constraint_list list2) const; inline constraint_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline constraint_list from_constraint(constraint el); inline constraint get_at(int index) const; inline constraint get_constraint(int index) const; inline constraint_list insert(unsigned int pos, constraint el) const; inline int n_constraint() const; inline constraint_list reverse() const; inline constraint_list set_constraint(int index, constraint el) const; inline int size() const; inline constraint_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::fixed_box inline fixed_box manage(__isl_take isl_fixed_box *ptr); inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr); class fixed_box { friend inline fixed_box manage(__isl_take isl_fixed_box *ptr); friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr); isl_fixed_box *ptr = nullptr; inline explicit fixed_box(__isl_take isl_fixed_box *ptr); public: inline /* implicit */ fixed_box(); inline /* implicit */ fixed_box(const fixed_box &obj); inline /* implicit */ fixed_box(std::nullptr_t); inline fixed_box &operator=(fixed_box obj); inline ~fixed_box(); inline __isl_give isl_fixed_box *copy() const &; inline __isl_give isl_fixed_box *copy() && = delete; inline __isl_keep isl_fixed_box *get() const; inline __isl_give isl_fixed_box *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline multi_aff get_offset() const; inline multi_val get_size() const; inline space get_space() const; inline boolean is_valid() const; }; // declarations for isl::id inline id manage(__isl_take isl_id *ptr); inline id manage_copy(__isl_keep isl_id *ptr); class id { friend inline id manage(__isl_take isl_id *ptr); friend inline id manage_copy(__isl_keep isl_id *ptr); isl_id *ptr = nullptr; inline explicit id(__isl_take isl_id *ptr); public: inline /* implicit */ id(); inline /* implicit */ id(const id &obj); inline /* implicit */ id(std::nullptr_t); inline id &operator=(id obj); inline ~id(); inline __isl_give isl_id *copy() const &; inline __isl_give isl_id *copy() && = delete; inline __isl_keep isl_id *get() const; inline __isl_give isl_id *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; static inline id alloc(ctx ctx, const std::string &name, void * user); inline uint32_t get_hash() const; inline std::string get_name() const; inline void * get_user() const; }; // declarations for isl::id_list inline id_list manage(__isl_take isl_id_list *ptr); inline id_list manage_copy(__isl_keep isl_id_list *ptr); class id_list { friend inline id_list manage(__isl_take isl_id_list *ptr); friend inline id_list manage_copy(__isl_keep isl_id_list *ptr); isl_id_list *ptr = nullptr; inline explicit id_list(__isl_take isl_id_list *ptr); public: inline /* implicit */ id_list(); inline /* implicit */ id_list(const id_list &obj); inline /* implicit */ id_list(std::nullptr_t); inline id_list &operator=(id_list obj); inline ~id_list(); inline __isl_give isl_id_list *copy() const &; inline __isl_give isl_id_list *copy() && = delete; inline __isl_keep isl_id_list *get() const; inline __isl_give isl_id_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline id_list add(id el) const; static inline id_list alloc(ctx ctx, int n); inline id_list concat(id_list list2) const; inline id_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline id_list from_id(id el); inline id get_at(int index) const; inline id get_id(int index) const; inline id_list insert(unsigned int pos, id el) const; inline int n_id() const; inline id_list reverse() const; inline id_list set_id(int index, id el) const; inline int size() const; inline id_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::id_to_ast_expr inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr); inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr); class id_to_ast_expr { friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr); friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr); isl_id_to_ast_expr *ptr = nullptr; inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr); public: inline /* implicit */ id_to_ast_expr(); inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj); inline /* implicit */ id_to_ast_expr(std::nullptr_t); inline id_to_ast_expr &operator=(id_to_ast_expr obj); inline ~id_to_ast_expr(); inline __isl_give isl_id_to_ast_expr *copy() const &; inline __isl_give isl_id_to_ast_expr *copy() && = delete; inline __isl_keep isl_id_to_ast_expr *get() const; inline __isl_give isl_id_to_ast_expr *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; static inline id_to_ast_expr alloc(ctx ctx, int min_size); inline id_to_ast_expr drop(id key) const; inline stat foreach(const std::function &fn) const; inline ast_expr get(id key) const; inline boolean has(const id &key) const; inline id_to_ast_expr set(id key, ast_expr val) const; }; // declarations for isl::local_space inline local_space manage(__isl_take isl_local_space *ptr); inline local_space manage_copy(__isl_keep isl_local_space *ptr); class local_space { friend inline local_space manage(__isl_take isl_local_space *ptr); friend inline local_space manage_copy(__isl_keep isl_local_space *ptr); isl_local_space *ptr = nullptr; inline explicit local_space(__isl_take isl_local_space *ptr); public: inline /* implicit */ local_space(); inline /* implicit */ local_space(const local_space &obj); inline /* implicit */ local_space(std::nullptr_t); inline explicit local_space(space dim); inline local_space &operator=(local_space obj); inline ~local_space(); inline __isl_give isl_local_space *copy() const &; inline __isl_give isl_local_space *copy() && = delete; inline __isl_keep isl_local_space *get() const; inline __isl_give isl_local_space *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline local_space add_dims(isl::dim type, unsigned int n) const; inline int dim(isl::dim type) const; inline local_space domain() const; inline local_space drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline local_space flatten_domain() const; inline local_space flatten_range() const; inline local_space from_domain() const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline aff get_div(int pos) const; inline space get_space() const; inline boolean has_dim_id(isl::dim type, unsigned int pos) const; inline boolean has_dim_name(isl::dim type, unsigned int pos) const; inline local_space insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline local_space intersect(local_space ls2) const; inline boolean is_equal(const local_space &ls2) const; inline boolean is_params() const; inline boolean is_set() const; inline local_space range() const; inline local_space set_dim_id(isl::dim type, unsigned int pos, id id) const; inline local_space set_from_params() const; inline local_space set_tuple_id(isl::dim type, id id) const; inline local_space wrap() const; }; // declarations for isl::map inline map manage(__isl_take isl_map *ptr); inline map manage_copy(__isl_keep isl_map *ptr); class map { friend inline map manage(__isl_take isl_map *ptr); friend inline map manage_copy(__isl_keep isl_map *ptr); isl_map *ptr = nullptr; inline explicit map(__isl_take isl_map *ptr); public: inline /* implicit */ map(); inline /* implicit */ map(const map &obj); inline /* implicit */ map(std::nullptr_t); inline explicit map(ctx ctx, const std::string &str); inline /* implicit */ map(basic_map bmap); inline map &operator=(map obj); inline ~map(); inline __isl_give isl_map *copy() const &; inline __isl_give isl_map *copy() && = delete; inline __isl_keep isl_map *get() const; inline __isl_give isl_map *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline map add_constraint(constraint constraint) const; inline map add_dims(isl::dim type, unsigned int n) const; inline basic_map affine_hull() const; inline map align_params(space model) const; inline map apply_domain(map map2) const; inline map apply_range(map map2) const; inline boolean can_curry() const; inline boolean can_range_curry() const; inline boolean can_uncurry() const; inline boolean can_zip() const; inline map coalesce() const; inline map complement() const; inline basic_map convex_hull() const; inline map curry() const; inline set deltas() const; inline map deltas_map() const; inline map detect_equalities() const; inline unsigned int dim(isl::dim type) const; inline pw_aff dim_max(int pos) const; inline pw_aff dim_min(int pos) const; inline set domain() const; inline map domain_factor_domain() const; inline map domain_factor_range() const; inline boolean domain_is_wrapping() const; inline map domain_map() const; inline map domain_product(map map2) const; inline map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline map drop_unused_params() const; inline map eliminate(isl::dim type, unsigned int first, unsigned int n) const; static inline map empty(space space); inline map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline map factor_domain() const; inline map factor_range() const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline map fix_si(isl::dim type, unsigned int pos, int value) const; inline map fix_val(isl::dim type, unsigned int pos, val v) const; inline map fixed_power_val(val exp) const; inline map flat_domain_product(map map2) const; inline map flat_product(map map2) const; inline map flat_range_product(map map2) const; inline map flatten() const; inline map flatten_domain() const; inline map flatten_range() const; inline map floordiv_val(val d) const; inline stat foreach_basic_map(const std::function &fn) const; static inline map from_aff(aff aff); static inline map from_domain(set set); static inline map from_domain_and_range(set domain, set range); static inline map from_multi_aff(multi_aff maff); static inline map from_multi_pw_aff(multi_pw_aff mpa); static inline map from_pw_aff(pw_aff pwaff); static inline map from_pw_multi_aff(pw_multi_aff pma); static inline map from_range(set set); static inline map from_union_map(union_map umap); inline basic_map_list get_basic_map_list() const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline uint32_t get_hash() const; inline fixed_box get_range_simple_fixed_box_hull() const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline map gist(map context) const; inline map gist_basic_map(basic_map context) const; inline map gist_domain(set context) const; inline map gist_params(set context) const; inline map gist_range(set context) const; inline boolean has_dim_id(isl::dim type, unsigned int pos) const; inline boolean has_dim_name(isl::dim type, unsigned int pos) const; inline boolean has_equal_space(const map &map2) const; inline boolean has_tuple_id(isl::dim type) const; inline boolean has_tuple_name(isl::dim type) const; static inline map identity(space dim); inline map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const; inline map intersect(map map2) const; inline map intersect_domain(set set) const; inline map intersect_domain_factor_range(map factor) const; inline map intersect_params(set params) const; inline map intersect_range(set set) const; inline map intersect_range_factor_range(map factor) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_bijective() const; inline boolean is_disjoint(const map &map2) const; inline boolean is_empty() const; inline boolean is_equal(const map &map2) const; inline boolean is_identity() const; inline boolean is_injective() const; inline boolean is_product() const; inline boolean is_single_valued() const; inline boolean is_strict_subset(const map &map2) const; inline boolean is_subset(const map &map2) const; inline int is_translation() const; static inline map lex_ge(space set_dim); static inline map lex_ge_first(space dim, unsigned int n); inline map lex_ge_map(map map2) const; static inline map lex_gt(space set_dim); static inline map lex_gt_first(space dim, unsigned int n); inline map lex_gt_map(map map2) const; static inline map lex_le(space set_dim); static inline map lex_le_first(space dim, unsigned int n); inline map lex_le_map(map map2) const; static inline map lex_lt(space set_dim); static inline map lex_lt_first(space dim, unsigned int n); inline map lex_lt_map(map map2) const; inline map lexmax() const; inline pw_multi_aff lexmax_pw_multi_aff() const; inline map lexmin() const; inline pw_multi_aff lexmin_pw_multi_aff() const; inline map lower_bound_si(isl::dim type, unsigned int pos, int value) const; inline map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline int n_basic_map() const; static inline map nat_universe(space dim); inline map neg() const; inline map oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline map order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline set params() const; inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const; inline boolean plain_is_empty() const; inline boolean plain_is_equal(const map &map2) const; inline boolean plain_is_injective() const; inline boolean plain_is_single_valued() const; inline boolean plain_is_universe() const; inline basic_map plain_unshifted_simple_hull() const; inline basic_map polyhedral_hull() const; inline map preimage_domain_multi_aff(multi_aff ma) const; inline map preimage_domain_multi_pw_aff(multi_pw_aff mpa) const; inline map preimage_domain_pw_multi_aff(pw_multi_aff pma) const; inline map preimage_range_multi_aff(multi_aff ma) const; inline map preimage_range_pw_multi_aff(pw_multi_aff pma) const; inline map product(map map2) const; inline map project_out(isl::dim type, unsigned int first, unsigned int n) const; inline set range() const; inline map range_curry() const; inline map range_factor_domain() const; inline map range_factor_range() const; inline boolean range_is_wrapping() const; inline map range_map() const; inline map range_product(map map2) const; inline map remove_dims(isl::dim type, unsigned int first, unsigned int n) const; inline map remove_divs() const; inline map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline map remove_redundancies() const; inline map remove_unknown_divs() const; inline map reset_tuple_id(isl::dim type) const; inline map reset_user() const; inline map reverse() const; inline basic_map sample() const; inline map set_dim_id(isl::dim type, unsigned int pos, id id) const; inline map set_tuple_id(isl::dim type, id id) const; inline map set_tuple_name(isl::dim type, const std::string &s) const; inline basic_map simple_hull() const; inline map subtract(map map2) const; inline map subtract_domain(set dom) const; inline map subtract_range(set dom) const; inline map sum(map map2) const; inline map uncurry() const; inline map unite(map map2) const; static inline map universe(space space); inline basic_map unshifted_simple_hull() const; inline basic_map unshifted_simple_hull_from_map_list(map_list list) const; inline map upper_bound_si(isl::dim type, unsigned int pos, int value) const; inline set wrap() const; inline map zip() const; }; // declarations for isl::map_list inline map_list manage(__isl_take isl_map_list *ptr); inline map_list manage_copy(__isl_keep isl_map_list *ptr); class map_list { friend inline map_list manage(__isl_take isl_map_list *ptr); friend inline map_list manage_copy(__isl_keep isl_map_list *ptr); isl_map_list *ptr = nullptr; inline explicit map_list(__isl_take isl_map_list *ptr); public: inline /* implicit */ map_list(); inline /* implicit */ map_list(const map_list &obj); inline /* implicit */ map_list(std::nullptr_t); inline map_list &operator=(map_list obj); inline ~map_list(); inline __isl_give isl_map_list *copy() const &; inline __isl_give isl_map_list *copy() && = delete; inline __isl_keep isl_map_list *get() const; inline __isl_give isl_map_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline map_list add(map el) const; static inline map_list alloc(ctx ctx, int n); inline map_list concat(map_list list2) const; inline map_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline map_list from_map(map el); inline map get_at(int index) const; inline map get_map(int index) const; inline map_list insert(unsigned int pos, map el) const; inline int n_map() const; inline map_list reverse() const; inline map_list set_map(int index, map el) const; inline int size() const; inline map_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::mat inline mat manage(__isl_take isl_mat *ptr); inline mat manage_copy(__isl_keep isl_mat *ptr); class mat { friend inline mat manage(__isl_take isl_mat *ptr); friend inline mat manage_copy(__isl_keep isl_mat *ptr); isl_mat *ptr = nullptr; inline explicit mat(__isl_take isl_mat *ptr); public: inline /* implicit */ mat(); inline /* implicit */ mat(const mat &obj); inline /* implicit */ mat(std::nullptr_t); inline mat &operator=(mat obj); inline ~mat(); inline __isl_give isl_mat *copy() const &; inline __isl_give isl_mat *copy() && = delete; inline __isl_keep isl_mat *get() const; inline __isl_give isl_mat *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline mat add_rows(unsigned int n) const; inline mat add_zero_cols(unsigned int n) const; inline mat add_zero_rows(unsigned int n) const; inline mat aff_direct_sum(mat right) const; static inline mat alloc(ctx ctx, unsigned int n_row, unsigned int n_col); inline int cols() const; inline mat concat(mat bot) const; inline mat diagonal(mat mat2) const; inline mat drop_cols(unsigned int col, unsigned int n) const; inline mat drop_rows(unsigned int row, unsigned int n) const; static inline mat from_row_vec(vec vec); inline val get_element_val(int row, int col) const; inline boolean has_linearly_independent_rows(const mat &mat2) const; inline int initial_non_zero_cols() const; inline mat insert_cols(unsigned int col, unsigned int n) const; inline mat insert_rows(unsigned int row, unsigned int n) const; inline mat insert_zero_cols(unsigned int first, unsigned int n) const; inline mat insert_zero_rows(unsigned int row, unsigned int n) const; inline mat inverse_product(mat right) const; inline boolean is_equal(const mat &mat2) const; inline mat lin_to_aff() const; inline mat move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const; inline mat normalize() const; inline mat normalize_row(int row) const; inline mat product(mat right) const; inline int rank() const; inline mat right_inverse() const; inline mat right_kernel() const; inline mat row_basis() const; inline mat row_basis_extension(mat mat2) const; inline int rows() const; inline mat set_element_si(int row, int col, int v) const; inline mat set_element_val(int row, int col, val v) const; inline mat swap_cols(unsigned int i, unsigned int j) const; inline mat swap_rows(unsigned int i, unsigned int j) const; inline mat transpose() const; inline mat unimodular_complete(int row) const; inline mat vec_concat(vec bot) const; inline vec vec_inverse_product(vec vec) const; inline vec vec_product(vec vec) const; }; // declarations for isl::multi_aff inline multi_aff manage(__isl_take isl_multi_aff *ptr); inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr); class multi_aff { friend inline multi_aff manage(__isl_take isl_multi_aff *ptr); friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr); isl_multi_aff *ptr = nullptr; inline explicit multi_aff(__isl_take isl_multi_aff *ptr); public: inline /* implicit */ multi_aff(); inline /* implicit */ multi_aff(const multi_aff &obj); inline /* implicit */ multi_aff(std::nullptr_t); inline /* implicit */ multi_aff(aff aff); inline explicit multi_aff(ctx ctx, const std::string &str); inline multi_aff &operator=(multi_aff obj); inline ~multi_aff(); inline __isl_give isl_multi_aff *copy() const &; inline __isl_give isl_multi_aff *copy() && = delete; inline __isl_keep isl_multi_aff *get() const; inline __isl_give isl_multi_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline multi_aff add(multi_aff multi2) const; inline multi_aff add_dims(isl::dim type, unsigned int n) const; inline multi_aff align_params(space model) const; inline unsigned int dim(isl::dim type) const; static inline multi_aff domain_map(space space); inline multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline multi_aff factor_range() const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline multi_aff flat_range_product(multi_aff multi2) const; inline multi_aff flatten_domain() const; inline multi_aff flatten_range() const; inline multi_aff floor() const; static inline multi_aff from_aff_list(space space, aff_list list); inline multi_aff from_range() const; inline aff get_aff(int pos) const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline space get_domain_space() const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline multi_aff gist(set context) const; inline multi_aff gist_params(set context) const; inline boolean has_tuple_id(isl::dim type) const; static inline multi_aff identity(space space); inline multi_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_nan() const; inline set lex_ge_set(multi_aff ma2) const; inline set lex_gt_set(multi_aff ma2) const; inline set lex_le_set(multi_aff ma2) const; inline set lex_lt_set(multi_aff ma2) const; inline multi_aff mod_multi_val(multi_val mv) const; inline multi_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; static inline multi_aff multi_val_on_space(space space, multi_val mv); inline multi_aff neg() const; inline int plain_cmp(const multi_aff &multi2) const; inline boolean plain_is_equal(const multi_aff &multi2) const; inline multi_aff product(multi_aff multi2) const; inline multi_aff project_domain_on_params() const; static inline multi_aff project_out_map(space space, isl::dim type, unsigned int first, unsigned int n); inline multi_aff pullback(multi_aff ma2) const; inline multi_aff range_factor_domain() const; inline multi_aff range_factor_range() const; inline boolean range_is_wrapping() const; static inline multi_aff range_map(space space); inline multi_aff range_product(multi_aff multi2) const; inline multi_aff range_splice(unsigned int pos, multi_aff multi2) const; inline multi_aff reset_tuple_id(isl::dim type) const; inline multi_aff reset_user() const; inline multi_aff scale_down_multi_val(multi_val mv) const; inline multi_aff scale_down_val(val v) const; inline multi_aff scale_multi_val(multi_val mv) const; inline multi_aff scale_val(val v) const; inline multi_aff set_aff(int pos, aff el) const; inline multi_aff set_dim_id(isl::dim type, unsigned int pos, id id) const; inline multi_aff set_tuple_id(isl::dim type, id id) const; inline multi_aff set_tuple_name(isl::dim type, const std::string &s) const; inline multi_aff splice(unsigned int in_pos, unsigned int out_pos, multi_aff multi2) const; inline multi_aff sub(multi_aff multi2) const; static inline multi_aff zero(space space); }; // declarations for isl::multi_pw_aff inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr); inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr); class multi_pw_aff { friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr); friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr); isl_multi_pw_aff *ptr = nullptr; inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr); public: inline /* implicit */ multi_pw_aff(); inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj); inline /* implicit */ multi_pw_aff(std::nullptr_t); inline /* implicit */ multi_pw_aff(multi_aff ma); inline /* implicit */ multi_pw_aff(pw_aff pa); inline /* implicit */ multi_pw_aff(pw_multi_aff pma); inline explicit multi_pw_aff(ctx ctx, const std::string &str); inline multi_pw_aff &operator=(multi_pw_aff obj); inline ~multi_pw_aff(); inline __isl_give isl_multi_pw_aff *copy() const &; inline __isl_give isl_multi_pw_aff *copy() && = delete; inline __isl_keep isl_multi_pw_aff *get() const; inline __isl_give isl_multi_pw_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline multi_pw_aff add(multi_pw_aff multi2) const; inline multi_pw_aff add_dims(isl::dim type, unsigned int n) const; inline multi_pw_aff align_params(space model) const; inline multi_pw_aff coalesce() const; inline unsigned int dim(isl::dim type) const; inline set domain() const; inline multi_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline map eq_map(multi_pw_aff mpa2) const; inline multi_pw_aff factor_range() const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline multi_pw_aff flat_range_product(multi_pw_aff multi2) const; inline multi_pw_aff flatten_range() const; static inline multi_pw_aff from_pw_aff_list(space space, pw_aff_list list); inline multi_pw_aff from_range() const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline space get_domain_space() const; inline uint32_t get_hash() const; inline pw_aff get_pw_aff(int pos) const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline multi_pw_aff gist(set set) const; inline multi_pw_aff gist_params(set set) const; inline boolean has_tuple_id(isl::dim type) const; static inline multi_pw_aff identity(space space); inline multi_pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline multi_pw_aff intersect_domain(set domain) const; inline multi_pw_aff intersect_params(set set) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_nan() const; inline boolean is_cst() const; inline boolean is_equal(const multi_pw_aff &mpa2) const; inline map lex_gt_map(multi_pw_aff mpa2) const; inline map lex_lt_map(multi_pw_aff mpa2) const; inline multi_pw_aff mod_multi_val(multi_val mv) const; inline multi_pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline multi_pw_aff neg() const; inline boolean plain_is_equal(const multi_pw_aff &multi2) const; inline multi_pw_aff product(multi_pw_aff multi2) const; inline multi_pw_aff project_domain_on_params() const; inline multi_pw_aff pullback(multi_aff ma) const; inline multi_pw_aff pullback(pw_multi_aff pma) const; inline multi_pw_aff pullback(multi_pw_aff mpa2) const; inline multi_pw_aff range_factor_domain() const; inline multi_pw_aff range_factor_range() const; inline boolean range_is_wrapping() const; inline multi_pw_aff range_product(multi_pw_aff multi2) const; inline multi_pw_aff range_splice(unsigned int pos, multi_pw_aff multi2) const; inline multi_pw_aff reset_tuple_id(isl::dim type) const; inline multi_pw_aff reset_user() const; inline multi_pw_aff scale_down_multi_val(multi_val mv) const; inline multi_pw_aff scale_down_val(val v) const; inline multi_pw_aff scale_multi_val(multi_val mv) const; inline multi_pw_aff scale_val(val v) const; inline multi_pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const; inline multi_pw_aff set_pw_aff(int pos, pw_aff el) const; inline multi_pw_aff set_tuple_id(isl::dim type, id id) const; inline multi_pw_aff set_tuple_name(isl::dim type, const std::string &s) const; inline multi_pw_aff splice(unsigned int in_pos, unsigned int out_pos, multi_pw_aff multi2) const; inline multi_pw_aff sub(multi_pw_aff multi2) const; static inline multi_pw_aff zero(space space); }; // declarations for isl::multi_union_pw_aff inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr); inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr); class multi_union_pw_aff { friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr); friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr); isl_multi_union_pw_aff *ptr = nullptr; inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr); public: inline /* implicit */ multi_union_pw_aff(); inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj); inline /* implicit */ multi_union_pw_aff(std::nullptr_t); inline /* implicit */ multi_union_pw_aff(union_pw_aff upa); inline /* implicit */ multi_union_pw_aff(multi_pw_aff mpa); inline explicit multi_union_pw_aff(union_pw_multi_aff upma); inline explicit multi_union_pw_aff(ctx ctx, const std::string &str); inline multi_union_pw_aff &operator=(multi_union_pw_aff obj); inline ~multi_union_pw_aff(); inline __isl_give isl_multi_union_pw_aff *copy() const &; inline __isl_give isl_multi_union_pw_aff *copy() && = delete; inline __isl_keep isl_multi_union_pw_aff *get() const; inline __isl_give isl_multi_union_pw_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline multi_union_pw_aff add(multi_union_pw_aff multi2) const; inline multi_union_pw_aff align_params(space model) const; inline union_pw_aff apply_aff(aff aff) const; inline union_pw_aff apply_pw_aff(pw_aff pa) const; inline multi_union_pw_aff apply_pw_multi_aff(pw_multi_aff pma) const; inline multi_union_pw_aff coalesce() const; inline unsigned int dim(isl::dim type) const; inline union_set domain() const; inline multi_union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline multi_pw_aff extract_multi_pw_aff(space space) const; inline multi_union_pw_aff factor_range() const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline multi_union_pw_aff flat_range_product(multi_union_pw_aff multi2) const; inline multi_union_pw_aff flatten_range() const; inline multi_union_pw_aff floor() const; static inline multi_union_pw_aff from_multi_aff(multi_aff ma); inline multi_union_pw_aff from_range() const; static inline multi_union_pw_aff from_union_map(union_map umap); static inline multi_union_pw_aff from_union_pw_aff_list(space space, union_pw_aff_list list); inline id get_dim_id(isl::dim type, unsigned int pos) const; inline space get_domain_space() const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline union_pw_aff get_union_pw_aff(int pos) const; inline multi_union_pw_aff gist(union_set context) const; inline multi_union_pw_aff gist_params(set context) const; inline boolean has_tuple_id(isl::dim type) const; inline multi_union_pw_aff intersect_domain(union_set uset) const; inline multi_union_pw_aff intersect_params(set params) const; inline multi_union_pw_aff intersect_range(set set) const; inline boolean involves_nan() const; inline multi_val max_multi_val() const; inline multi_val min_multi_val() const; inline multi_union_pw_aff mod_multi_val(multi_val mv) const; static inline multi_union_pw_aff multi_aff_on_domain(union_set domain, multi_aff ma); static inline multi_union_pw_aff multi_val_on_domain(union_set domain, multi_val mv); inline multi_union_pw_aff neg() const; inline boolean plain_is_equal(const multi_union_pw_aff &multi2) const; inline multi_union_pw_aff pullback(union_pw_multi_aff upma) const; static inline multi_union_pw_aff pw_multi_aff_on_domain(union_set domain, pw_multi_aff pma); inline multi_union_pw_aff range_factor_domain() const; inline multi_union_pw_aff range_factor_range() const; inline boolean range_is_wrapping() const; inline multi_union_pw_aff range_product(multi_union_pw_aff multi2) const; inline multi_union_pw_aff range_splice(unsigned int pos, multi_union_pw_aff multi2) const; inline multi_union_pw_aff reset_tuple_id(isl::dim type) const; inline multi_union_pw_aff reset_user() const; inline multi_union_pw_aff scale_down_multi_val(multi_val mv) const; inline multi_union_pw_aff scale_down_val(val v) const; inline multi_union_pw_aff scale_multi_val(multi_val mv) const; inline multi_union_pw_aff scale_val(val v) const; inline multi_union_pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const; inline multi_union_pw_aff set_tuple_id(isl::dim type, id id) const; inline multi_union_pw_aff set_tuple_name(isl::dim type, const std::string &s) const; inline multi_union_pw_aff set_union_pw_aff(int pos, union_pw_aff el) const; inline multi_union_pw_aff sub(multi_union_pw_aff multi2) const; inline multi_union_pw_aff union_add(multi_union_pw_aff mupa2) const; static inline multi_union_pw_aff zero(space space); inline union_set zero_union_set() const; }; // declarations for isl::multi_val inline multi_val manage(__isl_take isl_multi_val *ptr); inline multi_val manage_copy(__isl_keep isl_multi_val *ptr); class multi_val { friend inline multi_val manage(__isl_take isl_multi_val *ptr); friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr); isl_multi_val *ptr = nullptr; inline explicit multi_val(__isl_take isl_multi_val *ptr); public: inline /* implicit */ multi_val(); inline /* implicit */ multi_val(const multi_val &obj); inline /* implicit */ multi_val(std::nullptr_t); inline multi_val &operator=(multi_val obj); inline ~multi_val(); inline __isl_give isl_multi_val *copy() const &; inline __isl_give isl_multi_val *copy() && = delete; inline __isl_keep isl_multi_val *get() const; inline __isl_give isl_multi_val *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline multi_val add(multi_val multi2) const; inline multi_val add_dims(isl::dim type, unsigned int n) const; inline multi_val add_val(val v) const; inline multi_val align_params(space model) const; inline unsigned int dim(isl::dim type) const; inline multi_val drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline multi_val factor_range() const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline multi_val flat_range_product(multi_val multi2) const; inline multi_val flatten_range() const; inline multi_val from_range() const; static inline multi_val from_val_list(space space, val_list list); inline id get_dim_id(isl::dim type, unsigned int pos) const; inline space get_domain_space() const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline val get_val(int pos) const; inline boolean has_tuple_id(isl::dim type) const; inline multi_val insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_nan() const; inline multi_val mod_multi_val(multi_val mv) const; inline multi_val mod_val(val v) const; inline multi_val neg() const; inline boolean plain_is_equal(const multi_val &multi2) const; inline multi_val product(multi_val multi2) const; inline multi_val project_domain_on_params() const; inline multi_val range_factor_domain() const; inline multi_val range_factor_range() const; inline boolean range_is_wrapping() const; inline multi_val range_product(multi_val multi2) const; inline multi_val range_splice(unsigned int pos, multi_val multi2) const; static inline multi_val read_from_str(ctx ctx, const std::string &str); inline multi_val reset_tuple_id(isl::dim type) const; inline multi_val reset_user() const; inline multi_val scale_down_multi_val(multi_val mv) const; inline multi_val scale_down_val(val v) const; inline multi_val scale_multi_val(multi_val mv) const; inline multi_val scale_val(val v) const; inline multi_val set_dim_id(isl::dim type, unsigned int pos, id id) const; inline multi_val set_tuple_id(isl::dim type, id id) const; inline multi_val set_tuple_name(isl::dim type, const std::string &s) const; inline multi_val set_val(int pos, val el) const; inline multi_val splice(unsigned int in_pos, unsigned int out_pos, multi_val multi2) const; inline multi_val sub(multi_val multi2) const; static inline multi_val zero(space space); }; // declarations for isl::point inline point manage(__isl_take isl_point *ptr); inline point manage_copy(__isl_keep isl_point *ptr); class point { friend inline point manage(__isl_take isl_point *ptr); friend inline point manage_copy(__isl_keep isl_point *ptr); isl_point *ptr = nullptr; inline explicit point(__isl_take isl_point *ptr); public: inline /* implicit */ point(); inline /* implicit */ point(const point &obj); inline /* implicit */ point(std::nullptr_t); inline explicit point(space dim); inline point &operator=(point obj); inline ~point(); inline __isl_give isl_point *copy() const &; inline __isl_give isl_point *copy() && = delete; inline __isl_keep isl_point *get() const; inline __isl_give isl_point *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline point add_ui(isl::dim type, int pos, unsigned int val) const; inline val get_coordinate_val(isl::dim type, int pos) const; inline space get_space() const; inline point set_coordinate_val(isl::dim type, int pos, val v) const; inline point sub_ui(isl::dim type, int pos, unsigned int val) const; }; // declarations for isl::pw_aff inline pw_aff manage(__isl_take isl_pw_aff *ptr); inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr); class pw_aff { friend inline pw_aff manage(__isl_take isl_pw_aff *ptr); friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr); isl_pw_aff *ptr = nullptr; inline explicit pw_aff(__isl_take isl_pw_aff *ptr); public: inline /* implicit */ pw_aff(); inline /* implicit */ pw_aff(const pw_aff &obj); inline /* implicit */ pw_aff(std::nullptr_t); inline /* implicit */ pw_aff(aff aff); inline explicit pw_aff(local_space ls); inline explicit pw_aff(set domain, val v); inline explicit pw_aff(ctx ctx, const std::string &str); inline pw_aff &operator=(pw_aff obj); inline ~pw_aff(); inline __isl_give isl_pw_aff *copy() const &; inline __isl_give isl_pw_aff *copy() && = delete; inline __isl_keep isl_pw_aff *get() const; inline __isl_give isl_pw_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline pw_aff add(pw_aff pwaff2) const; inline pw_aff add_dims(isl::dim type, unsigned int n) const; inline pw_aff align_params(space model) const; static inline pw_aff alloc(set set, aff aff); inline pw_aff ceil() const; inline pw_aff coalesce() const; inline pw_aff cond(pw_aff pwaff_true, pw_aff pwaff_false) const; inline unsigned int dim(isl::dim type) const; inline pw_aff div(pw_aff pa2) const; inline set domain() const; inline pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline pw_aff drop_unused_params() const; static inline pw_aff empty(space dim); inline map eq_map(pw_aff pa2) const; inline set eq_set(pw_aff pwaff2) const; inline val eval(point pnt) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline pw_aff floor() const; inline stat foreach_piece(const std::function &fn) const; inline pw_aff from_range() const; inline set ge_set(pw_aff pwaff2) const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline space get_domain_space() const; inline uint32_t get_hash() const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline pw_aff gist(set context) const; inline pw_aff gist_params(set context) const; inline map gt_map(pw_aff pa2) const; inline set gt_set(pw_aff pwaff2) const; inline boolean has_dim_id(isl::dim type, unsigned int pos) const; inline boolean has_tuple_id(isl::dim type) const; inline pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline pw_aff intersect_domain(set set) const; inline pw_aff intersect_params(set set) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_nan() const; inline boolean is_cst() const; inline boolean is_empty() const; inline boolean is_equal(const pw_aff &pa2) const; inline set le_set(pw_aff pwaff2) const; inline map lt_map(pw_aff pa2) const; inline set lt_set(pw_aff pwaff2) const; inline pw_aff max(pw_aff pwaff2) const; inline pw_aff min(pw_aff pwaff2) const; inline pw_aff mod(val mod) const; inline pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline pw_aff mul(pw_aff pwaff2) const; inline int n_piece() const; static inline pw_aff nan_on_domain(local_space ls); inline set ne_set(pw_aff pwaff2) const; inline pw_aff neg() const; inline set non_zero_set() const; inline set nonneg_set() const; inline set params() const; inline int plain_cmp(const pw_aff &pa2) const; inline boolean plain_is_equal(const pw_aff &pwaff2) const; inline set pos_set() const; inline pw_aff project_domain_on_params() const; inline pw_aff pullback(multi_aff ma) const; inline pw_aff pullback(pw_multi_aff pma) const; inline pw_aff pullback(multi_pw_aff mpa) const; inline pw_aff reset_tuple_id(isl::dim type) const; inline pw_aff reset_user() const; inline pw_aff scale(val v) const; inline pw_aff scale_down(val f) const; inline pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const; inline pw_aff set_tuple_id(isl::dim type, id id) const; inline pw_aff sub(pw_aff pwaff2) const; inline pw_aff subtract_domain(set set) const; inline pw_aff tdiv_q(pw_aff pa2) const; inline pw_aff tdiv_r(pw_aff pa2) const; inline pw_aff union_add(pw_aff pwaff2) const; inline pw_aff union_max(pw_aff pwaff2) const; inline pw_aff union_min(pw_aff pwaff2) const; static inline pw_aff var_on_domain(local_space ls, isl::dim type, unsigned int pos); inline set zero_set() const; }; // declarations for isl::pw_aff_list inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr); inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr); class pw_aff_list { friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr); friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr); isl_pw_aff_list *ptr = nullptr; inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr); public: inline /* implicit */ pw_aff_list(); inline /* implicit */ pw_aff_list(const pw_aff_list &obj); inline /* implicit */ pw_aff_list(std::nullptr_t); inline pw_aff_list &operator=(pw_aff_list obj); inline ~pw_aff_list(); inline __isl_give isl_pw_aff_list *copy() const &; inline __isl_give isl_pw_aff_list *copy() && = delete; inline __isl_keep isl_pw_aff_list *get() const; inline __isl_give isl_pw_aff_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline pw_aff_list add(pw_aff el) const; static inline pw_aff_list alloc(ctx ctx, int n); inline pw_aff_list concat(pw_aff_list list2) const; inline pw_aff_list drop(unsigned int first, unsigned int n) const; inline set eq_set(pw_aff_list list2) const; inline stat foreach(const std::function &fn) const; static inline pw_aff_list from_pw_aff(pw_aff el); inline set ge_set(pw_aff_list list2) const; inline pw_aff get_at(int index) const; inline pw_aff get_pw_aff(int index) const; inline set gt_set(pw_aff_list list2) const; inline pw_aff_list insert(unsigned int pos, pw_aff el) const; inline set le_set(pw_aff_list list2) const; inline set lt_set(pw_aff_list list2) const; inline pw_aff max() const; inline pw_aff min() const; inline int n_pw_aff() const; inline set ne_set(pw_aff_list list2) const; inline pw_aff_list reverse() const; inline pw_aff_list set_pw_aff(int index, pw_aff el) const; inline int size() const; inline pw_aff_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::pw_multi_aff inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr); inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr); class pw_multi_aff { friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr); friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr); isl_pw_multi_aff *ptr = nullptr; inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr); public: inline /* implicit */ pw_multi_aff(); inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj); inline /* implicit */ pw_multi_aff(std::nullptr_t); inline /* implicit */ pw_multi_aff(multi_aff ma); inline /* implicit */ pw_multi_aff(pw_aff pa); inline explicit pw_multi_aff(ctx ctx, const std::string &str); inline pw_multi_aff &operator=(pw_multi_aff obj); inline ~pw_multi_aff(); inline __isl_give isl_pw_multi_aff *copy() const &; inline __isl_give isl_pw_multi_aff *copy() && = delete; inline __isl_keep isl_pw_multi_aff *get() const; inline __isl_give isl_pw_multi_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline pw_multi_aff add(pw_multi_aff pma2) const; inline pw_multi_aff align_params(space model) const; static inline pw_multi_aff alloc(set set, multi_aff maff); inline pw_multi_aff coalesce() const; inline unsigned int dim(isl::dim type) const; inline set domain() const; inline pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline pw_multi_aff drop_unused_params() const; static inline pw_multi_aff empty(space space); inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline pw_multi_aff fix_si(isl::dim type, unsigned int pos, int value) const; inline pw_multi_aff flat_range_product(pw_multi_aff pma2) const; inline stat foreach_piece(const std::function &fn) const; static inline pw_multi_aff from_domain(set set); static inline pw_multi_aff from_map(map map); static inline pw_multi_aff from_multi_pw_aff(multi_pw_aff mpa); static inline pw_multi_aff from_set(set set); inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline space get_domain_space() const; inline pw_aff get_pw_aff(int pos) const; inline space get_space() const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline pw_multi_aff gist(set set) const; inline pw_multi_aff gist_params(set set) const; inline boolean has_tuple_id(isl::dim type) const; inline boolean has_tuple_name(isl::dim type) const; static inline pw_multi_aff identity(space space); inline pw_multi_aff intersect_domain(set set) const; inline pw_multi_aff intersect_params(set set) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_nan() const; inline boolean is_equal(const pw_multi_aff &pma2) const; static inline pw_multi_aff multi_val_on_domain(set domain, multi_val mv); inline int n_piece() const; inline pw_multi_aff neg() const; inline boolean plain_is_equal(const pw_multi_aff &pma2) const; inline pw_multi_aff product(pw_multi_aff pma2) const; inline pw_multi_aff project_domain_on_params() const; static inline pw_multi_aff project_out_map(space space, isl::dim type, unsigned int first, unsigned int n); inline pw_multi_aff pullback(multi_aff ma) const; inline pw_multi_aff pullback(pw_multi_aff pma2) const; static inline pw_multi_aff range_map(space space); inline pw_multi_aff range_product(pw_multi_aff pma2) const; inline pw_multi_aff reset_tuple_id(isl::dim type) const; inline pw_multi_aff reset_user() const; inline pw_multi_aff scale_down_val(val v) const; inline pw_multi_aff scale_multi_val(multi_val mv) const; inline pw_multi_aff scale_val(val v) const; inline pw_multi_aff set_dim_id(isl::dim type, unsigned int pos, id id) const; inline pw_multi_aff set_pw_aff(unsigned int pos, pw_aff pa) const; inline pw_multi_aff set_tuple_id(isl::dim type, id id) const; inline pw_multi_aff sub(pw_multi_aff pma2) const; inline pw_multi_aff subtract_domain(set set) const; inline pw_multi_aff union_add(pw_multi_aff pma2) const; inline pw_multi_aff union_lexmax(pw_multi_aff pma2) const; inline pw_multi_aff union_lexmin(pw_multi_aff pma2) const; static inline pw_multi_aff zero(space space); }; // declarations for isl::pw_multi_aff_list inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr); inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr); class pw_multi_aff_list { friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr); friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr); isl_pw_multi_aff_list *ptr = nullptr; inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr); public: inline /* implicit */ pw_multi_aff_list(); inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj); inline /* implicit */ pw_multi_aff_list(std::nullptr_t); inline pw_multi_aff_list &operator=(pw_multi_aff_list obj); inline ~pw_multi_aff_list(); inline __isl_give isl_pw_multi_aff_list *copy() const &; inline __isl_give isl_pw_multi_aff_list *copy() && = delete; inline __isl_keep isl_pw_multi_aff_list *get() const; inline __isl_give isl_pw_multi_aff_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline pw_multi_aff_list add(pw_multi_aff el) const; static inline pw_multi_aff_list alloc(ctx ctx, int n); inline pw_multi_aff_list concat(pw_multi_aff_list list2) const; inline pw_multi_aff_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline pw_multi_aff_list from_pw_multi_aff(pw_multi_aff el); inline pw_multi_aff get_at(int index) const; inline pw_multi_aff get_pw_multi_aff(int index) const; inline pw_multi_aff_list insert(unsigned int pos, pw_multi_aff el) const; inline int n_pw_multi_aff() const; inline pw_multi_aff_list reverse() const; inline pw_multi_aff_list set_pw_multi_aff(int index, pw_multi_aff el) const; inline int size() const; inline pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::pw_qpolynomial inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr); inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr); class pw_qpolynomial { friend inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr); friend inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr); isl_pw_qpolynomial *ptr = nullptr; inline explicit pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr); public: inline /* implicit */ pw_qpolynomial(); inline /* implicit */ pw_qpolynomial(const pw_qpolynomial &obj); inline /* implicit */ pw_qpolynomial(std::nullptr_t); inline explicit pw_qpolynomial(ctx ctx, const std::string &str); inline pw_qpolynomial &operator=(pw_qpolynomial obj); inline ~pw_qpolynomial(); inline __isl_give isl_pw_qpolynomial *copy() const &; inline __isl_give isl_pw_qpolynomial *copy() && = delete; inline __isl_keep isl_pw_qpolynomial *get() const; inline __isl_give isl_pw_qpolynomial *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline pw_qpolynomial add(pw_qpolynomial pwqp2) const; inline pw_qpolynomial add_dims(isl::dim type, unsigned int n) const; static inline pw_qpolynomial alloc(set set, qpolynomial qp); inline pw_qpolynomial coalesce() const; inline unsigned int dim(isl::dim type) const; inline set domain() const; inline pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline pw_qpolynomial drop_unused_params() const; inline val eval(point pnt) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline pw_qpolynomial fix_val(isl::dim type, unsigned int n, val v) const; inline stat foreach_piece(const std::function &fn) const; static inline pw_qpolynomial from_pw_aff(pw_aff pwaff); static inline pw_qpolynomial from_qpolynomial(qpolynomial qp); inline pw_qpolynomial from_range() const; inline space get_domain_space() const; inline space get_space() const; inline pw_qpolynomial gist(set context) const; inline pw_qpolynomial gist_params(set context) const; inline boolean has_equal_space(const pw_qpolynomial &pwqp2) const; inline pw_qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline pw_qpolynomial intersect_domain(set set) const; inline pw_qpolynomial intersect_params(set set) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_nan() const; inline boolean is_zero() const; inline val max() const; inline val min() const; inline pw_qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline pw_qpolynomial mul(pw_qpolynomial pwqp2) const; inline int n_piece() const; inline pw_qpolynomial neg() const; inline boolean plain_is_equal(const pw_qpolynomial &pwqp2) const; inline pw_qpolynomial pow(unsigned int exponent) const; inline pw_qpolynomial project_domain_on_params() const; inline pw_qpolynomial reset_domain_space(space dim) const; inline pw_qpolynomial reset_user() const; inline pw_qpolynomial scale_down_val(val v) const; inline pw_qpolynomial scale_val(val v) const; inline pw_qpolynomial split_dims(isl::dim type, unsigned int first, unsigned int n) const; inline pw_qpolynomial split_periods(int max_periods) const; inline pw_qpolynomial sub(pw_qpolynomial pwqp2) const; inline pw_qpolynomial subtract_domain(set set) const; inline pw_qpolynomial to_polynomial(int sign) const; static inline pw_qpolynomial zero(space dim); }; // declarations for isl::pw_qpolynomial_fold_list inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr); inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr); class pw_qpolynomial_fold_list { friend inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr); friend inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr); isl_pw_qpolynomial_fold_list *ptr = nullptr; inline explicit pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr); public: inline /* implicit */ pw_qpolynomial_fold_list(); inline /* implicit */ pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj); inline /* implicit */ pw_qpolynomial_fold_list(std::nullptr_t); inline pw_qpolynomial_fold_list &operator=(pw_qpolynomial_fold_list obj); inline ~pw_qpolynomial_fold_list(); inline __isl_give isl_pw_qpolynomial_fold_list *copy() const &; inline __isl_give isl_pw_qpolynomial_fold_list *copy() && = delete; inline __isl_keep isl_pw_qpolynomial_fold_list *get() const; inline __isl_give isl_pw_qpolynomial_fold_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; }; // declarations for isl::pw_qpolynomial_list inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr); inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr); class pw_qpolynomial_list { friend inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr); friend inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr); isl_pw_qpolynomial_list *ptr = nullptr; inline explicit pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr); public: inline /* implicit */ pw_qpolynomial_list(); inline /* implicit */ pw_qpolynomial_list(const pw_qpolynomial_list &obj); inline /* implicit */ pw_qpolynomial_list(std::nullptr_t); inline pw_qpolynomial_list &operator=(pw_qpolynomial_list obj); inline ~pw_qpolynomial_list(); inline __isl_give isl_pw_qpolynomial_list *copy() const &; inline __isl_give isl_pw_qpolynomial_list *copy() && = delete; inline __isl_keep isl_pw_qpolynomial_list *get() const; inline __isl_give isl_pw_qpolynomial_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline pw_qpolynomial_list add(pw_qpolynomial el) const; static inline pw_qpolynomial_list alloc(ctx ctx, int n); inline pw_qpolynomial_list concat(pw_qpolynomial_list list2) const; inline pw_qpolynomial_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline pw_qpolynomial_list from_pw_qpolynomial(pw_qpolynomial el); inline pw_qpolynomial get_at(int index) const; inline pw_qpolynomial get_pw_qpolynomial(int index) const; inline pw_qpolynomial_list insert(unsigned int pos, pw_qpolynomial el) const; inline int n_pw_qpolynomial() const; inline pw_qpolynomial_list reverse() const; inline pw_qpolynomial_list set_pw_qpolynomial(int index, pw_qpolynomial el) const; inline int size() const; inline pw_qpolynomial_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::qpolynomial inline qpolynomial manage(__isl_take isl_qpolynomial *ptr); inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr); class qpolynomial { friend inline qpolynomial manage(__isl_take isl_qpolynomial *ptr); friend inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr); isl_qpolynomial *ptr = nullptr; inline explicit qpolynomial(__isl_take isl_qpolynomial *ptr); public: inline /* implicit */ qpolynomial(); inline /* implicit */ qpolynomial(const qpolynomial &obj); inline /* implicit */ qpolynomial(std::nullptr_t); inline qpolynomial &operator=(qpolynomial obj); inline ~qpolynomial(); inline __isl_give isl_qpolynomial *copy() const &; inline __isl_give isl_qpolynomial *copy() && = delete; inline __isl_keep isl_qpolynomial *get() const; inline __isl_give isl_qpolynomial *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline qpolynomial add(qpolynomial qp2) const; inline qpolynomial add_dims(isl::dim type, unsigned int n) const; inline qpolynomial align_params(space model) const; inline stat as_polynomial_on_domain(const basic_set &bset, const std::function &fn) const; inline unsigned int dim(isl::dim type) const; inline qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline val eval(point pnt) const; inline stat foreach_term(const std::function &fn) const; static inline qpolynomial from_aff(aff aff); static inline qpolynomial from_constraint(constraint c, isl::dim type, unsigned int pos); static inline qpolynomial from_term(term term); inline val get_constant_val() const; inline space get_domain_space() const; inline space get_space() const; inline qpolynomial gist(set context) const; inline qpolynomial gist_params(set context) const; inline qpolynomial homogenize() const; static inline qpolynomial infty_on_domain(space dim); inline qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_infty() const; inline boolean is_nan() const; inline boolean is_neginfty() const; inline boolean is_zero() const; inline qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline qpolynomial mul(qpolynomial qp2) const; static inline qpolynomial nan_on_domain(space dim); inline qpolynomial neg() const; static inline qpolynomial neginfty_on_domain(space dim); static inline qpolynomial one_on_domain(space dim); inline boolean plain_is_equal(const qpolynomial &qp2) const; inline qpolynomial pow(unsigned int power) const; inline qpolynomial project_domain_on_params() const; inline qpolynomial scale_down_val(val v) const; inline qpolynomial scale_val(val v) const; inline int sgn() const; inline qpolynomial sub(qpolynomial qp2) const; static inline qpolynomial val_on_domain(space space, val val); static inline qpolynomial var_on_domain(space dim, isl::dim type, unsigned int pos); static inline qpolynomial zero_on_domain(space dim); }; // declarations for isl::schedule inline schedule manage(__isl_take isl_schedule *ptr); inline schedule manage_copy(__isl_keep isl_schedule *ptr); class schedule { friend inline schedule manage(__isl_take isl_schedule *ptr); friend inline schedule manage_copy(__isl_keep isl_schedule *ptr); isl_schedule *ptr = nullptr; inline explicit schedule(__isl_take isl_schedule *ptr); public: inline /* implicit */ schedule(); inline /* implicit */ schedule(const schedule &obj); inline /* implicit */ schedule(std::nullptr_t); inline explicit schedule(ctx ctx, const std::string &str); inline schedule &operator=(schedule obj); inline ~schedule(); inline __isl_give isl_schedule *copy() const &; inline __isl_give isl_schedule *copy() && = delete; inline __isl_keep isl_schedule *get() const; inline __isl_give isl_schedule *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline schedule align_params(space space) const; static inline schedule empty(space space); static inline schedule from_domain(union_set domain); inline union_set get_domain() const; inline union_map get_map() const; inline schedule_node get_root() const; inline schedule gist_domain_params(set context) const; inline schedule insert_context(set context) const; inline schedule insert_guard(set guard) const; inline schedule insert_partial_schedule(multi_union_pw_aff partial) const; inline schedule intersect_domain(union_set domain) const; inline boolean plain_is_equal(const schedule &schedule2) const; inline schedule pullback(union_pw_multi_aff upma) const; inline schedule reset_user() const; inline schedule sequence(schedule schedule2) const; }; // declarations for isl::schedule_constraints inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr); inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr); class schedule_constraints { friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr); friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr); isl_schedule_constraints *ptr = nullptr; inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr); public: inline /* implicit */ schedule_constraints(); inline /* implicit */ schedule_constraints(const schedule_constraints &obj); inline /* implicit */ schedule_constraints(std::nullptr_t); inline explicit schedule_constraints(ctx ctx, const std::string &str); inline schedule_constraints &operator=(schedule_constraints obj); inline ~schedule_constraints(); inline __isl_give isl_schedule_constraints *copy() const &; inline __isl_give isl_schedule_constraints *copy() && = delete; inline __isl_keep isl_schedule_constraints *get() const; inline __isl_give isl_schedule_constraints *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline schedule_constraints apply(union_map umap) const; inline schedule compute_schedule() const; inline union_map get_coincidence() const; inline union_map get_conditional_validity() const; inline union_map get_conditional_validity_condition() const; inline set get_context() const; inline union_set get_domain() const; inline union_map get_proximity() const; inline union_map get_validity() const; static inline schedule_constraints on_domain(union_set domain); inline schedule_constraints set_coincidence(union_map coincidence) const; inline schedule_constraints set_conditional_validity(union_map condition, union_map validity) const; inline schedule_constraints set_context(set context) const; inline schedule_constraints set_proximity(union_map proximity) const; inline schedule_constraints set_validity(union_map validity) const; }; // declarations for isl::schedule_node inline schedule_node manage(__isl_take isl_schedule_node *ptr); inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr); class schedule_node { friend inline schedule_node manage(__isl_take isl_schedule_node *ptr); friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr); isl_schedule_node *ptr = nullptr; inline explicit schedule_node(__isl_take isl_schedule_node *ptr); public: inline /* implicit */ schedule_node(); inline /* implicit */ schedule_node(const schedule_node &obj); inline /* implicit */ schedule_node(std::nullptr_t); inline schedule_node &operator=(schedule_node obj); inline ~schedule_node(); inline __isl_give isl_schedule_node *copy() const &; inline __isl_give isl_schedule_node *copy() && = delete; inline __isl_keep isl_schedule_node *get() const; inline __isl_give isl_schedule_node *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline schedule_node align_params(space space) const; inline schedule_node ancestor(int generation) const; inline boolean band_member_get_coincident(int pos) const; inline schedule_node band_member_set_coincident(int pos, int coincident) const; inline schedule_node band_set_ast_build_options(union_set options) const; inline schedule_node child(int pos) const; inline set context_get_context() const; inline schedule_node cut() const; inline union_set domain_get_domain() const; inline union_pw_multi_aff expansion_get_contraction() const; inline union_map expansion_get_expansion() const; inline union_map extension_get_extension() const; inline union_set filter_get_filter() const; inline schedule_node first_child() const; inline stat foreach_ancestor_top_down(const std::function &fn) const; static inline schedule_node from_domain(union_set domain); static inline schedule_node from_extension(union_map extension); inline int get_ancestor_child_position(const schedule_node &ancestor) const; inline schedule_node get_child(int pos) const; inline int get_child_position() const; inline union_set get_domain() const; inline multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const; inline union_map get_prefix_schedule_relation() const; inline union_map get_prefix_schedule_union_map() const; inline union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const; inline schedule get_schedule() const; inline int get_schedule_depth() const; inline schedule_node get_shared_ancestor(const schedule_node &node2) const; inline union_pw_multi_aff get_subtree_contraction() const; inline union_map get_subtree_expansion() const; inline union_map get_subtree_schedule_union_map() const; inline int get_tree_depth() const; inline union_set get_universe_domain() const; inline schedule_node graft_after(schedule_node graft) const; inline schedule_node graft_before(schedule_node graft) const; inline schedule_node group(id group_id) const; inline set guard_get_guard() const; inline boolean has_children() const; inline boolean has_next_sibling() const; inline boolean has_parent() const; inline boolean has_previous_sibling() const; inline schedule_node insert_context(set context) const; inline schedule_node insert_filter(union_set filter) const; inline schedule_node insert_guard(set context) const; inline schedule_node insert_mark(id mark) const; inline schedule_node insert_partial_schedule(multi_union_pw_aff schedule) const; inline schedule_node insert_sequence(union_set_list filters) const; inline schedule_node insert_set(union_set_list filters) const; inline boolean is_equal(const schedule_node &node2) const; inline boolean is_subtree_anchored() const; inline id mark_get_id() const; inline int n_children() const; inline schedule_node next_sibling() const; inline schedule_node order_after(union_set filter) const; inline schedule_node order_before(union_set filter) const; inline schedule_node parent() const; inline schedule_node previous_sibling() const; inline schedule_node reset_user() const; inline schedule_node root() const; inline schedule_node sequence_splice_child(int pos) const; }; // declarations for isl::set inline set manage(__isl_take isl_set *ptr); inline set manage_copy(__isl_keep isl_set *ptr); class set { friend inline set manage(__isl_take isl_set *ptr); friend inline set manage_copy(__isl_keep isl_set *ptr); isl_set *ptr = nullptr; inline explicit set(__isl_take isl_set *ptr); public: inline /* implicit */ set(); inline /* implicit */ set(const set &obj); inline /* implicit */ set(std::nullptr_t); inline explicit set(ctx ctx, const std::string &str); inline /* implicit */ set(basic_set bset); inline /* implicit */ set(point pnt); inline explicit set(union_set uset); inline set &operator=(set obj); inline ~set(); inline __isl_give isl_set *copy() const &; inline __isl_give isl_set *copy() && = delete; inline __isl_keep isl_set *get() const; inline __isl_give isl_set *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline set add_constraint(constraint constraint) const; inline set add_dims(isl::dim type, unsigned int n) const; inline basic_set affine_hull() const; inline set align_params(space model) const; inline set apply(map map) const; inline basic_set bounded_simple_hull() const; static inline set box_from_points(point pnt1, point pnt2); inline set coalesce() const; inline basic_set coefficients() const; inline set complement() const; inline basic_set convex_hull() const; inline val count_val() const; inline set detect_equalities() const; inline unsigned int dim(isl::dim type) const; inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const; inline boolean dim_has_any_upper_bound(isl::dim type, unsigned int pos) const; inline boolean dim_has_lower_bound(isl::dim type, unsigned int pos) const; inline boolean dim_has_upper_bound(isl::dim type, unsigned int pos) const; inline boolean dim_is_bounded(isl::dim type, unsigned int pos) const; inline pw_aff dim_max(int pos) const; inline pw_aff dim_min(int pos) const; inline set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline set drop_unused_params() const; inline set eliminate(isl::dim type, unsigned int first, unsigned int n) const; static inline set empty(space space); inline set equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline set fix_si(isl::dim type, unsigned int pos, int value) const; inline set fix_val(isl::dim type, unsigned int pos, val v) const; inline set flat_product(set set2) const; inline set flatten() const; inline map flatten_map() const; inline int follows_at(const set &set2, int pos) const; inline stat foreach_basic_set(const std::function &fn) const; inline stat foreach_point(const std::function &fn) const; static inline set from_multi_aff(multi_aff ma); static inline set from_multi_pw_aff(multi_pw_aff mpa); inline set from_params() const; static inline set from_pw_aff(pw_aff pwaff); static inline set from_pw_multi_aff(pw_multi_aff pma); inline basic_set_list get_basic_set_list() const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline space get_space() const; inline val get_stride(int pos) const; inline id get_tuple_id() const; inline std::string get_tuple_name() const; inline set gist(set context) const; inline set gist_basic_set(basic_set context) const; inline set gist_params(set context) const; inline boolean has_dim_id(isl::dim type, unsigned int pos) const; inline boolean has_dim_name(isl::dim type, unsigned int pos) const; inline boolean has_equal_space(const set &set2) const; inline boolean has_tuple_id() const; inline boolean has_tuple_name() const; inline map identity() const; inline pw_aff indicator_function() const; inline set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const; inline set intersect(set set2) const; inline set intersect_params(set params) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_bounded() const; inline boolean is_box() const; inline boolean is_disjoint(const set &set2) const; inline boolean is_empty() const; inline boolean is_equal(const set &set2) const; inline boolean is_params() const; inline boolean is_singleton() const; inline boolean is_strict_subset(const set &set2) const; inline boolean is_subset(const set &set2) const; inline boolean is_wrapping() const; inline map lex_ge_set(set set2) const; inline map lex_gt_set(set set2) const; inline map lex_le_set(set set2) const; inline map lex_lt_set(set set2) const; inline set lexmax() const; inline pw_multi_aff lexmax_pw_multi_aff() const; inline set lexmin() const; inline pw_multi_aff lexmin_pw_multi_aff() const; inline set lower_bound_si(isl::dim type, unsigned int pos, int value) const; inline set lower_bound_val(isl::dim type, unsigned int pos, val value) const; inline val max_val(const aff &obj) const; inline val min_val(const aff &obj) const; inline set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline int n_basic_set() const; inline unsigned int n_dim() const; static inline set nat_universe(space dim); inline set neg() const; inline set params() const; inline int plain_cmp(const set &set2) const; inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const; inline boolean plain_is_disjoint(const set &set2) const; inline boolean plain_is_empty() const; inline boolean plain_is_equal(const set &set2) const; inline boolean plain_is_universe() const; inline basic_set plain_unshifted_simple_hull() const; inline basic_set polyhedral_hull() const; inline set preimage_multi_aff(multi_aff ma) const; inline set preimage_multi_pw_aff(multi_pw_aff mpa) const; inline set preimage_pw_multi_aff(pw_multi_aff pma) const; inline set product(set set2) const; inline map project_onto_map(isl::dim type, unsigned int first, unsigned int n) const; inline set project_out(isl::dim type, unsigned int first, unsigned int n) const; inline set remove_dims(isl::dim type, unsigned int first, unsigned int n) const; inline set remove_divs() const; inline set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const; inline set remove_redundancies() const; inline set remove_unknown_divs() const; inline set reset_space(space dim) const; inline set reset_tuple_id() const; inline set reset_user() const; inline basic_set sample() const; inline point sample_point() const; inline set set_dim_id(isl::dim type, unsigned int pos, id id) const; inline set set_tuple_id(id id) const; inline set set_tuple_name(const std::string &s) const; inline basic_set simple_hull() const; inline int size() const; inline basic_set solutions() const; inline set split_dims(isl::dim type, unsigned int first, unsigned int n) const; inline set subtract(set set2) const; inline set sum(set set2) const; inline set unite(set set2) const; static inline set universe(space space); inline basic_set unshifted_simple_hull() const; inline basic_set unshifted_simple_hull_from_set_list(set_list list) const; inline map unwrap() const; inline set upper_bound_si(isl::dim type, unsigned int pos, int value) const; inline set upper_bound_val(isl::dim type, unsigned int pos, val value) const; inline map wrapped_domain_map() const; }; // declarations for isl::set_list inline set_list manage(__isl_take isl_set_list *ptr); inline set_list manage_copy(__isl_keep isl_set_list *ptr); class set_list { friend inline set_list manage(__isl_take isl_set_list *ptr); friend inline set_list manage_copy(__isl_keep isl_set_list *ptr); isl_set_list *ptr = nullptr; inline explicit set_list(__isl_take isl_set_list *ptr); public: inline /* implicit */ set_list(); inline /* implicit */ set_list(const set_list &obj); inline /* implicit */ set_list(std::nullptr_t); inline set_list &operator=(set_list obj); inline ~set_list(); inline __isl_give isl_set_list *copy() const &; inline __isl_give isl_set_list *copy() && = delete; inline __isl_keep isl_set_list *get() const; inline __isl_give isl_set_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline set_list add(set el) const; static inline set_list alloc(ctx ctx, int n); inline set_list concat(set_list list2) const; inline set_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline set_list from_set(set el); inline set get_at(int index) const; inline set get_set(int index) const; inline set_list insert(unsigned int pos, set el) const; inline int n_set() const; inline set_list reverse() const; inline set_list set_set(int index, set el) const; inline int size() const; inline set_list swap(unsigned int pos1, unsigned int pos2) const; inline set unite() const; }; // declarations for isl::space inline space manage(__isl_take isl_space *ptr); inline space manage_copy(__isl_keep isl_space *ptr); class space { friend inline space manage(__isl_take isl_space *ptr); friend inline space manage_copy(__isl_keep isl_space *ptr); isl_space *ptr = nullptr; inline explicit space(__isl_take isl_space *ptr); public: inline /* implicit */ space(); inline /* implicit */ space(const space &obj); inline /* implicit */ space(std::nullptr_t); inline explicit space(ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out); inline explicit space(ctx ctx, unsigned int nparam, unsigned int dim); inline space &operator=(space obj); inline ~space(); inline __isl_give isl_space *copy() const &; inline __isl_give isl_space *copy() && = delete; inline __isl_keep isl_space *get() const; inline __isl_give isl_space *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline space add_dims(isl::dim type, unsigned int n) const; inline space add_param_id(id id) const; inline space align_params(space dim2) const; inline boolean can_curry() const; inline boolean can_range_curry() const; inline boolean can_uncurry() const; inline boolean can_zip() const; inline space curry() const; inline unsigned int dim(isl::dim type) const; inline space domain() const; inline space domain_factor_domain() const; inline space domain_factor_range() const; inline boolean domain_is_wrapping() const; inline space domain_map() const; inline space domain_product(space right) const; inline space drop_dims(isl::dim type, unsigned int first, unsigned int num) const; inline space factor_domain() const; inline space factor_range() const; inline int find_dim_by_id(isl::dim type, const id &id) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline space flatten_domain() const; inline space flatten_range() const; inline space from_domain() const; inline space from_range() const; inline id get_dim_id(isl::dim type, unsigned int pos) const; inline std::string get_dim_name(isl::dim type, unsigned int pos) const; inline id get_tuple_id(isl::dim type) const; inline std::string get_tuple_name(isl::dim type) const; inline boolean has_dim_id(isl::dim type, unsigned int pos) const; inline boolean has_dim_name(isl::dim type, unsigned int pos) const; inline boolean has_equal_params(const space &space2) const; inline boolean has_equal_tuples(const space &space2) const; inline boolean has_tuple_id(isl::dim type) const; inline boolean has_tuple_name(isl::dim type) const; inline space insert_dims(isl::dim type, unsigned int pos, unsigned int n) const; inline boolean is_domain(const space &space2) const; inline boolean is_equal(const space &space2) const; inline boolean is_map() const; inline boolean is_params() const; inline boolean is_product() const; inline boolean is_range(const space &space2) const; inline boolean is_set() const; inline boolean is_wrapping() const; inline space join(space right) const; inline space map_from_domain_and_range(space range) const; inline space map_from_set() const; inline space move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const; inline space params() const; static inline space params_alloc(ctx ctx, unsigned int nparam); inline space product(space right) const; inline space range() const; inline space range_curry() const; inline space range_factor_domain() const; inline space range_factor_range() const; inline boolean range_is_wrapping() const; inline space range_map() const; inline space range_product(space right) const; inline space reset_tuple_id(isl::dim type) const; inline space reset_user() const; inline space reverse() const; inline space set_dim_id(isl::dim type, unsigned int pos, id id) const; inline space set_from_params() const; inline space set_tuple_id(isl::dim type, id id) const; inline space set_tuple_name(isl::dim type, const std::string &s) const; inline boolean tuple_is_equal(isl::dim type1, const space &space2, isl::dim type2) const; inline space uncurry() const; inline space unwrap() const; inline space wrap() const; inline space zip() const; }; // declarations for isl::term inline term manage(__isl_take isl_term *ptr); inline term manage_copy(__isl_keep isl_term *ptr); class term { friend inline term manage(__isl_take isl_term *ptr); friend inline term manage_copy(__isl_keep isl_term *ptr); isl_term *ptr = nullptr; inline explicit term(__isl_take isl_term *ptr); public: inline /* implicit */ term(); inline /* implicit */ term(const term &obj); inline /* implicit */ term(std::nullptr_t); inline term &operator=(term obj); inline ~term(); inline __isl_give isl_term *copy() const &; inline __isl_give isl_term *copy() && = delete; inline __isl_keep isl_term *get() const; inline __isl_give isl_term *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline unsigned int dim(isl::dim type) const; inline val get_coefficient_val() const; inline aff get_div(unsigned int pos) const; inline int get_exp(isl::dim type, unsigned int pos) const; }; // declarations for isl::union_access_info inline union_access_info manage(__isl_take isl_union_access_info *ptr); inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr); class union_access_info { friend inline union_access_info manage(__isl_take isl_union_access_info *ptr); friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr); isl_union_access_info *ptr = nullptr; inline explicit union_access_info(__isl_take isl_union_access_info *ptr); public: inline /* implicit */ union_access_info(); inline /* implicit */ union_access_info(const union_access_info &obj); inline /* implicit */ union_access_info(std::nullptr_t); inline explicit union_access_info(union_map sink); inline union_access_info &operator=(union_access_info obj); inline ~union_access_info(); inline __isl_give isl_union_access_info *copy() const &; inline __isl_give isl_union_access_info *copy() && = delete; inline __isl_keep isl_union_access_info *get() const; inline __isl_give isl_union_access_info *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline union_flow compute_flow() const; inline union_access_info set_kill(union_map kill) const; inline union_access_info set_may_source(union_map may_source) const; inline union_access_info set_must_source(union_map must_source) const; inline union_access_info set_schedule(schedule schedule) const; inline union_access_info set_schedule_map(union_map schedule_map) const; }; // declarations for isl::union_flow inline union_flow manage(__isl_take isl_union_flow *ptr); inline union_flow manage_copy(__isl_keep isl_union_flow *ptr); class union_flow { friend inline union_flow manage(__isl_take isl_union_flow *ptr); friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr); isl_union_flow *ptr = nullptr; inline explicit union_flow(__isl_take isl_union_flow *ptr); public: inline /* implicit */ union_flow(); inline /* implicit */ union_flow(const union_flow &obj); inline /* implicit */ union_flow(std::nullptr_t); inline union_flow &operator=(union_flow obj); inline ~union_flow(); inline __isl_give isl_union_flow *copy() const &; inline __isl_give isl_union_flow *copy() && = delete; inline __isl_keep isl_union_flow *get() const; inline __isl_give isl_union_flow *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline union_map get_full_may_dependence() const; inline union_map get_full_must_dependence() const; inline union_map get_may_dependence() const; inline union_map get_may_no_source() const; inline union_map get_must_dependence() const; inline union_map get_must_no_source() const; }; // declarations for isl::union_map inline union_map manage(__isl_take isl_union_map *ptr); inline union_map manage_copy(__isl_keep isl_union_map *ptr); class union_map { friend inline union_map manage(__isl_take isl_union_map *ptr); friend inline union_map manage_copy(__isl_keep isl_union_map *ptr); isl_union_map *ptr = nullptr; inline explicit union_map(__isl_take isl_union_map *ptr); public: inline /* implicit */ union_map(); inline /* implicit */ union_map(const union_map &obj); inline /* implicit */ union_map(std::nullptr_t); inline explicit union_map(union_pw_multi_aff upma); inline /* implicit */ union_map(basic_map bmap); inline /* implicit */ union_map(map map); inline explicit union_map(ctx ctx, const std::string &str); inline union_map &operator=(union_map obj); inline ~union_map(); inline __isl_give isl_union_map *copy() const &; inline __isl_give isl_union_map *copy() && = delete; inline __isl_keep isl_union_map *get() const; inline __isl_give isl_union_map *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline union_map add_map(map map) const; inline union_map affine_hull() const; inline union_map align_params(space model) const; inline union_map apply_domain(union_map umap2) const; inline union_map apply_range(union_map umap2) const; inline union_map coalesce() const; inline boolean contains(const space &space) const; inline union_map curry() const; inline union_set deltas() const; inline union_map deltas_map() const; inline union_map detect_equalities() const; inline unsigned int dim(isl::dim type) const; inline union_set domain() const; inline union_map domain_factor_domain() const; inline union_map domain_factor_range() const; inline union_map domain_map() const; inline union_pw_multi_aff domain_map_union_pw_multi_aff() const; inline union_map domain_product(union_map umap2) const; static inline union_map empty(space space); inline union_map eq_at(multi_union_pw_aff mupa) const; inline map extract_map(space dim) const; inline union_map factor_domain() const; inline union_map factor_range() const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline union_map fixed_power(val exp) const; inline union_map flat_domain_product(union_map umap2) const; inline union_map flat_range_product(union_map umap2) const; inline stat foreach_map(const std::function &fn) const; static inline union_map from(multi_union_pw_aff mupa); static inline union_map from_domain(union_set uset); static inline union_map from_domain_and_range(union_set domain, union_set range); static inline union_map from_range(union_set uset); static inline union_map from_union_pw_aff(union_pw_aff upa); inline id get_dim_id(isl::dim type, unsigned int pos) const; inline uint32_t get_hash() const; inline map_list get_map_list() const; inline space get_space() const; inline union_map gist(union_map context) const; inline union_map gist_domain(union_set uset) const; inline union_map gist_params(set set) const; inline union_map gist_range(union_set uset) const; inline union_map intersect(union_map umap2) const; inline union_map intersect_domain(union_set uset) const; inline union_map intersect_params(set set) const; inline union_map intersect_range(union_set uset) const; inline union_map intersect_range_factor_range(union_map factor) const; inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const; inline boolean is_bijective() const; inline boolean is_disjoint(const union_map &umap2) const; inline boolean is_empty() const; inline boolean is_equal(const union_map &umap2) const; inline boolean is_identity() const; inline boolean is_injective() const; inline boolean is_single_valued() const; inline boolean is_strict_subset(const union_map &umap2) const; inline boolean is_subset(const union_map &umap2) const; inline union_map lex_ge_union_map(union_map umap2) const; inline union_map lex_gt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const; inline union_map lex_gt_union_map(union_map umap2) const; inline union_map lex_le_union_map(union_map umap2) const; inline union_map lex_lt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const; inline union_map lex_lt_union_map(union_map umap2) const; inline union_map lexmax() const; inline union_map lexmin() const; inline int n_map() const; inline set params() const; inline boolean plain_is_empty() const; inline boolean plain_is_injective() const; inline union_map polyhedral_hull() const; inline union_map preimage_domain_multi_aff(multi_aff ma) const; inline union_map preimage_domain_multi_pw_aff(multi_pw_aff mpa) const; inline union_map preimage_domain_pw_multi_aff(pw_multi_aff pma) const; inline union_map preimage_domain_union_pw_multi_aff(union_pw_multi_aff upma) const; inline union_map preimage_range_multi_aff(multi_aff ma) const; inline union_map preimage_range_pw_multi_aff(pw_multi_aff pma) const; inline union_map preimage_range_union_pw_multi_aff(union_pw_multi_aff upma) const; inline union_map product(union_map umap2) const; inline union_map project_out(isl::dim type, unsigned int first, unsigned int n) const; inline union_map project_out_all_params() const; inline union_set range() const; inline union_map range_curry() const; inline union_map range_factor_domain() const; inline union_map range_factor_range() const; inline union_map range_map() const; inline union_map range_product(union_map umap2) const; inline union_map remove_divs() const; inline union_map remove_redundancies() const; inline union_map reset_user() const; inline union_map reverse() const; inline basic_map sample() const; inline union_map simple_hull() const; inline union_map subtract(union_map umap2) const; inline union_map subtract_domain(union_set dom) const; inline union_map subtract_range(union_set dom) const; inline union_map uncurry() const; inline union_map unite(union_map umap2) const; inline union_map universe() const; inline union_set wrap() const; inline union_map zip() const; }; // declarations for isl::union_map_list inline union_map_list manage(__isl_take isl_union_map_list *ptr); inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr); class union_map_list { friend inline union_map_list manage(__isl_take isl_union_map_list *ptr); friend inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr); isl_union_map_list *ptr = nullptr; inline explicit union_map_list(__isl_take isl_union_map_list *ptr); public: inline /* implicit */ union_map_list(); inline /* implicit */ union_map_list(const union_map_list &obj); inline /* implicit */ union_map_list(std::nullptr_t); inline union_map_list &operator=(union_map_list obj); inline ~union_map_list(); inline __isl_give isl_union_map_list *copy() const &; inline __isl_give isl_union_map_list *copy() && = delete; inline __isl_keep isl_union_map_list *get() const; inline __isl_give isl_union_map_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline union_map_list add(union_map el) const; static inline union_map_list alloc(ctx ctx, int n); inline union_map_list concat(union_map_list list2) const; inline union_map_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline union_map_list from_union_map(union_map el); inline union_map get_at(int index) const; inline union_map get_union_map(int index) const; inline union_map_list insert(unsigned int pos, union_map el) const; inline int n_union_map() const; inline union_map_list reverse() const; inline union_map_list set_union_map(int index, union_map el) const; inline int size() const; inline union_map_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::union_pw_aff inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr); inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr); class union_pw_aff { friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr); friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr); isl_union_pw_aff *ptr = nullptr; inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr); public: inline /* implicit */ union_pw_aff(); inline /* implicit */ union_pw_aff(const union_pw_aff &obj); inline /* implicit */ union_pw_aff(std::nullptr_t); inline /* implicit */ union_pw_aff(pw_aff pa); inline explicit union_pw_aff(union_set domain, val v); inline explicit union_pw_aff(ctx ctx, const std::string &str); inline union_pw_aff &operator=(union_pw_aff obj); inline ~union_pw_aff(); inline __isl_give isl_union_pw_aff *copy() const &; inline __isl_give isl_union_pw_aff *copy() && = delete; inline __isl_keep isl_union_pw_aff *get() const; inline __isl_give isl_union_pw_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline union_pw_aff add(union_pw_aff upa2) const; inline union_pw_aff add_pw_aff(pw_aff pa) const; static inline union_pw_aff aff_on_domain(union_set domain, aff aff); inline union_pw_aff align_params(space model) const; inline union_pw_aff coalesce() const; inline unsigned int dim(isl::dim type) const; inline union_set domain() const; inline union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; static inline union_pw_aff empty(space space); inline pw_aff extract_pw_aff(space space) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline union_pw_aff floor() const; inline stat foreach_pw_aff(const std::function &fn) const; inline pw_aff_list get_pw_aff_list() const; inline space get_space() const; inline union_pw_aff gist(union_set context) const; inline union_pw_aff gist_params(set context) const; inline union_pw_aff intersect_domain(union_set uset) const; inline union_pw_aff intersect_params(set set) const; inline boolean involves_nan() const; inline val max_val() const; inline val min_val() const; inline union_pw_aff mod_val(val f) const; inline int n_pw_aff() const; inline union_pw_aff neg() const; static inline union_pw_aff param_on_domain_id(union_set domain, id id); inline boolean plain_is_equal(const union_pw_aff &upa2) const; inline union_pw_aff pullback(union_pw_multi_aff upma) const; static inline union_pw_aff pw_aff_on_domain(union_set domain, pw_aff pa); inline union_pw_aff reset_user() const; inline union_pw_aff scale_down_val(val v) const; inline union_pw_aff scale_val(val v) const; inline union_pw_aff sub(union_pw_aff upa2) const; inline union_pw_aff subtract_domain(union_set uset) const; inline union_pw_aff union_add(union_pw_aff upa2) const; inline union_set zero_union_set() const; }; // declarations for isl::union_pw_aff_list inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr); inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr); class union_pw_aff_list { friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr); friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr); isl_union_pw_aff_list *ptr = nullptr; inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr); public: inline /* implicit */ union_pw_aff_list(); inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj); inline /* implicit */ union_pw_aff_list(std::nullptr_t); inline union_pw_aff_list &operator=(union_pw_aff_list obj); inline ~union_pw_aff_list(); inline __isl_give isl_union_pw_aff_list *copy() const &; inline __isl_give isl_union_pw_aff_list *copy() && = delete; inline __isl_keep isl_union_pw_aff_list *get() const; inline __isl_give isl_union_pw_aff_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline union_pw_aff_list add(union_pw_aff el) const; static inline union_pw_aff_list alloc(ctx ctx, int n); inline union_pw_aff_list concat(union_pw_aff_list list2) const; inline union_pw_aff_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline union_pw_aff_list from_union_pw_aff(union_pw_aff el); inline union_pw_aff get_at(int index) const; inline union_pw_aff get_union_pw_aff(int index) const; inline union_pw_aff_list insert(unsigned int pos, union_pw_aff el) const; inline int n_union_pw_aff() const; inline union_pw_aff_list reverse() const; inline union_pw_aff_list set_union_pw_aff(int index, union_pw_aff el) const; inline int size() const; inline union_pw_aff_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::union_pw_multi_aff inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr); inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr); class union_pw_multi_aff { friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr); friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr); isl_union_pw_multi_aff *ptr = nullptr; inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr); public: inline /* implicit */ union_pw_multi_aff(); inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj); inline /* implicit */ union_pw_multi_aff(std::nullptr_t); inline /* implicit */ union_pw_multi_aff(aff aff); inline /* implicit */ union_pw_multi_aff(pw_multi_aff pma); inline explicit union_pw_multi_aff(union_set uset); inline explicit union_pw_multi_aff(union_map umap); inline explicit union_pw_multi_aff(ctx ctx, const std::string &str); inline /* implicit */ union_pw_multi_aff(union_pw_aff upa); inline explicit union_pw_multi_aff(multi_union_pw_aff mupa); inline union_pw_multi_aff &operator=(union_pw_multi_aff obj); inline ~union_pw_multi_aff(); inline __isl_give isl_union_pw_multi_aff *copy() const &; inline __isl_give isl_union_pw_multi_aff *copy() && = delete; inline __isl_keep isl_union_pw_multi_aff *get() const; inline __isl_give isl_union_pw_multi_aff *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline union_pw_multi_aff add(union_pw_multi_aff upma2) const; inline union_pw_multi_aff add_pw_multi_aff(pw_multi_aff pma) const; inline union_pw_multi_aff align_params(space model) const; inline union_pw_multi_aff coalesce() const; inline unsigned int dim(isl::dim type) const; inline union_set domain() const; inline union_pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const; static inline union_pw_multi_aff empty(space space); inline pw_multi_aff extract_pw_multi_aff(space space) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline union_pw_multi_aff flat_range_product(union_pw_multi_aff upma2) const; inline stat foreach_pw_multi_aff(const std::function &fn) const; static inline union_pw_multi_aff from_union_set(union_set uset); inline pw_multi_aff_list get_pw_multi_aff_list() const; inline space get_space() const; inline union_pw_aff get_union_pw_aff(int pos) const; inline union_pw_multi_aff gist(union_set context) const; inline union_pw_multi_aff gist_params(set context) const; inline union_pw_multi_aff intersect_domain(union_set uset) const; inline union_pw_multi_aff intersect_params(set set) const; inline boolean involves_nan() const; static inline union_pw_multi_aff multi_val_on_domain(union_set domain, multi_val mv); inline int n_pw_multi_aff() const; inline union_pw_multi_aff neg() const; inline boolean plain_is_equal(const union_pw_multi_aff &upma2) const; inline union_pw_multi_aff pullback(union_pw_multi_aff upma2) const; inline union_pw_multi_aff reset_user() const; inline union_pw_multi_aff scale_down_val(val val) const; inline union_pw_multi_aff scale_multi_val(multi_val mv) const; inline union_pw_multi_aff scale_val(val val) const; inline union_pw_multi_aff sub(union_pw_multi_aff upma2) const; inline union_pw_multi_aff subtract_domain(union_set uset) const; inline union_pw_multi_aff union_add(union_pw_multi_aff upma2) const; }; // declarations for isl::union_pw_multi_aff_list inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr); inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr); class union_pw_multi_aff_list { friend inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr); friend inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr); isl_union_pw_multi_aff_list *ptr = nullptr; inline explicit union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr); public: inline /* implicit */ union_pw_multi_aff_list(); inline /* implicit */ union_pw_multi_aff_list(const union_pw_multi_aff_list &obj); inline /* implicit */ union_pw_multi_aff_list(std::nullptr_t); inline union_pw_multi_aff_list &operator=(union_pw_multi_aff_list obj); inline ~union_pw_multi_aff_list(); inline __isl_give isl_union_pw_multi_aff_list *copy() const &; inline __isl_give isl_union_pw_multi_aff_list *copy() && = delete; inline __isl_keep isl_union_pw_multi_aff_list *get() const; inline __isl_give isl_union_pw_multi_aff_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline union_pw_multi_aff_list add(union_pw_multi_aff el) const; static inline union_pw_multi_aff_list alloc(ctx ctx, int n); inline union_pw_multi_aff_list concat(union_pw_multi_aff_list list2) const; inline union_pw_multi_aff_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline union_pw_multi_aff_list from_union_pw_multi_aff(union_pw_multi_aff el); inline union_pw_multi_aff get_at(int index) const; inline union_pw_multi_aff get_union_pw_multi_aff(int index) const; inline union_pw_multi_aff_list insert(unsigned int pos, union_pw_multi_aff el) const; inline int n_union_pw_multi_aff() const; inline union_pw_multi_aff_list reverse() const; inline union_pw_multi_aff_list set_union_pw_multi_aff(int index, union_pw_multi_aff el) const; inline int size() const; inline union_pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::union_pw_qpolynomial inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr); inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr); class union_pw_qpolynomial { friend inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr); friend inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr); isl_union_pw_qpolynomial *ptr = nullptr; inline explicit union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr); public: inline /* implicit */ union_pw_qpolynomial(); inline /* implicit */ union_pw_qpolynomial(const union_pw_qpolynomial &obj); inline /* implicit */ union_pw_qpolynomial(std::nullptr_t); inline explicit union_pw_qpolynomial(ctx ctx, const std::string &str); inline union_pw_qpolynomial &operator=(union_pw_qpolynomial obj); inline ~union_pw_qpolynomial(); inline __isl_give isl_union_pw_qpolynomial *copy() const &; inline __isl_give isl_union_pw_qpolynomial *copy() && = delete; inline __isl_keep isl_union_pw_qpolynomial *get() const; inline __isl_give isl_union_pw_qpolynomial *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline union_pw_qpolynomial add(union_pw_qpolynomial upwqp2) const; inline union_pw_qpolynomial add_pw_qpolynomial(pw_qpolynomial pwqp) const; inline union_pw_qpolynomial align_params(space model) const; inline union_pw_qpolynomial coalesce() const; inline unsigned int dim(isl::dim type) const; inline union_set domain() const; inline union_pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const; inline val eval(point pnt) const; inline pw_qpolynomial extract_pw_qpolynomial(space dim) const; inline int find_dim_by_name(isl::dim type, const std::string &name) const; inline stat foreach_pw_qpolynomial(const std::function &fn) const; static inline union_pw_qpolynomial from_pw_qpolynomial(pw_qpolynomial pwqp); inline pw_qpolynomial_list get_pw_qpolynomial_list() const; inline space get_space() const; inline union_pw_qpolynomial gist(union_set context) const; inline union_pw_qpolynomial gist_params(set context) const; inline union_pw_qpolynomial intersect_domain(union_set uset) const; inline union_pw_qpolynomial intersect_params(set set) const; inline boolean involves_nan() const; inline union_pw_qpolynomial mul(union_pw_qpolynomial upwqp2) const; inline int n_pw_qpolynomial() const; inline union_pw_qpolynomial neg() const; inline boolean plain_is_equal(const union_pw_qpolynomial &upwqp2) const; inline union_pw_qpolynomial reset_user() const; inline union_pw_qpolynomial scale_down_val(val v) const; inline union_pw_qpolynomial scale_val(val v) const; inline union_pw_qpolynomial sub(union_pw_qpolynomial upwqp2) const; inline union_pw_qpolynomial subtract_domain(union_set uset) const; inline union_pw_qpolynomial to_polynomial(int sign) const; static inline union_pw_qpolynomial zero(space dim); }; // declarations for isl::union_set inline union_set manage(__isl_take isl_union_set *ptr); inline union_set manage_copy(__isl_keep isl_union_set *ptr); class union_set { friend inline union_set manage(__isl_take isl_union_set *ptr); friend inline union_set manage_copy(__isl_keep isl_union_set *ptr); isl_union_set *ptr = nullptr; inline explicit union_set(__isl_take isl_union_set *ptr); public: inline /* implicit */ union_set(); inline /* implicit */ union_set(const union_set &obj); inline /* implicit */ union_set(std::nullptr_t); inline /* implicit */ union_set(basic_set bset); inline /* implicit */ union_set(set set); inline /* implicit */ union_set(point pnt); inline explicit union_set(ctx ctx, const std::string &str); inline union_set &operator=(union_set obj); inline ~union_set(); inline __isl_give isl_union_set *copy() const &; inline __isl_give isl_union_set *copy() && = delete; inline __isl_keep isl_union_set *get() const; inline __isl_give isl_union_set *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline union_set add_set(set set) const; inline union_set affine_hull() const; inline union_set align_params(space model) const; inline union_set apply(union_map umap) const; inline union_set coalesce() const; inline union_set coefficients() const; inline schedule compute_schedule(union_map validity, union_map proximity) const; inline boolean contains(const space &space) const; inline union_set detect_equalities() const; inline unsigned int dim(isl::dim type) const; static inline union_set empty(space space); inline set extract_set(space dim) const; inline stat foreach_point(const std::function &fn) const; inline stat foreach_set(const std::function &fn) const; inline basic_set_list get_basic_set_list() const; inline uint32_t get_hash() const; inline set_list get_set_list() const; inline space get_space() const; inline union_set gist(union_set context) const; inline union_set gist_params(set set) const; inline union_map identity() const; inline union_pw_multi_aff identity_union_pw_multi_aff() const; inline union_set intersect(union_set uset2) const; inline union_set intersect_params(set set) const; inline boolean is_disjoint(const union_set &uset2) const; inline boolean is_empty() const; inline boolean is_equal(const union_set &uset2) const; inline boolean is_params() const; inline boolean is_strict_subset(const union_set &uset2) const; inline boolean is_subset(const union_set &uset2) const; inline union_map lex_ge_union_set(union_set uset2) const; inline union_map lex_gt_union_set(union_set uset2) const; inline union_map lex_le_union_set(union_set uset2) const; inline union_map lex_lt_union_set(union_set uset2) const; inline union_set lexmax() const; inline union_set lexmin() const; inline multi_val min_multi_union_pw_aff(const multi_union_pw_aff &obj) const; inline int n_set() const; inline set params() const; inline union_set polyhedral_hull() const; inline union_set preimage(multi_aff ma) const; inline union_set preimage(pw_multi_aff pma) const; inline union_set preimage(union_pw_multi_aff upma) const; inline union_set product(union_set uset2) const; inline union_set project_out(isl::dim type, unsigned int first, unsigned int n) const; inline union_set remove_divs() const; inline union_set remove_redundancies() const; inline union_set reset_user() const; inline basic_set sample() const; inline point sample_point() const; inline union_set simple_hull() const; inline union_set solutions() const; inline union_set subtract(union_set uset2) const; inline union_set unite(union_set uset2) const; inline union_set universe() const; inline union_map unwrap() const; inline union_map wrapped_domain_map() const; }; // declarations for isl::union_set_list inline union_set_list manage(__isl_take isl_union_set_list *ptr); inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr); class union_set_list { friend inline union_set_list manage(__isl_take isl_union_set_list *ptr); friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr); isl_union_set_list *ptr = nullptr; inline explicit union_set_list(__isl_take isl_union_set_list *ptr); public: inline /* implicit */ union_set_list(); inline /* implicit */ union_set_list(const union_set_list &obj); inline /* implicit */ union_set_list(std::nullptr_t); inline union_set_list &operator=(union_set_list obj); inline ~union_set_list(); inline __isl_give isl_union_set_list *copy() const &; inline __isl_give isl_union_set_list *copy() && = delete; inline __isl_keep isl_union_set_list *get() const; inline __isl_give isl_union_set_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline union_set_list add(union_set el) const; static inline union_set_list alloc(ctx ctx, int n); inline union_set_list concat(union_set_list list2) const; inline union_set_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline union_set_list from_union_set(union_set el); inline union_set get_at(int index) const; inline union_set get_union_set(int index) const; inline union_set_list insert(unsigned int pos, union_set el) const; inline int n_union_set() const; inline union_set_list reverse() const; inline union_set_list set_union_set(int index, union_set el) const; inline int size() const; inline union_set_list swap(unsigned int pos1, unsigned int pos2) const; inline union_set unite() const; }; // declarations for isl::val inline val manage(__isl_take isl_val *ptr); inline val manage_copy(__isl_keep isl_val *ptr); class val { friend inline val manage(__isl_take isl_val *ptr); friend inline val manage_copy(__isl_keep isl_val *ptr); isl_val *ptr = nullptr; inline explicit val(__isl_take isl_val *ptr); public: inline /* implicit */ val(); inline /* implicit */ val(const val &obj); inline /* implicit */ val(std::nullptr_t); inline explicit val(ctx ctx, const std::string &str); inline explicit val(ctx ctx, long i); inline val &operator=(val obj); inline ~val(); inline __isl_give isl_val *copy() const &; inline __isl_give isl_val *copy() && = delete; inline __isl_keep isl_val *get() const; inline __isl_give isl_val *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline std::string to_str() const; inline void dump() const; inline val abs() const; inline boolean abs_eq(const val &v2) const; inline val add(val v2) const; inline val add_ui(unsigned long v2) const; inline val ceil() const; inline int cmp_si(long i) const; inline val div(val v2) const; inline val div_ui(unsigned long v2) const; inline boolean eq(const val &v2) const; inline val floor() const; inline val gcd(val v2) const; inline boolean ge(const val &v2) const; inline uint32_t get_hash() const; inline long get_num_si() const; inline boolean gt(const val &v2) const; inline boolean gt_si(long i) const; static inline val infty(ctx ctx); static inline val int_from_ui(ctx ctx, unsigned long u); inline val inv() const; inline boolean is_divisible_by(const val &v2) const; inline boolean is_infty() const; inline boolean is_int() const; inline boolean is_nan() const; inline boolean is_neg() const; inline boolean is_neginfty() const; inline boolean is_negone() const; inline boolean is_nonneg() const; inline boolean is_nonpos() const; inline boolean is_one() const; inline boolean is_pos() const; inline boolean is_rat() const; inline boolean is_zero() const; inline boolean le(const val &v2) const; inline boolean lt(const val &v2) const; inline val max(val v2) const; inline val min(val v2) const; inline val mod(val v2) const; inline val mul(val v2) const; inline val mul_ui(unsigned long v2) const; inline size_t n_abs_num_chunks(size_t size) const; static inline val nan(ctx ctx); inline boolean ne(const val &v2) const; inline val neg() const; static inline val neginfty(ctx ctx); static inline val negone(ctx ctx); static inline val one(ctx ctx); inline val pow2() const; inline val set_si(long i) const; inline int sgn() const; inline val sub(val v2) const; inline val sub_ui(unsigned long v2) const; inline val trunc() const; static inline val zero(ctx ctx); }; // declarations for isl::val_list inline val_list manage(__isl_take isl_val_list *ptr); inline val_list manage_copy(__isl_keep isl_val_list *ptr); class val_list { friend inline val_list manage(__isl_take isl_val_list *ptr); friend inline val_list manage_copy(__isl_keep isl_val_list *ptr); isl_val_list *ptr = nullptr; inline explicit val_list(__isl_take isl_val_list *ptr); public: inline /* implicit */ val_list(); inline /* implicit */ val_list(const val_list &obj); inline /* implicit */ val_list(std::nullptr_t); inline val_list &operator=(val_list obj); inline ~val_list(); inline __isl_give isl_val_list *copy() const &; inline __isl_give isl_val_list *copy() && = delete; inline __isl_keep isl_val_list *get() const; inline __isl_give isl_val_list *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline val_list add(val el) const; static inline val_list alloc(ctx ctx, int n); inline val_list concat(val_list list2) const; inline val_list drop(unsigned int first, unsigned int n) const; inline stat foreach(const std::function &fn) const; static inline val_list from_val(val el); inline val get_at(int index) const; inline val get_val(int index) const; inline val_list insert(unsigned int pos, val el) const; inline int n_val() const; inline val_list reverse() const; inline val_list set_val(int index, val el) const; inline int size() const; inline val_list swap(unsigned int pos1, unsigned int pos2) const; }; // declarations for isl::vec inline vec manage(__isl_take isl_vec *ptr); inline vec manage_copy(__isl_keep isl_vec *ptr); class vec { friend inline vec manage(__isl_take isl_vec *ptr); friend inline vec manage_copy(__isl_keep isl_vec *ptr); isl_vec *ptr = nullptr; inline explicit vec(__isl_take isl_vec *ptr); public: inline /* implicit */ vec(); inline /* implicit */ vec(const vec &obj); inline /* implicit */ vec(std::nullptr_t); inline vec &operator=(vec obj); inline ~vec(); inline __isl_give isl_vec *copy() const &; inline __isl_give isl_vec *copy() && = delete; inline __isl_keep isl_vec *get() const; inline __isl_give isl_vec *release(); inline bool is_null() const; inline explicit operator bool() const; inline ctx get_ctx() const; inline void dump() const; inline vec add(vec vec2) const; inline vec add_els(unsigned int n) const; static inline vec alloc(ctx ctx, unsigned int size); inline vec ceil() const; inline vec clr() const; inline int cmp_element(const vec &vec2, int pos) const; inline vec concat(vec vec2) const; inline vec drop_els(unsigned int pos, unsigned int n) const; inline vec extend(unsigned int size) const; inline val get_element_val(int pos) const; inline vec insert_els(unsigned int pos, unsigned int n) const; inline vec insert_zero_els(unsigned int pos, unsigned int n) const; inline boolean is_equal(const vec &vec2) const; inline vec mat_product(mat mat) const; inline vec move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const; inline vec neg() const; inline vec set_element_si(int pos, int v) const; inline vec set_element_val(int pos, val v) const; inline vec set_si(int v) const; inline vec set_val(val v) const; inline int size() const; inline vec sort() const; static inline vec zero(ctx ctx, unsigned int size); inline vec zero_extend(unsigned int size) const; }; // implementations for isl::aff aff manage(__isl_take isl_aff *ptr) { return aff(ptr); } aff manage_copy(__isl_keep isl_aff *ptr) { ptr = isl_aff_copy(ptr); return aff(ptr); } aff::aff() : ptr(nullptr) {} aff::aff(const aff &obj) : ptr(nullptr) { ptr = obj.copy(); } aff::aff(std::nullptr_t) : ptr(nullptr) {} aff::aff(__isl_take isl_aff *ptr) : ptr(ptr) {} aff::aff(local_space ls) { auto res = isl_aff_zero_on_domain(ls.release()); ptr = res; } aff::aff(local_space ls, val val) { auto res = isl_aff_val_on_domain(ls.release(), val.release()); ptr = res; } aff::aff(ctx ctx, const std::string &str) { auto res = isl_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } aff &aff::operator=(aff obj) { std::swap(this->ptr, obj.ptr); return *this; } aff::~aff() { if (ptr) isl_aff_free(ptr); } __isl_give isl_aff *aff::copy() const & { return isl_aff_copy(ptr); } __isl_keep isl_aff *aff::get() const { return ptr; } __isl_give isl_aff *aff::release() { isl_aff *tmp = ptr; ptr = nullptr; return tmp; } bool aff::is_null() const { return ptr == nullptr; } aff::operator bool() const { return !is_null(); } ctx aff::get_ctx() const { return ctx(isl_aff_get_ctx(ptr)); } std::string aff::to_str() const { char *Tmp = isl_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void aff::dump() const { isl_aff_dump(get()); } aff aff::add(aff aff2) const { auto res = isl_aff_add(copy(), aff2.release()); return manage(res); } aff aff::add_coefficient_si(isl::dim type, int pos, int v) const { auto res = isl_aff_add_coefficient_si(copy(), static_cast(type), pos, v); return manage(res); } aff aff::add_coefficient_val(isl::dim type, int pos, val v) const { auto res = isl_aff_add_coefficient_val(copy(), static_cast(type), pos, v.release()); return manage(res); } aff aff::add_constant_num_si(int v) const { auto res = isl_aff_add_constant_num_si(copy(), v); return manage(res); } aff aff::add_constant_si(int v) const { auto res = isl_aff_add_constant_si(copy(), v); return manage(res); } aff aff::add_constant_val(val v) const { auto res = isl_aff_add_constant_val(copy(), v.release()); return manage(res); } aff aff::add_dims(isl::dim type, unsigned int n) const { auto res = isl_aff_add_dims(copy(), static_cast(type), n); return manage(res); } aff aff::align_params(space model) const { auto res = isl_aff_align_params(copy(), model.release()); return manage(res); } aff aff::ceil() const { auto res = isl_aff_ceil(copy()); return manage(res); } int aff::coefficient_sgn(isl::dim type, int pos) const { auto res = isl_aff_coefficient_sgn(get(), static_cast(type), pos); return res; } int aff::dim(isl::dim type) const { auto res = isl_aff_dim(get(), static_cast(type)); return res; } aff aff::div(aff aff2) const { auto res = isl_aff_div(copy(), aff2.release()); return manage(res); } aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } basic_set aff::eq_basic_set(aff aff2) const { auto res = isl_aff_eq_basic_set(copy(), aff2.release()); return manage(res); } set aff::eq_set(aff aff2) const { auto res = isl_aff_eq_set(copy(), aff2.release()); return manage(res); } val aff::eval(point pnt) const { auto res = isl_aff_eval(copy(), pnt.release()); return manage(res); } int aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } aff aff::floor() const { auto res = isl_aff_floor(copy()); return manage(res); } aff aff::from_range() const { auto res = isl_aff_from_range(copy()); return manage(res); } basic_set aff::ge_basic_set(aff aff2) const { auto res = isl_aff_ge_basic_set(copy(), aff2.release()); return manage(res); } set aff::ge_set(aff aff2) const { auto res = isl_aff_ge_set(copy(), aff2.release()); return manage(res); } val aff::get_coefficient_val(isl::dim type, int pos) const { auto res = isl_aff_get_coefficient_val(get(), static_cast(type), pos); return manage(res); } val aff::get_constant_val() const { auto res = isl_aff_get_constant_val(get()); return manage(res); } val aff::get_denominator_val() const { auto res = isl_aff_get_denominator_val(get()); return manage(res); } std::string aff::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_aff_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } aff aff::get_div(int pos) const { auto res = isl_aff_get_div(get(), pos); return manage(res); } local_space aff::get_domain_local_space() const { auto res = isl_aff_get_domain_local_space(get()); return manage(res); } space aff::get_domain_space() const { auto res = isl_aff_get_domain_space(get()); return manage(res); } uint32_t aff::get_hash() const { auto res = isl_aff_get_hash(get()); return res; } local_space aff::get_local_space() const { auto res = isl_aff_get_local_space(get()); return manage(res); } space aff::get_space() const { auto res = isl_aff_get_space(get()); return manage(res); } aff aff::gist(set context) const { auto res = isl_aff_gist(copy(), context.release()); return manage(res); } aff aff::gist_params(set context) const { auto res = isl_aff_gist_params(copy(), context.release()); return manage(res); } basic_set aff::gt_basic_set(aff aff2) const { auto res = isl_aff_gt_basic_set(copy(), aff2.release()); return manage(res); } set aff::gt_set(aff aff2) const { auto res = isl_aff_gt_set(copy(), aff2.release()); return manage(res); } aff aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_aff_insert_dims(copy(), static_cast(type), first, n); return manage(res); } boolean aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_aff_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean aff::is_cst() const { auto res = isl_aff_is_cst(get()); return manage(res); } boolean aff::is_nan() const { auto res = isl_aff_is_nan(get()); return manage(res); } basic_set aff::le_basic_set(aff aff2) const { auto res = isl_aff_le_basic_set(copy(), aff2.release()); return manage(res); } set aff::le_set(aff aff2) const { auto res = isl_aff_le_set(copy(), aff2.release()); return manage(res); } basic_set aff::lt_basic_set(aff aff2) const { auto res = isl_aff_lt_basic_set(copy(), aff2.release()); return manage(res); } set aff::lt_set(aff aff2) const { auto res = isl_aff_lt_set(copy(), aff2.release()); return manage(res); } aff aff::mod(val mod) const { auto res = isl_aff_mod_val(copy(), mod.release()); return manage(res); } aff aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_aff_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } aff aff::mul(aff aff2) const { auto res = isl_aff_mul(copy(), aff2.release()); return manage(res); } aff aff::nan_on_domain(local_space ls) { auto res = isl_aff_nan_on_domain(ls.release()); return manage(res); } set aff::ne_set(aff aff2) const { auto res = isl_aff_ne_set(copy(), aff2.release()); return manage(res); } aff aff::neg() const { auto res = isl_aff_neg(copy()); return manage(res); } basic_set aff::neg_basic_set() const { auto res = isl_aff_neg_basic_set(copy()); return manage(res); } aff aff::param_on_domain_space_id(space space, id id) { auto res = isl_aff_param_on_domain_space_id(space.release(), id.release()); return manage(res); } boolean aff::plain_is_equal(const aff &aff2) const { auto res = isl_aff_plain_is_equal(get(), aff2.get()); return manage(res); } boolean aff::plain_is_zero() const { auto res = isl_aff_plain_is_zero(get()); return manage(res); } aff aff::project_domain_on_params() const { auto res = isl_aff_project_domain_on_params(copy()); return manage(res); } aff aff::pullback(multi_aff ma) const { auto res = isl_aff_pullback_multi_aff(copy(), ma.release()); return manage(res); } aff aff::pullback_aff(aff aff2) const { auto res = isl_aff_pullback_aff(copy(), aff2.release()); return manage(res); } aff aff::scale(val v) const { auto res = isl_aff_scale_val(copy(), v.release()); return manage(res); } aff aff::scale_down(val v) const { auto res = isl_aff_scale_down_val(copy(), v.release()); return manage(res); } aff aff::scale_down_ui(unsigned int f) const { auto res = isl_aff_scale_down_ui(copy(), f); return manage(res); } aff aff::set_coefficient_si(isl::dim type, int pos, int v) const { auto res = isl_aff_set_coefficient_si(copy(), static_cast(type), pos, v); return manage(res); } aff aff::set_coefficient_val(isl::dim type, int pos, val v) const { auto res = isl_aff_set_coefficient_val(copy(), static_cast(type), pos, v.release()); return manage(res); } aff aff::set_constant_si(int v) const { auto res = isl_aff_set_constant_si(copy(), v); return manage(res); } aff aff::set_constant_val(val v) const { auto res = isl_aff_set_constant_val(copy(), v.release()); return manage(res); } aff aff::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_aff_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } aff aff::set_tuple_id(isl::dim type, id id) const { auto res = isl_aff_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } aff aff::sub(aff aff2) const { auto res = isl_aff_sub(copy(), aff2.release()); return manage(res); } aff aff::var_on_domain(local_space ls, isl::dim type, unsigned int pos) { auto res = isl_aff_var_on_domain(ls.release(), static_cast(type), pos); return manage(res); } basic_set aff::zero_basic_set() const { auto res = isl_aff_zero_basic_set(copy()); return manage(res); } // implementations for isl::aff_list aff_list manage(__isl_take isl_aff_list *ptr) { return aff_list(ptr); } aff_list manage_copy(__isl_keep isl_aff_list *ptr) { ptr = isl_aff_list_copy(ptr); return aff_list(ptr); } aff_list::aff_list() : ptr(nullptr) {} aff_list::aff_list(const aff_list &obj) : ptr(nullptr) { ptr = obj.copy(); } aff_list::aff_list(std::nullptr_t) : ptr(nullptr) {} aff_list::aff_list(__isl_take isl_aff_list *ptr) : ptr(ptr) {} aff_list &aff_list::operator=(aff_list obj) { std::swap(this->ptr, obj.ptr); return *this; } aff_list::~aff_list() { if (ptr) isl_aff_list_free(ptr); } __isl_give isl_aff_list *aff_list::copy() const & { return isl_aff_list_copy(ptr); } __isl_keep isl_aff_list *aff_list::get() const { return ptr; } __isl_give isl_aff_list *aff_list::release() { isl_aff_list *tmp = ptr; ptr = nullptr; return tmp; } bool aff_list::is_null() const { return ptr == nullptr; } aff_list::operator bool() const { return !is_null(); } ctx aff_list::get_ctx() const { return ctx(isl_aff_list_get_ctx(ptr)); } void aff_list::dump() const { isl_aff_list_dump(get()); } aff_list aff_list::add(aff el) const { auto res = isl_aff_list_add(copy(), el.release()); return manage(res); } aff_list aff_list::alloc(ctx ctx, int n) { auto res = isl_aff_list_alloc(ctx.release(), n); return manage(res); } aff_list aff_list::concat(aff_list list2) const { auto res = isl_aff_list_concat(copy(), list2.release()); return manage(res); } aff_list aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl_aff_list_drop(copy(), first, n); return manage(res); } stat aff_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } aff_list aff_list::from_aff(aff el) { auto res = isl_aff_list_from_aff(el.release()); return manage(res); } aff aff_list::get_aff(int index) const { auto res = isl_aff_list_get_aff(get(), index); return manage(res); } aff aff_list::get_at(int index) const { auto res = isl_aff_list_get_at(get(), index); return manage(res); } aff_list aff_list::insert(unsigned int pos, aff el) const { auto res = isl_aff_list_insert(copy(), pos, el.release()); return manage(res); } int aff_list::n_aff() const { auto res = isl_aff_list_n_aff(get()); return res; } aff_list aff_list::reverse() const { auto res = isl_aff_list_reverse(copy()); return manage(res); } aff_list aff_list::set_aff(int index, aff el) const { auto res = isl_aff_list_set_aff(copy(), index, el.release()); return manage(res); } int aff_list::size() const { auto res = isl_aff_list_size(get()); return res; } aff_list aff_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_aff_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::ast_build ast_build manage(__isl_take isl_ast_build *ptr) { return ast_build(ptr); } ast_build manage_copy(__isl_keep isl_ast_build *ptr) { ptr = isl_ast_build_copy(ptr); return ast_build(ptr); } ast_build::ast_build() : ptr(nullptr) {} ast_build::ast_build(const ast_build &obj) : ptr(nullptr) { ptr = obj.copy(); } ast_build::ast_build(std::nullptr_t) : ptr(nullptr) {} ast_build::ast_build(__isl_take isl_ast_build *ptr) : ptr(ptr) {} ast_build::ast_build(ctx ctx) { auto res = isl_ast_build_alloc(ctx.release()); ptr = res; } ast_build &ast_build::operator=(ast_build obj) { std::swap(this->ptr, obj.ptr); return *this; } ast_build::~ast_build() { if (ptr) isl_ast_build_free(ptr); } __isl_give isl_ast_build *ast_build::copy() const & { return isl_ast_build_copy(ptr); } __isl_keep isl_ast_build *ast_build::get() const { return ptr; } __isl_give isl_ast_build *ast_build::release() { isl_ast_build *tmp = ptr; ptr = nullptr; return tmp; } bool ast_build::is_null() const { return ptr == nullptr; } ast_build::operator bool() const { return !is_null(); } ctx ast_build::get_ctx() const { return ctx(isl_ast_build_get_ctx(ptr)); } ast_expr ast_build::access_from(pw_multi_aff pma) const { auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release()); return manage(res); } ast_expr ast_build::access_from(multi_pw_aff mpa) const { auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release()); return manage(res); } ast_node ast_build::ast_from_schedule(union_map schedule) const { auto res = isl_ast_build_ast_from_schedule(get(), schedule.release()); return manage(res); } ast_expr ast_build::call_from(pw_multi_aff pma) const { auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release()); return manage(res); } ast_expr ast_build::call_from(multi_pw_aff mpa) const { auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release()); return manage(res); } ast_expr ast_build::expr_from(set set) const { auto res = isl_ast_build_expr_from_set(get(), set.release()); return manage(res); } ast_expr ast_build::expr_from(pw_aff pa) const { auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release()); return manage(res); } ast_build ast_build::from_context(set set) { auto res = isl_ast_build_from_context(set.release()); return manage(res); } union_map ast_build::get_schedule() const { auto res = isl_ast_build_get_schedule(get()); return manage(res); } space ast_build::get_schedule_space() const { auto res = isl_ast_build_get_schedule_space(get()); return manage(res); } ast_node ast_build::node_from_schedule(schedule schedule) const { auto res = isl_ast_build_node_from_schedule(get(), schedule.release()); return manage(res); } ast_node ast_build::node_from_schedule_map(union_map schedule) const { auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release()); return manage(res); } ast_build ast_build::restrict(set set) const { auto res = isl_ast_build_restrict(copy(), set.release()); return manage(res); } // implementations for isl::ast_expr ast_expr manage(__isl_take isl_ast_expr *ptr) { return ast_expr(ptr); } ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) { ptr = isl_ast_expr_copy(ptr); return ast_expr(ptr); } ast_expr::ast_expr() : ptr(nullptr) {} ast_expr::ast_expr(const ast_expr &obj) : ptr(nullptr) { ptr = obj.copy(); } ast_expr::ast_expr(std::nullptr_t) : ptr(nullptr) {} ast_expr::ast_expr(__isl_take isl_ast_expr *ptr) : ptr(ptr) {} ast_expr &ast_expr::operator=(ast_expr obj) { std::swap(this->ptr, obj.ptr); return *this; } ast_expr::~ast_expr() { if (ptr) isl_ast_expr_free(ptr); } __isl_give isl_ast_expr *ast_expr::copy() const & { return isl_ast_expr_copy(ptr); } __isl_keep isl_ast_expr *ast_expr::get() const { return ptr; } __isl_give isl_ast_expr *ast_expr::release() { isl_ast_expr *tmp = ptr; ptr = nullptr; return tmp; } bool ast_expr::is_null() const { return ptr == nullptr; } ast_expr::operator bool() const { return !is_null(); } ctx ast_expr::get_ctx() const { return ctx(isl_ast_expr_get_ctx(ptr)); } std::string ast_expr::to_str() const { char *Tmp = isl_ast_expr_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void ast_expr::dump() const { isl_ast_expr_dump(get()); } ast_expr ast_expr::access(ast_expr_list indices) const { auto res = isl_ast_expr_access(copy(), indices.release()); return manage(res); } ast_expr ast_expr::add(ast_expr expr2) const { auto res = isl_ast_expr_add(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::address_of() const { auto res = isl_ast_expr_address_of(copy()); return manage(res); } ast_expr ast_expr::call(ast_expr_list arguments) const { auto res = isl_ast_expr_call(copy(), arguments.release()); return manage(res); } ast_expr ast_expr::div(ast_expr expr2) const { auto res = isl_ast_expr_div(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::eq(ast_expr expr2) const { auto res = isl_ast_expr_eq(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::from_id(id id) { auto res = isl_ast_expr_from_id(id.release()); return manage(res); } ast_expr ast_expr::from_val(val v) { auto res = isl_ast_expr_from_val(v.release()); return manage(res); } ast_expr ast_expr::ge(ast_expr expr2) const { auto res = isl_ast_expr_ge(copy(), expr2.release()); return manage(res); } id ast_expr::get_id() const { auto res = isl_ast_expr_get_id(get()); return manage(res); } ast_expr ast_expr::get_op_arg(int pos) const { auto res = isl_ast_expr_get_op_arg(get(), pos); return manage(res); } int ast_expr::get_op_n_arg() const { auto res = isl_ast_expr_get_op_n_arg(get()); return res; } val ast_expr::get_val() const { auto res = isl_ast_expr_get_val(get()); return manage(res); } ast_expr ast_expr::gt(ast_expr expr2) const { auto res = isl_ast_expr_gt(copy(), expr2.release()); return manage(res); } boolean ast_expr::is_equal(const ast_expr &expr2) const { auto res = isl_ast_expr_is_equal(get(), expr2.get()); return manage(res); } ast_expr ast_expr::le(ast_expr expr2) const { auto res = isl_ast_expr_le(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::lt(ast_expr expr2) const { auto res = isl_ast_expr_lt(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::mul(ast_expr expr2) const { auto res = isl_ast_expr_mul(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::neg() const { auto res = isl_ast_expr_neg(copy()); return manage(res); } ast_expr ast_expr::pdiv_q(ast_expr expr2) const { auto res = isl_ast_expr_pdiv_q(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::pdiv_r(ast_expr expr2) const { auto res = isl_ast_expr_pdiv_r(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::set_op_arg(int pos, ast_expr arg) const { auto res = isl_ast_expr_set_op_arg(copy(), pos, arg.release()); return manage(res); } ast_expr ast_expr::sub(ast_expr expr2) const { auto res = isl_ast_expr_sub(copy(), expr2.release()); return manage(res); } ast_expr ast_expr::substitute_ids(id_to_ast_expr id2expr) const { auto res = isl_ast_expr_substitute_ids(copy(), id2expr.release()); return manage(res); } std::string ast_expr::to_C_str() const { auto res = isl_ast_expr_to_C_str(get()); std::string tmp(res); free(res); return tmp; } // implementations for isl::ast_expr_list ast_expr_list manage(__isl_take isl_ast_expr_list *ptr) { return ast_expr_list(ptr); } ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr) { ptr = isl_ast_expr_list_copy(ptr); return ast_expr_list(ptr); } ast_expr_list::ast_expr_list() : ptr(nullptr) {} ast_expr_list::ast_expr_list(const ast_expr_list &obj) : ptr(nullptr) { ptr = obj.copy(); } ast_expr_list::ast_expr_list(std::nullptr_t) : ptr(nullptr) {} ast_expr_list::ast_expr_list(__isl_take isl_ast_expr_list *ptr) : ptr(ptr) {} ast_expr_list &ast_expr_list::operator=(ast_expr_list obj) { std::swap(this->ptr, obj.ptr); return *this; } ast_expr_list::~ast_expr_list() { if (ptr) isl_ast_expr_list_free(ptr); } __isl_give isl_ast_expr_list *ast_expr_list::copy() const & { return isl_ast_expr_list_copy(ptr); } __isl_keep isl_ast_expr_list *ast_expr_list::get() const { return ptr; } __isl_give isl_ast_expr_list *ast_expr_list::release() { isl_ast_expr_list *tmp = ptr; ptr = nullptr; return tmp; } bool ast_expr_list::is_null() const { return ptr == nullptr; } ast_expr_list::operator bool() const { return !is_null(); } ctx ast_expr_list::get_ctx() const { return ctx(isl_ast_expr_list_get_ctx(ptr)); } void ast_expr_list::dump() const { isl_ast_expr_list_dump(get()); } ast_expr_list ast_expr_list::add(ast_expr el) const { auto res = isl_ast_expr_list_add(copy(), el.release()); return manage(res); } ast_expr_list ast_expr_list::alloc(ctx ctx, int n) { auto res = isl_ast_expr_list_alloc(ctx.release(), n); return manage(res); } ast_expr_list ast_expr_list::concat(ast_expr_list list2) const { auto res = isl_ast_expr_list_concat(copy(), list2.release()); return manage(res); } ast_expr_list ast_expr_list::drop(unsigned int first, unsigned int n) const { auto res = isl_ast_expr_list_drop(copy(), first, n); return manage(res); } stat ast_expr_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_ast_expr *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_ast_expr_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } ast_expr_list ast_expr_list::from_ast_expr(ast_expr el) { auto res = isl_ast_expr_list_from_ast_expr(el.release()); return manage(res); } ast_expr ast_expr_list::get_ast_expr(int index) const { auto res = isl_ast_expr_list_get_ast_expr(get(), index); return manage(res); } ast_expr ast_expr_list::get_at(int index) const { auto res = isl_ast_expr_list_get_at(get(), index); return manage(res); } ast_expr_list ast_expr_list::insert(unsigned int pos, ast_expr el) const { auto res = isl_ast_expr_list_insert(copy(), pos, el.release()); return manage(res); } int ast_expr_list::n_ast_expr() const { auto res = isl_ast_expr_list_n_ast_expr(get()); return res; } ast_expr_list ast_expr_list::reverse() const { auto res = isl_ast_expr_list_reverse(copy()); return manage(res); } ast_expr_list ast_expr_list::set_ast_expr(int index, ast_expr el) const { auto res = isl_ast_expr_list_set_ast_expr(copy(), index, el.release()); return manage(res); } int ast_expr_list::size() const { auto res = isl_ast_expr_list_size(get()); return res; } ast_expr_list ast_expr_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_ast_expr_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::ast_node ast_node manage(__isl_take isl_ast_node *ptr) { return ast_node(ptr); } ast_node manage_copy(__isl_keep isl_ast_node *ptr) { ptr = isl_ast_node_copy(ptr); return ast_node(ptr); } ast_node::ast_node() : ptr(nullptr) {} ast_node::ast_node(const ast_node &obj) : ptr(nullptr) { ptr = obj.copy(); } ast_node::ast_node(std::nullptr_t) : ptr(nullptr) {} ast_node::ast_node(__isl_take isl_ast_node *ptr) : ptr(ptr) {} ast_node &ast_node::operator=(ast_node obj) { std::swap(this->ptr, obj.ptr); return *this; } ast_node::~ast_node() { if (ptr) isl_ast_node_free(ptr); } __isl_give isl_ast_node *ast_node::copy() const & { return isl_ast_node_copy(ptr); } __isl_keep isl_ast_node *ast_node::get() const { return ptr; } __isl_give isl_ast_node *ast_node::release() { isl_ast_node *tmp = ptr; ptr = nullptr; return tmp; } bool ast_node::is_null() const { return ptr == nullptr; } ast_node::operator bool() const { return !is_null(); } ctx ast_node::get_ctx() const { return ctx(isl_ast_node_get_ctx(ptr)); } std::string ast_node::to_str() const { char *Tmp = isl_ast_node_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void ast_node::dump() const { isl_ast_node_dump(get()); } ast_node ast_node::alloc_user(ast_expr expr) { auto res = isl_ast_node_alloc_user(expr.release()); return manage(res); } ast_node_list ast_node::block_get_children() const { auto res = isl_ast_node_block_get_children(get()); return manage(res); } ast_node ast_node::for_get_body() const { auto res = isl_ast_node_for_get_body(get()); return manage(res); } ast_expr ast_node::for_get_cond() const { auto res = isl_ast_node_for_get_cond(get()); return manage(res); } ast_expr ast_node::for_get_inc() const { auto res = isl_ast_node_for_get_inc(get()); return manage(res); } ast_expr ast_node::for_get_init() const { auto res = isl_ast_node_for_get_init(get()); return manage(res); } ast_expr ast_node::for_get_iterator() const { auto res = isl_ast_node_for_get_iterator(get()); return manage(res); } boolean ast_node::for_is_degenerate() const { auto res = isl_ast_node_for_is_degenerate(get()); return manage(res); } id ast_node::get_annotation() const { auto res = isl_ast_node_get_annotation(get()); return manage(res); } ast_expr ast_node::if_get_cond() const { auto res = isl_ast_node_if_get_cond(get()); return manage(res); } ast_node ast_node::if_get_else() const { auto res = isl_ast_node_if_get_else(get()); return manage(res); } ast_node ast_node::if_get_then() const { auto res = isl_ast_node_if_get_then(get()); return manage(res); } boolean ast_node::if_has_else() const { auto res = isl_ast_node_if_has_else(get()); return manage(res); } id ast_node::mark_get_id() const { auto res = isl_ast_node_mark_get_id(get()); return manage(res); } ast_node ast_node::mark_get_node() const { auto res = isl_ast_node_mark_get_node(get()); return manage(res); } ast_node ast_node::set_annotation(id annotation) const { auto res = isl_ast_node_set_annotation(copy(), annotation.release()); return manage(res); } std::string ast_node::to_C_str() const { auto res = isl_ast_node_to_C_str(get()); std::string tmp(res); free(res); return tmp; } ast_expr ast_node::user_get_expr() const { auto res = isl_ast_node_user_get_expr(get()); return manage(res); } // implementations for isl::ast_node_list ast_node_list manage(__isl_take isl_ast_node_list *ptr) { return ast_node_list(ptr); } ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) { ptr = isl_ast_node_list_copy(ptr); return ast_node_list(ptr); } ast_node_list::ast_node_list() : ptr(nullptr) {} ast_node_list::ast_node_list(const ast_node_list &obj) : ptr(nullptr) { ptr = obj.copy(); } ast_node_list::ast_node_list(std::nullptr_t) : ptr(nullptr) {} ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr) : ptr(ptr) {} ast_node_list &ast_node_list::operator=(ast_node_list obj) { std::swap(this->ptr, obj.ptr); return *this; } ast_node_list::~ast_node_list() { if (ptr) isl_ast_node_list_free(ptr); } __isl_give isl_ast_node_list *ast_node_list::copy() const & { return isl_ast_node_list_copy(ptr); } __isl_keep isl_ast_node_list *ast_node_list::get() const { return ptr; } __isl_give isl_ast_node_list *ast_node_list::release() { isl_ast_node_list *tmp = ptr; ptr = nullptr; return tmp; } bool ast_node_list::is_null() const { return ptr == nullptr; } ast_node_list::operator bool() const { return !is_null(); } ctx ast_node_list::get_ctx() const { return ctx(isl_ast_node_list_get_ctx(ptr)); } void ast_node_list::dump() const { isl_ast_node_list_dump(get()); } ast_node_list ast_node_list::add(ast_node el) const { auto res = isl_ast_node_list_add(copy(), el.release()); return manage(res); } ast_node_list ast_node_list::alloc(ctx ctx, int n) { auto res = isl_ast_node_list_alloc(ctx.release(), n); return manage(res); } ast_node_list ast_node_list::concat(ast_node_list list2) const { auto res = isl_ast_node_list_concat(copy(), list2.release()); return manage(res); } ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const { auto res = isl_ast_node_list_drop(copy(), first, n); return manage(res); } stat ast_node_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } ast_node_list ast_node_list::from_ast_node(ast_node el) { auto res = isl_ast_node_list_from_ast_node(el.release()); return manage(res); } ast_node ast_node_list::get_ast_node(int index) const { auto res = isl_ast_node_list_get_ast_node(get(), index); return manage(res); } ast_node ast_node_list::get_at(int index) const { auto res = isl_ast_node_list_get_at(get(), index); return manage(res); } ast_node_list ast_node_list::insert(unsigned int pos, ast_node el) const { auto res = isl_ast_node_list_insert(copy(), pos, el.release()); return manage(res); } int ast_node_list::n_ast_node() const { auto res = isl_ast_node_list_n_ast_node(get()); return res; } ast_node_list ast_node_list::reverse() const { auto res = isl_ast_node_list_reverse(copy()); return manage(res); } ast_node_list ast_node_list::set_ast_node(int index, ast_node el) const { auto res = isl_ast_node_list_set_ast_node(copy(), index, el.release()); return manage(res); } int ast_node_list::size() const { auto res = isl_ast_node_list_size(get()); return res; } ast_node_list ast_node_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_ast_node_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::basic_map basic_map manage(__isl_take isl_basic_map *ptr) { return basic_map(ptr); } basic_map manage_copy(__isl_keep isl_basic_map *ptr) { ptr = isl_basic_map_copy(ptr); return basic_map(ptr); } basic_map::basic_map() : ptr(nullptr) {} basic_map::basic_map(const basic_map &obj) : ptr(nullptr) { ptr = obj.copy(); } basic_map::basic_map(std::nullptr_t) : ptr(nullptr) {} basic_map::basic_map(__isl_take isl_basic_map *ptr) : ptr(ptr) {} basic_map::basic_map(ctx ctx, const std::string &str) { auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str()); ptr = res; } basic_map &basic_map::operator=(basic_map obj) { std::swap(this->ptr, obj.ptr); return *this; } basic_map::~basic_map() { if (ptr) isl_basic_map_free(ptr); } __isl_give isl_basic_map *basic_map::copy() const & { return isl_basic_map_copy(ptr); } __isl_keep isl_basic_map *basic_map::get() const { return ptr; } __isl_give isl_basic_map *basic_map::release() { isl_basic_map *tmp = ptr; ptr = nullptr; return tmp; } bool basic_map::is_null() const { return ptr == nullptr; } basic_map::operator bool() const { return !is_null(); } ctx basic_map::get_ctx() const { return ctx(isl_basic_map_get_ctx(ptr)); } std::string basic_map::to_str() const { char *Tmp = isl_basic_map_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void basic_map::dump() const { isl_basic_map_dump(get()); } basic_map basic_map::add_constraint(constraint constraint) const { auto res = isl_basic_map_add_constraint(copy(), constraint.release()); return manage(res); } basic_map basic_map::add_dims(isl::dim type, unsigned int n) const { auto res = isl_basic_map_add_dims(copy(), static_cast(type), n); return manage(res); } basic_map basic_map::affine_hull() const { auto res = isl_basic_map_affine_hull(copy()); return manage(res); } basic_map basic_map::align_params(space model) const { auto res = isl_basic_map_align_params(copy(), model.release()); return manage(res); } basic_map basic_map::apply_domain(basic_map bmap2) const { auto res = isl_basic_map_apply_domain(copy(), bmap2.release()); return manage(res); } basic_map basic_map::apply_range(basic_map bmap2) const { auto res = isl_basic_map_apply_range(copy(), bmap2.release()); return manage(res); } boolean basic_map::can_curry() const { auto res = isl_basic_map_can_curry(get()); return manage(res); } boolean basic_map::can_uncurry() const { auto res = isl_basic_map_can_uncurry(get()); return manage(res); } boolean basic_map::can_zip() const { auto res = isl_basic_map_can_zip(get()); return manage(res); } basic_map basic_map::curry() const { auto res = isl_basic_map_curry(copy()); return manage(res); } basic_set basic_map::deltas() const { auto res = isl_basic_map_deltas(copy()); return manage(res); } basic_map basic_map::deltas_map() const { auto res = isl_basic_map_deltas_map(copy()); return manage(res); } basic_map basic_map::detect_equalities() const { auto res = isl_basic_map_detect_equalities(copy()); return manage(res); } unsigned int basic_map::dim(isl::dim type) const { auto res = isl_basic_map_dim(get(), static_cast(type)); return res; } basic_set basic_map::domain() const { auto res = isl_basic_map_domain(copy()); return manage(res); } basic_map basic_map::domain_map() const { auto res = isl_basic_map_domain_map(copy()); return manage(res); } basic_map basic_map::domain_product(basic_map bmap2) const { auto res = isl_basic_map_domain_product(copy(), bmap2.release()); return manage(res); } basic_map basic_map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_drop_constraints_involving_dims(copy(), static_cast(type), first, n); return manage(res); } basic_map basic_map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_drop_constraints_not_involving_dims(copy(), static_cast(type), first, n); return manage(res); } basic_map basic_map::drop_unused_params() const { auto res = isl_basic_map_drop_unused_params(copy()); return manage(res); } basic_map basic_map::eliminate(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_eliminate(copy(), static_cast(type), first, n); return manage(res); } basic_map basic_map::empty(space space) { auto res = isl_basic_map_empty(space.release()); return manage(res); } basic_map basic_map::equal(space dim, unsigned int n_equal) { auto res = isl_basic_map_equal(dim.release(), n_equal); return manage(res); } mat basic_map::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const { auto res = isl_basic_map_equalities_matrix(get(), static_cast(c1), static_cast(c2), static_cast(c3), static_cast(c4), static_cast(c5)); return manage(res); } basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_basic_map_equate(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } int basic_map::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_basic_map_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_basic_map_fix_si(copy(), static_cast(type), pos, value); return manage(res); } basic_map basic_map::fix_val(isl::dim type, unsigned int pos, val v) const { auto res = isl_basic_map_fix_val(copy(), static_cast(type), pos, v.release()); return manage(res); } basic_map basic_map::flat_product(basic_map bmap2) const { auto res = isl_basic_map_flat_product(copy(), bmap2.release()); return manage(res); } basic_map basic_map::flat_range_product(basic_map bmap2) const { auto res = isl_basic_map_flat_range_product(copy(), bmap2.release()); return manage(res); } basic_map basic_map::flatten() const { auto res = isl_basic_map_flatten(copy()); return manage(res); } basic_map basic_map::flatten_domain() const { auto res = isl_basic_map_flatten_domain(copy()); return manage(res); } basic_map basic_map::flatten_range() const { auto res = isl_basic_map_flatten_range(copy()); return manage(res); } stat basic_map::foreach_constraint(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_basic_map_foreach_constraint(get(), fn_lambda, &fn_data); return manage(res); } basic_map basic_map::from_aff(aff aff) { auto res = isl_basic_map_from_aff(aff.release()); return manage(res); } basic_map basic_map::from_aff_list(space domain_space, aff_list list) { auto res = isl_basic_map_from_aff_list(domain_space.release(), list.release()); return manage(res); } basic_map basic_map::from_constraint(constraint constraint) { auto res = isl_basic_map_from_constraint(constraint.release()); return manage(res); } basic_map basic_map::from_domain(basic_set bset) { auto res = isl_basic_map_from_domain(bset.release()); return manage(res); } basic_map basic_map::from_domain_and_range(basic_set domain, basic_set range) { auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release()); return manage(res); } basic_map basic_map::from_multi_aff(multi_aff maff) { auto res = isl_basic_map_from_multi_aff(maff.release()); return manage(res); } basic_map basic_map::from_qpolynomial(qpolynomial qp) { auto res = isl_basic_map_from_qpolynomial(qp.release()); return manage(res); } basic_map basic_map::from_range(basic_set bset) { auto res = isl_basic_map_from_range(bset.release()); return manage(res); } constraint_list basic_map::get_constraint_list() const { auto res = isl_basic_map_get_constraint_list(get()); return manage(res); } std::string basic_map::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_basic_map_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } aff basic_map::get_div(int pos) const { auto res = isl_basic_map_get_div(get(), pos); return manage(res); } local_space basic_map::get_local_space() const { auto res = isl_basic_map_get_local_space(get()); return manage(res); } space basic_map::get_space() const { auto res = isl_basic_map_get_space(get()); return manage(res); } std::string basic_map::get_tuple_name(isl::dim type) const { auto res = isl_basic_map_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } basic_map basic_map::gist(basic_map context) const { auto res = isl_basic_map_gist(copy(), context.release()); return manage(res); } basic_map basic_map::gist_domain(basic_set context) const { auto res = isl_basic_map_gist_domain(copy(), context.release()); return manage(res); } boolean basic_map::has_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_basic_map_has_dim_id(get(), static_cast(type), pos); return manage(res); } basic_map basic_map::identity(space dim) { auto res = isl_basic_map_identity(dim.release()); return manage(res); } boolean basic_map::image_is_bounded() const { auto res = isl_basic_map_image_is_bounded(get()); return manage(res); } mat basic_map::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const { auto res = isl_basic_map_inequalities_matrix(get(), static_cast(c1), static_cast(c2), static_cast(c3), static_cast(c4), static_cast(c5)); return manage(res); } basic_map basic_map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const { auto res = isl_basic_map_insert_dims(copy(), static_cast(type), pos, n); return manage(res); } basic_map basic_map::intersect(basic_map bmap2) const { auto res = isl_basic_map_intersect(copy(), bmap2.release()); return manage(res); } basic_map basic_map::intersect_domain(basic_set bset) const { auto res = isl_basic_map_intersect_domain(copy(), bset.release()); return manage(res); } basic_map basic_map::intersect_range(basic_set bset) const { auto res = isl_basic_map_intersect_range(copy(), bset.release()); return manage(res); } boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean basic_map::is_disjoint(const basic_map &bmap2) const { auto res = isl_basic_map_is_disjoint(get(), bmap2.get()); return manage(res); } boolean basic_map::is_empty() const { auto res = isl_basic_map_is_empty(get()); return manage(res); } boolean basic_map::is_equal(const basic_map &bmap2) const { auto res = isl_basic_map_is_equal(get(), bmap2.get()); return manage(res); } boolean basic_map::is_rational() const { auto res = isl_basic_map_is_rational(get()); return manage(res); } boolean basic_map::is_single_valued() const { auto res = isl_basic_map_is_single_valued(get()); return manage(res); } boolean basic_map::is_strict_subset(const basic_map &bmap2) const { auto res = isl_basic_map_is_strict_subset(get(), bmap2.get()); return manage(res); } boolean basic_map::is_subset(const basic_map &bmap2) const { auto res = isl_basic_map_is_subset(get(), bmap2.get()); return manage(res); } boolean basic_map::is_universe() const { auto res = isl_basic_map_is_universe(get()); return manage(res); } basic_map basic_map::less_at(space dim, unsigned int pos) { auto res = isl_basic_map_less_at(dim.release(), pos); return manage(res); } map basic_map::lexmax() const { auto res = isl_basic_map_lexmax(copy()); return manage(res); } map basic_map::lexmin() const { auto res = isl_basic_map_lexmin(copy()); return manage(res); } pw_multi_aff basic_map::lexmin_pw_multi_aff() const { auto res = isl_basic_map_lexmin_pw_multi_aff(copy()); return manage(res); } basic_map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_basic_map_lower_bound_si(copy(), static_cast(type), pos, value); return manage(res); } basic_map basic_map::more_at(space dim, unsigned int pos) { auto res = isl_basic_map_more_at(dim.release(), pos); return manage(res); } 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 { auto res = isl_basic_map_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } int basic_map::n_constraint() const { auto res = isl_basic_map_n_constraint(get()); return res; } basic_map basic_map::nat_universe(space dim) { auto res = isl_basic_map_nat_universe(dim.release()); return manage(res); } basic_map basic_map::neg() const { auto res = isl_basic_map_neg(copy()); return manage(res); } basic_map basic_map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_basic_map_order_ge(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } basic_map basic_map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_basic_map_order_gt(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } val basic_map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const { auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast(type), pos); return manage(res); } boolean basic_map::plain_is_empty() const { auto res = isl_basic_map_plain_is_empty(get()); return manage(res); } boolean basic_map::plain_is_universe() const { auto res = isl_basic_map_plain_is_universe(get()); return manage(res); } basic_map basic_map::preimage_domain_multi_aff(multi_aff ma) const { auto res = isl_basic_map_preimage_domain_multi_aff(copy(), ma.release()); return manage(res); } basic_map basic_map::preimage_range_multi_aff(multi_aff ma) const { auto res = isl_basic_map_preimage_range_multi_aff(copy(), ma.release()); return manage(res); } basic_map basic_map::product(basic_map bmap2) const { auto res = isl_basic_map_product(copy(), bmap2.release()); return manage(res); } basic_map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_project_out(copy(), static_cast(type), first, n); return manage(res); } basic_set basic_map::range() const { auto res = isl_basic_map_range(copy()); return manage(res); } basic_map basic_map::range_map() const { auto res = isl_basic_map_range_map(copy()); return manage(res); } basic_map basic_map::range_product(basic_map bmap2) const { auto res = isl_basic_map_range_product(copy(), bmap2.release()); return manage(res); } basic_map basic_map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_remove_dims(copy(), static_cast(type), first, n); return manage(res); } basic_map basic_map::remove_divs() const { auto res = isl_basic_map_remove_divs(copy()); return manage(res); } basic_map basic_map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_map_remove_divs_involving_dims(copy(), static_cast(type), first, n); return manage(res); } basic_map basic_map::remove_redundancies() const { auto res = isl_basic_map_remove_redundancies(copy()); return manage(res); } basic_map basic_map::reverse() const { auto res = isl_basic_map_reverse(copy()); return manage(res); } basic_map basic_map::sample() const { auto res = isl_basic_map_sample(copy()); return manage(res); } basic_map basic_map::set_tuple_id(isl::dim type, id id) const { auto res = isl_basic_map_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } basic_map basic_map::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_basic_map_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } basic_map basic_map::sum(basic_map bmap2) const { auto res = isl_basic_map_sum(copy(), bmap2.release()); return manage(res); } basic_map basic_map::uncurry() const { auto res = isl_basic_map_uncurry(copy()); return manage(res); } map basic_map::unite(basic_map bmap2) const { auto res = isl_basic_map_union(copy(), bmap2.release()); return manage(res); } basic_map basic_map::universe(space space) { auto res = isl_basic_map_universe(space.release()); return manage(res); } basic_map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_basic_map_upper_bound_si(copy(), static_cast(type), pos, value); return manage(res); } basic_set basic_map::wrap() const { auto res = isl_basic_map_wrap(copy()); return manage(res); } basic_map basic_map::zip() const { auto res = isl_basic_map_zip(copy()); return manage(res); } // implementations for isl::basic_map_list basic_map_list manage(__isl_take isl_basic_map_list *ptr) { return basic_map_list(ptr); } basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) { ptr = isl_basic_map_list_copy(ptr); return basic_map_list(ptr); } basic_map_list::basic_map_list() : ptr(nullptr) {} basic_map_list::basic_map_list(const basic_map_list &obj) : ptr(nullptr) { ptr = obj.copy(); } basic_map_list::basic_map_list(std::nullptr_t) : ptr(nullptr) {} basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr) : ptr(ptr) {} basic_map_list &basic_map_list::operator=(basic_map_list obj) { std::swap(this->ptr, obj.ptr); return *this; } basic_map_list::~basic_map_list() { if (ptr) isl_basic_map_list_free(ptr); } __isl_give isl_basic_map_list *basic_map_list::copy() const & { return isl_basic_map_list_copy(ptr); } __isl_keep isl_basic_map_list *basic_map_list::get() const { return ptr; } __isl_give isl_basic_map_list *basic_map_list::release() { isl_basic_map_list *tmp = ptr; ptr = nullptr; return tmp; } bool basic_map_list::is_null() const { return ptr == nullptr; } basic_map_list::operator bool() const { return !is_null(); } ctx basic_map_list::get_ctx() const { return ctx(isl_basic_map_list_get_ctx(ptr)); } void basic_map_list::dump() const { isl_basic_map_list_dump(get()); } basic_map_list basic_map_list::add(basic_map el) const { auto res = isl_basic_map_list_add(copy(), el.release()); return manage(res); } basic_map_list basic_map_list::alloc(ctx ctx, int n) { auto res = isl_basic_map_list_alloc(ctx.release(), n); return manage(res); } basic_map_list basic_map_list::concat(basic_map_list list2) const { auto res = isl_basic_map_list_concat(copy(), list2.release()); return manage(res); } basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const { auto res = isl_basic_map_list_drop(copy(), first, n); return manage(res); } stat basic_map_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_basic_map_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } basic_map_list basic_map_list::from_basic_map(basic_map el) { auto res = isl_basic_map_list_from_basic_map(el.release()); return manage(res); } basic_map basic_map_list::get_at(int index) const { auto res = isl_basic_map_list_get_at(get(), index); return manage(res); } basic_map basic_map_list::get_basic_map(int index) const { auto res = isl_basic_map_list_get_basic_map(get(), index); return manage(res); } basic_map_list basic_map_list::insert(unsigned int pos, basic_map el) const { auto res = isl_basic_map_list_insert(copy(), pos, el.release()); return manage(res); } int basic_map_list::n_basic_map() const { auto res = isl_basic_map_list_n_basic_map(get()); return res; } basic_map_list basic_map_list::reverse() const { auto res = isl_basic_map_list_reverse(copy()); return manage(res); } basic_map_list basic_map_list::set_basic_map(int index, basic_map el) const { auto res = isl_basic_map_list_set_basic_map(copy(), index, el.release()); return manage(res); } int basic_map_list::size() const { auto res = isl_basic_map_list_size(get()); return res; } basic_map_list basic_map_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_basic_map_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::basic_set basic_set manage(__isl_take isl_basic_set *ptr) { return basic_set(ptr); } basic_set manage_copy(__isl_keep isl_basic_set *ptr) { ptr = isl_basic_set_copy(ptr); return basic_set(ptr); } basic_set::basic_set() : ptr(nullptr) {} basic_set::basic_set(const basic_set &obj) : ptr(nullptr) { ptr = obj.copy(); } basic_set::basic_set(std::nullptr_t) : ptr(nullptr) {} basic_set::basic_set(__isl_take isl_basic_set *ptr) : ptr(ptr) {} basic_set::basic_set(ctx ctx, const std::string &str) { auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str()); ptr = res; } basic_set::basic_set(point pnt) { auto res = isl_basic_set_from_point(pnt.release()); ptr = res; } basic_set &basic_set::operator=(basic_set obj) { std::swap(this->ptr, obj.ptr); return *this; } basic_set::~basic_set() { if (ptr) isl_basic_set_free(ptr); } __isl_give isl_basic_set *basic_set::copy() const & { return isl_basic_set_copy(ptr); } __isl_keep isl_basic_set *basic_set::get() const { return ptr; } __isl_give isl_basic_set *basic_set::release() { isl_basic_set *tmp = ptr; ptr = nullptr; return tmp; } bool basic_set::is_null() const { return ptr == nullptr; } basic_set::operator bool() const { return !is_null(); } ctx basic_set::get_ctx() const { return ctx(isl_basic_set_get_ctx(ptr)); } std::string basic_set::to_str() const { char *Tmp = isl_basic_set_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void basic_set::dump() const { isl_basic_set_dump(get()); } basic_set basic_set::affine_hull() const { auto res = isl_basic_set_affine_hull(copy()); return manage(res); } basic_set basic_set::align_params(space model) const { auto res = isl_basic_set_align_params(copy(), model.release()); return manage(res); } basic_set basic_set::apply(basic_map bmap) const { auto res = isl_basic_set_apply(copy(), bmap.release()); return manage(res); } basic_set basic_set::box_from_points(point pnt1, point pnt2) { auto res = isl_basic_set_box_from_points(pnt1.release(), pnt2.release()); return manage(res); } basic_set basic_set::coefficients() const { auto res = isl_basic_set_coefficients(copy()); return manage(res); } basic_set basic_set::detect_equalities() const { auto res = isl_basic_set_detect_equalities(copy()); return manage(res); } unsigned int basic_set::dim(isl::dim type) const { auto res = isl_basic_set_dim(get(), static_cast(type)); return res; } val basic_set::dim_max_val(int pos) const { auto res = isl_basic_set_dim_max_val(copy(), pos); return manage(res); } basic_set basic_set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_drop_constraints_involving_dims(copy(), static_cast(type), first, n); return manage(res); } basic_set basic_set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_drop_constraints_not_involving_dims(copy(), static_cast(type), first, n); return manage(res); } basic_set basic_set::drop_unused_params() const { auto res = isl_basic_set_drop_unused_params(copy()); return manage(res); } basic_set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_eliminate(copy(), static_cast(type), first, n); return manage(res); } basic_set basic_set::empty(space space) { auto res = isl_basic_set_empty(space.release()); return manage(res); } mat basic_set::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const { auto res = isl_basic_set_equalities_matrix(get(), static_cast(c1), static_cast(c2), static_cast(c3), static_cast(c4)); return manage(res); } basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_basic_set_fix_si(copy(), static_cast(type), pos, value); return manage(res); } basic_set basic_set::fix_val(isl::dim type, unsigned int pos, val v) const { auto res = isl_basic_set_fix_val(copy(), static_cast(type), pos, v.release()); return manage(res); } basic_set basic_set::flat_product(basic_set bset2) const { auto res = isl_basic_set_flat_product(copy(), bset2.release()); return manage(res); } basic_set basic_set::flatten() const { auto res = isl_basic_set_flatten(copy()); return manage(res); } stat basic_set::foreach_bound_pair(isl::dim type, unsigned int pos, const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_constraint *arg_0, isl_constraint *arg_1, isl_basic_set *arg_2, void *arg_3) -> isl_stat { auto *data = static_cast(arg_3); stat ret = (*data->func)(manage(arg_0), manage(arg_1), manage(arg_2)); return ret.release(); }; auto res = isl_basic_set_foreach_bound_pair(get(), static_cast(type), pos, fn_lambda, &fn_data); return manage(res); } stat basic_set::foreach_constraint(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_basic_set_foreach_constraint(get(), fn_lambda, &fn_data); return manage(res); } basic_set basic_set::from_constraint(constraint constraint) { auto res = isl_basic_set_from_constraint(constraint.release()); return manage(res); } basic_set basic_set::from_multi_aff(multi_aff ma) { auto res = isl_basic_set_from_multi_aff(ma.release()); return manage(res); } basic_set basic_set::from_params() const { auto res = isl_basic_set_from_params(copy()); return manage(res); } constraint_list basic_set::get_constraint_list() const { auto res = isl_basic_set_get_constraint_list(get()); return manage(res); } id basic_set::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_basic_set_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string basic_set::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_basic_set_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } aff basic_set::get_div(int pos) const { auto res = isl_basic_set_get_div(get(), pos); return manage(res); } local_space basic_set::get_local_space() const { auto res = isl_basic_set_get_local_space(get()); return manage(res); } space basic_set::get_space() const { auto res = isl_basic_set_get_space(get()); return manage(res); } std::string basic_set::get_tuple_name() const { auto res = isl_basic_set_get_tuple_name(get()); std::string tmp(res); return tmp; } basic_set basic_set::gist(basic_set context) const { auto res = isl_basic_set_gist(copy(), context.release()); return manage(res); } mat basic_set::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const { auto res = isl_basic_set_inequalities_matrix(get(), static_cast(c1), static_cast(c2), static_cast(c3), static_cast(c4)); return manage(res); } basic_set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const { auto res = isl_basic_set_insert_dims(copy(), static_cast(type), pos, n); return manage(res); } basic_set basic_set::intersect(basic_set bset2) const { auto res = isl_basic_set_intersect(copy(), bset2.release()); return manage(res); } basic_set basic_set::intersect_params(basic_set bset2) const { auto res = isl_basic_set_intersect_params(copy(), bset2.release()); return manage(res); } boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean basic_set::is_bounded() const { auto res = isl_basic_set_is_bounded(get()); return manage(res); } boolean basic_set::is_disjoint(const basic_set &bset2) const { auto res = isl_basic_set_is_disjoint(get(), bset2.get()); return manage(res); } boolean basic_set::is_empty() const { auto res = isl_basic_set_is_empty(get()); return manage(res); } boolean basic_set::is_equal(const basic_set &bset2) const { auto res = isl_basic_set_is_equal(get(), bset2.get()); return manage(res); } int basic_set::is_rational() const { auto res = isl_basic_set_is_rational(get()); return res; } boolean basic_set::is_subset(const basic_set &bset2) const { auto res = isl_basic_set_is_subset(get(), bset2.get()); return manage(res); } boolean basic_set::is_universe() const { auto res = isl_basic_set_is_universe(get()); return manage(res); } boolean basic_set::is_wrapping() const { auto res = isl_basic_set_is_wrapping(get()); return manage(res); } set basic_set::lexmax() const { auto res = isl_basic_set_lexmax(copy()); return manage(res); } set basic_set::lexmin() const { auto res = isl_basic_set_lexmin(copy()); return manage(res); } basic_set basic_set::lower_bound_val(isl::dim type, unsigned int pos, val value) const { auto res = isl_basic_set_lower_bound_val(copy(), static_cast(type), pos, value.release()); return manage(res); } val basic_set::max_val(const aff &obj) const { auto res = isl_basic_set_max_val(get(), obj.get()); return manage(res); } 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 { auto res = isl_basic_set_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } int basic_set::n_constraint() const { auto res = isl_basic_set_n_constraint(get()); return res; } unsigned int basic_set::n_dim() const { auto res = isl_basic_set_n_dim(get()); return res; } basic_set basic_set::nat_universe(space dim) { auto res = isl_basic_set_nat_universe(dim.release()); return manage(res); } basic_set basic_set::neg() const { auto res = isl_basic_set_neg(copy()); return manage(res); } basic_set basic_set::params() const { auto res = isl_basic_set_params(copy()); return manage(res); } boolean basic_set::plain_is_empty() const { auto res = isl_basic_set_plain_is_empty(get()); return manage(res); } boolean basic_set::plain_is_equal(const basic_set &bset2) const { auto res = isl_basic_set_plain_is_equal(get(), bset2.get()); return manage(res); } boolean basic_set::plain_is_universe() const { auto res = isl_basic_set_plain_is_universe(get()); return manage(res); } basic_set basic_set::positive_orthant(space space) { auto res = isl_basic_set_positive_orthant(space.release()); return manage(res); } basic_set basic_set::preimage_multi_aff(multi_aff ma) const { auto res = isl_basic_set_preimage_multi_aff(copy(), ma.release()); return manage(res); } basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_project_out(copy(), static_cast(type), first, n); return manage(res); } mat basic_set::reduced_basis() const { auto res = isl_basic_set_reduced_basis(get()); return manage(res); } basic_set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_remove_dims(copy(), static_cast(type), first, n); return manage(res); } basic_set basic_set::remove_divs() const { auto res = isl_basic_set_remove_divs(copy()); return manage(res); } basic_set basic_set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_basic_set_remove_divs_involving_dims(copy(), static_cast(type), first, n); return manage(res); } basic_set basic_set::remove_redundancies() const { auto res = isl_basic_set_remove_redundancies(copy()); return manage(res); } basic_set basic_set::remove_unknown_divs() const { auto res = isl_basic_set_remove_unknown_divs(copy()); return manage(res); } basic_set basic_set::sample() const { auto res = isl_basic_set_sample(copy()); return manage(res); } point basic_set::sample_point() const { auto res = isl_basic_set_sample_point(copy()); return manage(res); } basic_set basic_set::set_tuple_id(id id) const { auto res = isl_basic_set_set_tuple_id(copy(), id.release()); return manage(res); } basic_set basic_set::set_tuple_name(const std::string &s) const { auto res = isl_basic_set_set_tuple_name(copy(), s.c_str()); return manage(res); } basic_set basic_set::solutions() const { auto res = isl_basic_set_solutions(copy()); return manage(res); } set basic_set::unite(basic_set bset2) const { auto res = isl_basic_set_union(copy(), bset2.release()); return manage(res); } basic_set basic_set::universe(space space) { auto res = isl_basic_set_universe(space.release()); return manage(res); } basic_map basic_set::unwrap() const { auto res = isl_basic_set_unwrap(copy()); return manage(res); } basic_set basic_set::upper_bound_val(isl::dim type, unsigned int pos, val value) const { auto res = isl_basic_set_upper_bound_val(copy(), static_cast(type), pos, value.release()); return manage(res); } // implementations for isl::basic_set_list basic_set_list manage(__isl_take isl_basic_set_list *ptr) { return basic_set_list(ptr); } basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) { ptr = isl_basic_set_list_copy(ptr); return basic_set_list(ptr); } basic_set_list::basic_set_list() : ptr(nullptr) {} basic_set_list::basic_set_list(const basic_set_list &obj) : ptr(nullptr) { ptr = obj.copy(); } basic_set_list::basic_set_list(std::nullptr_t) : ptr(nullptr) {} basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr) : ptr(ptr) {} basic_set_list &basic_set_list::operator=(basic_set_list obj) { std::swap(this->ptr, obj.ptr); return *this; } basic_set_list::~basic_set_list() { if (ptr) isl_basic_set_list_free(ptr); } __isl_give isl_basic_set_list *basic_set_list::copy() const & { return isl_basic_set_list_copy(ptr); } __isl_keep isl_basic_set_list *basic_set_list::get() const { return ptr; } __isl_give isl_basic_set_list *basic_set_list::release() { isl_basic_set_list *tmp = ptr; ptr = nullptr; return tmp; } bool basic_set_list::is_null() const { return ptr == nullptr; } basic_set_list::operator bool() const { return !is_null(); } ctx basic_set_list::get_ctx() const { return ctx(isl_basic_set_list_get_ctx(ptr)); } void basic_set_list::dump() const { isl_basic_set_list_dump(get()); } basic_set_list basic_set_list::add(basic_set el) const { auto res = isl_basic_set_list_add(copy(), el.release()); return manage(res); } basic_set_list basic_set_list::alloc(ctx ctx, int n) { auto res = isl_basic_set_list_alloc(ctx.release(), n); return manage(res); } basic_set_list basic_set_list::coefficients() const { auto res = isl_basic_set_list_coefficients(copy()); return manage(res); } basic_set_list basic_set_list::concat(basic_set_list list2) const { auto res = isl_basic_set_list_concat(copy(), list2.release()); return manage(res); } basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const { auto res = isl_basic_set_list_drop(copy(), first, n); return manage(res); } stat basic_set_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_basic_set_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } basic_set_list basic_set_list::from_basic_set(basic_set el) { auto res = isl_basic_set_list_from_basic_set(el.release()); return manage(res); } basic_set basic_set_list::get_at(int index) const { auto res = isl_basic_set_list_get_at(get(), index); return manage(res); } basic_set basic_set_list::get_basic_set(int index) const { auto res = isl_basic_set_list_get_basic_set(get(), index); return manage(res); } basic_set_list basic_set_list::insert(unsigned int pos, basic_set el) const { auto res = isl_basic_set_list_insert(copy(), pos, el.release()); return manage(res); } int basic_set_list::n_basic_set() const { auto res = isl_basic_set_list_n_basic_set(get()); return res; } basic_set_list basic_set_list::reverse() const { auto res = isl_basic_set_list_reverse(copy()); return manage(res); } basic_set_list basic_set_list::set_basic_set(int index, basic_set el) const { auto res = isl_basic_set_list_set_basic_set(copy(), index, el.release()); return manage(res); } int basic_set_list::size() const { auto res = isl_basic_set_list_size(get()); return res; } basic_set_list basic_set_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_basic_set_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::constraint constraint manage(__isl_take isl_constraint *ptr) { return constraint(ptr); } constraint manage_copy(__isl_keep isl_constraint *ptr) { ptr = isl_constraint_copy(ptr); return constraint(ptr); } constraint::constraint() : ptr(nullptr) {} constraint::constraint(const constraint &obj) : ptr(nullptr) { ptr = obj.copy(); } constraint::constraint(std::nullptr_t) : ptr(nullptr) {} constraint::constraint(__isl_take isl_constraint *ptr) : ptr(ptr) {} constraint &constraint::operator=(constraint obj) { std::swap(this->ptr, obj.ptr); return *this; } constraint::~constraint() { if (ptr) isl_constraint_free(ptr); } __isl_give isl_constraint *constraint::copy() const & { return isl_constraint_copy(ptr); } __isl_keep isl_constraint *constraint::get() const { return ptr; } __isl_give isl_constraint *constraint::release() { isl_constraint *tmp = ptr; ptr = nullptr; return tmp; } bool constraint::is_null() const { return ptr == nullptr; } constraint::operator bool() const { return !is_null(); } ctx constraint::get_ctx() const { return ctx(isl_constraint_get_ctx(ptr)); } void constraint::dump() const { isl_constraint_dump(get()); } constraint constraint::alloc_equality(local_space ls) { auto res = isl_constraint_alloc_equality(ls.release()); return manage(res); } constraint constraint::alloc_inequality(local_space ls) { auto res = isl_constraint_alloc_inequality(ls.release()); return manage(res); } int constraint::cmp_last_non_zero(const constraint &c2) const { auto res = isl_constraint_cmp_last_non_zero(get(), c2.get()); return res; } aff constraint::get_aff() const { auto res = isl_constraint_get_aff(get()); return manage(res); } aff constraint::get_bound(isl::dim type, int pos) const { auto res = isl_constraint_get_bound(get(), static_cast(type), pos); return manage(res); } val constraint::get_coefficient_val(isl::dim type, int pos) const { auto res = isl_constraint_get_coefficient_val(get(), static_cast(type), pos); return manage(res); } val constraint::get_constant_val() const { auto res = isl_constraint_get_constant_val(get()); return manage(res); } std::string constraint::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_constraint_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } aff constraint::get_div(int pos) const { auto res = isl_constraint_get_div(get(), pos); return manage(res); } local_space constraint::get_local_space() const { auto res = isl_constraint_get_local_space(get()); return manage(res); } space constraint::get_space() const { auto res = isl_constraint_get_space(get()); return manage(res); } boolean constraint::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_constraint_involves_dims(get(), static_cast(type), first, n); return manage(res); } int constraint::is_div_constraint() const { auto res = isl_constraint_is_div_constraint(get()); return res; } boolean constraint::is_lower_bound(isl::dim type, unsigned int pos) const { auto res = isl_constraint_is_lower_bound(get(), static_cast(type), pos); return manage(res); } boolean constraint::is_upper_bound(isl::dim type, unsigned int pos) const { auto res = isl_constraint_is_upper_bound(get(), static_cast(type), pos); return manage(res); } int constraint::plain_cmp(const constraint &c2) const { auto res = isl_constraint_plain_cmp(get(), c2.get()); return res; } constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const { auto res = isl_constraint_set_coefficient_si(copy(), static_cast(type), pos, v); return manage(res); } constraint constraint::set_coefficient_val(isl::dim type, int pos, val v) const { auto res = isl_constraint_set_coefficient_val(copy(), static_cast(type), pos, v.release()); return manage(res); } constraint constraint::set_constant_si(int v) const { auto res = isl_constraint_set_constant_si(copy(), v); return manage(res); } constraint constraint::set_constant_val(val v) const { auto res = isl_constraint_set_constant_val(copy(), v.release()); return manage(res); } // implementations for isl::constraint_list constraint_list manage(__isl_take isl_constraint_list *ptr) { return constraint_list(ptr); } constraint_list manage_copy(__isl_keep isl_constraint_list *ptr) { ptr = isl_constraint_list_copy(ptr); return constraint_list(ptr); } constraint_list::constraint_list() : ptr(nullptr) {} constraint_list::constraint_list(const constraint_list &obj) : ptr(nullptr) { ptr = obj.copy(); } constraint_list::constraint_list(std::nullptr_t) : ptr(nullptr) {} constraint_list::constraint_list(__isl_take isl_constraint_list *ptr) : ptr(ptr) {} constraint_list &constraint_list::operator=(constraint_list obj) { std::swap(this->ptr, obj.ptr); return *this; } constraint_list::~constraint_list() { if (ptr) isl_constraint_list_free(ptr); } __isl_give isl_constraint_list *constraint_list::copy() const & { return isl_constraint_list_copy(ptr); } __isl_keep isl_constraint_list *constraint_list::get() const { return ptr; } __isl_give isl_constraint_list *constraint_list::release() { isl_constraint_list *tmp = ptr; ptr = nullptr; return tmp; } bool constraint_list::is_null() const { return ptr == nullptr; } constraint_list::operator bool() const { return !is_null(); } ctx constraint_list::get_ctx() const { return ctx(isl_constraint_list_get_ctx(ptr)); } void constraint_list::dump() const { isl_constraint_list_dump(get()); } constraint_list constraint_list::add(constraint el) const { auto res = isl_constraint_list_add(copy(), el.release()); return manage(res); } constraint_list constraint_list::alloc(ctx ctx, int n) { auto res = isl_constraint_list_alloc(ctx.release(), n); return manage(res); } constraint_list constraint_list::concat(constraint_list list2) const { auto res = isl_constraint_list_concat(copy(), list2.release()); return manage(res); } constraint_list constraint_list::drop(unsigned int first, unsigned int n) const { auto res = isl_constraint_list_drop(copy(), first, n); return manage(res); } stat constraint_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_constraint_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } constraint_list constraint_list::from_constraint(constraint el) { auto res = isl_constraint_list_from_constraint(el.release()); return manage(res); } constraint constraint_list::get_at(int index) const { auto res = isl_constraint_list_get_at(get(), index); return manage(res); } constraint constraint_list::get_constraint(int index) const { auto res = isl_constraint_list_get_constraint(get(), index); return manage(res); } constraint_list constraint_list::insert(unsigned int pos, constraint el) const { auto res = isl_constraint_list_insert(copy(), pos, el.release()); return manage(res); } int constraint_list::n_constraint() const { auto res = isl_constraint_list_n_constraint(get()); return res; } constraint_list constraint_list::reverse() const { auto res = isl_constraint_list_reverse(copy()); return manage(res); } constraint_list constraint_list::set_constraint(int index, constraint el) const { auto res = isl_constraint_list_set_constraint(copy(), index, el.release()); return manage(res); } int constraint_list::size() const { auto res = isl_constraint_list_size(get()); return res; } constraint_list constraint_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_constraint_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::fixed_box fixed_box manage(__isl_take isl_fixed_box *ptr) { return fixed_box(ptr); } fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) { ptr = isl_fixed_box_copy(ptr); return fixed_box(ptr); } fixed_box::fixed_box() : ptr(nullptr) {} fixed_box::fixed_box(const fixed_box &obj) : ptr(nullptr) { ptr = obj.copy(); } fixed_box::fixed_box(std::nullptr_t) : ptr(nullptr) {} fixed_box::fixed_box(__isl_take isl_fixed_box *ptr) : ptr(ptr) {} fixed_box &fixed_box::operator=(fixed_box obj) { std::swap(this->ptr, obj.ptr); return *this; } fixed_box::~fixed_box() { if (ptr) isl_fixed_box_free(ptr); } __isl_give isl_fixed_box *fixed_box::copy() const & { return isl_fixed_box_copy(ptr); } __isl_keep isl_fixed_box *fixed_box::get() const { return ptr; } __isl_give isl_fixed_box *fixed_box::release() { isl_fixed_box *tmp = ptr; ptr = nullptr; return tmp; } bool fixed_box::is_null() const { return ptr == nullptr; } fixed_box::operator bool() const { return !is_null(); } ctx fixed_box::get_ctx() const { return ctx(isl_fixed_box_get_ctx(ptr)); } multi_aff fixed_box::get_offset() const { auto res = isl_fixed_box_get_offset(get()); return manage(res); } multi_val fixed_box::get_size() const { auto res = isl_fixed_box_get_size(get()); return manage(res); } space fixed_box::get_space() const { auto res = isl_fixed_box_get_space(get()); return manage(res); } boolean fixed_box::is_valid() const { auto res = isl_fixed_box_is_valid(get()); return manage(res); } // implementations for isl::id id manage(__isl_take isl_id *ptr) { return id(ptr); } id manage_copy(__isl_keep isl_id *ptr) { ptr = isl_id_copy(ptr); return id(ptr); } id::id() : ptr(nullptr) {} id::id(const id &obj) : ptr(nullptr) { ptr = obj.copy(); } id::id(std::nullptr_t) : ptr(nullptr) {} id::id(__isl_take isl_id *ptr) : ptr(ptr) {} id &id::operator=(id obj) { std::swap(this->ptr, obj.ptr); return *this; } id::~id() { if (ptr) isl_id_free(ptr); } __isl_give isl_id *id::copy() const & { return isl_id_copy(ptr); } __isl_keep isl_id *id::get() const { return ptr; } __isl_give isl_id *id::release() { isl_id *tmp = ptr; ptr = nullptr; return tmp; } bool id::is_null() const { return ptr == nullptr; } id::operator bool() const { return !is_null(); } ctx id::get_ctx() const { return ctx(isl_id_get_ctx(ptr)); } std::string id::to_str() const { char *Tmp = isl_id_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void id::dump() const { isl_id_dump(get()); } id id::alloc(ctx ctx, const std::string &name, void * user) { auto res = isl_id_alloc(ctx.release(), name.c_str(), user); return manage(res); } uint32_t id::get_hash() const { auto res = isl_id_get_hash(get()); return res; } std::string id::get_name() const { auto res = isl_id_get_name(get()); std::string tmp(res); return tmp; } void * id::get_user() const { auto res = isl_id_get_user(get()); return res; } // implementations for isl::id_list id_list manage(__isl_take isl_id_list *ptr) { return id_list(ptr); } id_list manage_copy(__isl_keep isl_id_list *ptr) { ptr = isl_id_list_copy(ptr); return id_list(ptr); } id_list::id_list() : ptr(nullptr) {} id_list::id_list(const id_list &obj) : ptr(nullptr) { ptr = obj.copy(); } id_list::id_list(std::nullptr_t) : ptr(nullptr) {} id_list::id_list(__isl_take isl_id_list *ptr) : ptr(ptr) {} id_list &id_list::operator=(id_list obj) { std::swap(this->ptr, obj.ptr); return *this; } id_list::~id_list() { if (ptr) isl_id_list_free(ptr); } __isl_give isl_id_list *id_list::copy() const & { return isl_id_list_copy(ptr); } __isl_keep isl_id_list *id_list::get() const { return ptr; } __isl_give isl_id_list *id_list::release() { isl_id_list *tmp = ptr; ptr = nullptr; return tmp; } bool id_list::is_null() const { return ptr == nullptr; } id_list::operator bool() const { return !is_null(); } ctx id_list::get_ctx() const { return ctx(isl_id_list_get_ctx(ptr)); } void id_list::dump() const { isl_id_list_dump(get()); } id_list id_list::add(id el) const { auto res = isl_id_list_add(copy(), el.release()); return manage(res); } id_list id_list::alloc(ctx ctx, int n) { auto res = isl_id_list_alloc(ctx.release(), n); return manage(res); } id_list id_list::concat(id_list list2) const { auto res = isl_id_list_concat(copy(), list2.release()); return manage(res); } id_list id_list::drop(unsigned int first, unsigned int n) const { auto res = isl_id_list_drop(copy(), first, n); return manage(res); } stat id_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } id_list id_list::from_id(id el) { auto res = isl_id_list_from_id(el.release()); return manage(res); } id id_list::get_at(int index) const { auto res = isl_id_list_get_at(get(), index); return manage(res); } id id_list::get_id(int index) const { auto res = isl_id_list_get_id(get(), index); return manage(res); } id_list id_list::insert(unsigned int pos, id el) const { auto res = isl_id_list_insert(copy(), pos, el.release()); return manage(res); } int id_list::n_id() const { auto res = isl_id_list_n_id(get()); return res; } id_list id_list::reverse() const { auto res = isl_id_list_reverse(copy()); return manage(res); } id_list id_list::set_id(int index, id el) const { auto res = isl_id_list_set_id(copy(), index, el.release()); return manage(res); } int id_list::size() const { auto res = isl_id_list_size(get()); return res; } id_list id_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_id_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::id_to_ast_expr id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) { return id_to_ast_expr(ptr); } id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) { ptr = isl_id_to_ast_expr_copy(ptr); return id_to_ast_expr(ptr); } id_to_ast_expr::id_to_ast_expr() : ptr(nullptr) {} id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj) : ptr(nullptr) { ptr = obj.copy(); } id_to_ast_expr::id_to_ast_expr(std::nullptr_t) : ptr(nullptr) {} id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr) : ptr(ptr) {} id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) { std::swap(this->ptr, obj.ptr); return *this; } id_to_ast_expr::~id_to_ast_expr() { if (ptr) isl_id_to_ast_expr_free(ptr); } __isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & { return isl_id_to_ast_expr_copy(ptr); } __isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const { return ptr; } __isl_give isl_id_to_ast_expr *id_to_ast_expr::release() { isl_id_to_ast_expr *tmp = ptr; ptr = nullptr; return tmp; } bool id_to_ast_expr::is_null() const { return ptr == nullptr; } id_to_ast_expr::operator bool() const { return !is_null(); } ctx id_to_ast_expr::get_ctx() const { return ctx(isl_id_to_ast_expr_get_ctx(ptr)); } void id_to_ast_expr::dump() const { isl_id_to_ast_expr_dump(get()); } id_to_ast_expr id_to_ast_expr::alloc(ctx ctx, int min_size) { auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size); return manage(res); } id_to_ast_expr id_to_ast_expr::drop(id key) const { auto res = isl_id_to_ast_expr_drop(copy(), key.release()); return manage(res); } stat id_to_ast_expr::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_id *arg_0, isl_ast_expr *arg_1, void *arg_2) -> isl_stat { auto *data = static_cast(arg_2); stat ret = (*data->func)(manage(arg_0), manage(arg_1)); return ret.release(); }; auto res = isl_id_to_ast_expr_foreach(get(), fn_lambda, &fn_data); return manage(res); } ast_expr id_to_ast_expr::get(id key) const { auto res = isl_id_to_ast_expr_get(get(), key.release()); return manage(res); } boolean id_to_ast_expr::has(const id &key) const { auto res = isl_id_to_ast_expr_has(get(), key.get()); return manage(res); } id_to_ast_expr id_to_ast_expr::set(id key, ast_expr val) const { auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release()); return manage(res); } // implementations for isl::local_space local_space manage(__isl_take isl_local_space *ptr) { return local_space(ptr); } local_space manage_copy(__isl_keep isl_local_space *ptr) { ptr = isl_local_space_copy(ptr); return local_space(ptr); } local_space::local_space() : ptr(nullptr) {} local_space::local_space(const local_space &obj) : ptr(nullptr) { ptr = obj.copy(); } local_space::local_space(std::nullptr_t) : ptr(nullptr) {} local_space::local_space(__isl_take isl_local_space *ptr) : ptr(ptr) {} local_space::local_space(space dim) { auto res = isl_local_space_from_space(dim.release()); ptr = res; } local_space &local_space::operator=(local_space obj) { std::swap(this->ptr, obj.ptr); return *this; } local_space::~local_space() { if (ptr) isl_local_space_free(ptr); } __isl_give isl_local_space *local_space::copy() const & { return isl_local_space_copy(ptr); } __isl_keep isl_local_space *local_space::get() const { return ptr; } __isl_give isl_local_space *local_space::release() { isl_local_space *tmp = ptr; ptr = nullptr; return tmp; } bool local_space::is_null() const { return ptr == nullptr; } local_space::operator bool() const { return !is_null(); } ctx local_space::get_ctx() const { return ctx(isl_local_space_get_ctx(ptr)); } void local_space::dump() const { isl_local_space_dump(get()); } local_space local_space::add_dims(isl::dim type, unsigned int n) const { auto res = isl_local_space_add_dims(copy(), static_cast(type), n); return manage(res); } int local_space::dim(isl::dim type) const { auto res = isl_local_space_dim(get(), static_cast(type)); return res; } local_space local_space::domain() const { auto res = isl_local_space_domain(copy()); return manage(res); } local_space local_space::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_local_space_drop_dims(copy(), static_cast(type), first, n); return manage(res); } int local_space::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_local_space_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } local_space local_space::flatten_domain() const { auto res = isl_local_space_flatten_domain(copy()); return manage(res); } local_space local_space::flatten_range() const { auto res = isl_local_space_flatten_range(copy()); return manage(res); } local_space local_space::from_domain() const { auto res = isl_local_space_from_domain(copy()); return manage(res); } id local_space::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_local_space_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string local_space::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_local_space_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } aff local_space::get_div(int pos) const { auto res = isl_local_space_get_div(get(), pos); return manage(res); } space local_space::get_space() const { auto res = isl_local_space_get_space(get()); return manage(res); } boolean local_space::has_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_local_space_has_dim_id(get(), static_cast(type), pos); return manage(res); } boolean local_space::has_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_local_space_has_dim_name(get(), static_cast(type), pos); return manage(res); } local_space local_space::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_local_space_insert_dims(copy(), static_cast(type), first, n); return manage(res); } local_space local_space::intersect(local_space ls2) const { auto res = isl_local_space_intersect(copy(), ls2.release()); return manage(res); } boolean local_space::is_equal(const local_space &ls2) const { auto res = isl_local_space_is_equal(get(), ls2.get()); return manage(res); } boolean local_space::is_params() const { auto res = isl_local_space_is_params(get()); return manage(res); } boolean local_space::is_set() const { auto res = isl_local_space_is_set(get()); return manage(res); } local_space local_space::range() const { auto res = isl_local_space_range(copy()); return manage(res); } local_space local_space::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_local_space_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } local_space local_space::set_from_params() const { auto res = isl_local_space_set_from_params(copy()); return manage(res); } local_space local_space::set_tuple_id(isl::dim type, id id) const { auto res = isl_local_space_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } local_space local_space::wrap() const { auto res = isl_local_space_wrap(copy()); return manage(res); } // implementations for isl::map map manage(__isl_take isl_map *ptr) { return map(ptr); } map manage_copy(__isl_keep isl_map *ptr) { ptr = isl_map_copy(ptr); return map(ptr); } map::map() : ptr(nullptr) {} map::map(const map &obj) : ptr(nullptr) { ptr = obj.copy(); } map::map(std::nullptr_t) : ptr(nullptr) {} map::map(__isl_take isl_map *ptr) : ptr(ptr) {} map::map(ctx ctx, const std::string &str) { auto res = isl_map_read_from_str(ctx.release(), str.c_str()); ptr = res; } map::map(basic_map bmap) { auto res = isl_map_from_basic_map(bmap.release()); ptr = res; } map &map::operator=(map obj) { std::swap(this->ptr, obj.ptr); return *this; } map::~map() { if (ptr) isl_map_free(ptr); } __isl_give isl_map *map::copy() const & { return isl_map_copy(ptr); } __isl_keep isl_map *map::get() const { return ptr; } __isl_give isl_map *map::release() { isl_map *tmp = ptr; ptr = nullptr; return tmp; } bool map::is_null() const { return ptr == nullptr; } map::operator bool() const { return !is_null(); } ctx map::get_ctx() const { return ctx(isl_map_get_ctx(ptr)); } std::string map::to_str() const { char *Tmp = isl_map_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void map::dump() const { isl_map_dump(get()); } map map::add_constraint(constraint constraint) const { auto res = isl_map_add_constraint(copy(), constraint.release()); return manage(res); } map map::add_dims(isl::dim type, unsigned int n) const { auto res = isl_map_add_dims(copy(), static_cast(type), n); return manage(res); } basic_map map::affine_hull() const { auto res = isl_map_affine_hull(copy()); return manage(res); } map map::align_params(space model) const { auto res = isl_map_align_params(copy(), model.release()); return manage(res); } map map::apply_domain(map map2) const { auto res = isl_map_apply_domain(copy(), map2.release()); return manage(res); } map map::apply_range(map map2) const { auto res = isl_map_apply_range(copy(), map2.release()); return manage(res); } boolean map::can_curry() const { auto res = isl_map_can_curry(get()); return manage(res); } boolean map::can_range_curry() const { auto res = isl_map_can_range_curry(get()); return manage(res); } boolean map::can_uncurry() const { auto res = isl_map_can_uncurry(get()); return manage(res); } boolean map::can_zip() const { auto res = isl_map_can_zip(get()); return manage(res); } map map::coalesce() const { auto res = isl_map_coalesce(copy()); return manage(res); } map map::complement() const { auto res = isl_map_complement(copy()); return manage(res); } basic_map map::convex_hull() const { auto res = isl_map_convex_hull(copy()); return manage(res); } map map::curry() const { auto res = isl_map_curry(copy()); return manage(res); } set map::deltas() const { auto res = isl_map_deltas(copy()); return manage(res); } map map::deltas_map() const { auto res = isl_map_deltas_map(copy()); return manage(res); } map map::detect_equalities() const { auto res = isl_map_detect_equalities(copy()); return manage(res); } unsigned int map::dim(isl::dim type) const { auto res = isl_map_dim(get(), static_cast(type)); return res; } pw_aff map::dim_max(int pos) const { auto res = isl_map_dim_max(copy(), pos); return manage(res); } pw_aff map::dim_min(int pos) const { auto res = isl_map_dim_min(copy(), pos); return manage(res); } set map::domain() const { auto res = isl_map_domain(copy()); return manage(res); } map map::domain_factor_domain() const { auto res = isl_map_domain_factor_domain(copy()); return manage(res); } map map::domain_factor_range() const { auto res = isl_map_domain_factor_range(copy()); return manage(res); } boolean map::domain_is_wrapping() const { auto res = isl_map_domain_is_wrapping(get()); return manage(res); } map map::domain_map() const { auto res = isl_map_domain_map(copy()); return manage(res); } map map::domain_product(map map2) const { auto res = isl_map_domain_product(copy(), map2.release()); return manage(res); } map map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_drop_constraints_involving_dims(copy(), static_cast(type), first, n); return manage(res); } map map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_drop_constraints_not_involving_dims(copy(), static_cast(type), first, n); return manage(res); } map map::drop_unused_params() const { auto res = isl_map_drop_unused_params(copy()); return manage(res); } map map::eliminate(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_eliminate(copy(), static_cast(type), first, n); return manage(res); } map map::empty(space space) { auto res = isl_map_empty(space.release()); return manage(res); } map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_map_equate(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } map map::factor_domain() const { auto res = isl_map_factor_domain(copy()); return manage(res); } map map::factor_range() const { auto res = isl_map_factor_range(copy()); return manage(res); } int map::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_map_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int map::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_map_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } map map::fix_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_map_fix_si(copy(), static_cast(type), pos, value); return manage(res); } map map::fix_val(isl::dim type, unsigned int pos, val v) const { auto res = isl_map_fix_val(copy(), static_cast(type), pos, v.release()); return manage(res); } map map::fixed_power_val(val exp) const { auto res = isl_map_fixed_power_val(copy(), exp.release()); return manage(res); } map map::flat_domain_product(map map2) const { auto res = isl_map_flat_domain_product(copy(), map2.release()); return manage(res); } map map::flat_product(map map2) const { auto res = isl_map_flat_product(copy(), map2.release()); return manage(res); } map map::flat_range_product(map map2) const { auto res = isl_map_flat_range_product(copy(), map2.release()); return manage(res); } map map::flatten() const { auto res = isl_map_flatten(copy()); return manage(res); } map map::flatten_domain() const { auto res = isl_map_flatten_domain(copy()); return manage(res); } map map::flatten_range() const { auto res = isl_map_flatten_range(copy()); return manage(res); } map map::floordiv_val(val d) const { auto res = isl_map_floordiv_val(copy(), d.release()); return manage(res); } stat map::foreach_basic_map(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data); return manage(res); } map map::from_aff(aff aff) { auto res = isl_map_from_aff(aff.release()); return manage(res); } map map::from_domain(set set) { auto res = isl_map_from_domain(set.release()); return manage(res); } map map::from_domain_and_range(set domain, set range) { auto res = isl_map_from_domain_and_range(domain.release(), range.release()); return manage(res); } map map::from_multi_aff(multi_aff maff) { auto res = isl_map_from_multi_aff(maff.release()); return manage(res); } map map::from_multi_pw_aff(multi_pw_aff mpa) { auto res = isl_map_from_multi_pw_aff(mpa.release()); return manage(res); } map map::from_pw_aff(pw_aff pwaff) { auto res = isl_map_from_pw_aff(pwaff.release()); return manage(res); } map map::from_pw_multi_aff(pw_multi_aff pma) { auto res = isl_map_from_pw_multi_aff(pma.release()); return manage(res); } map map::from_range(set set) { auto res = isl_map_from_range(set.release()); return manage(res); } map map::from_union_map(union_map umap) { auto res = isl_map_from_union_map(umap.release()); return manage(res); } basic_map_list map::get_basic_map_list() const { auto res = isl_map_get_basic_map_list(get()); return manage(res); } id map::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_map_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string map::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_map_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } uint32_t map::get_hash() const { auto res = isl_map_get_hash(get()); return res; } fixed_box map::get_range_simple_fixed_box_hull() const { auto res = isl_map_get_range_simple_fixed_box_hull(get()); return manage(res); } space map::get_space() const { auto res = isl_map_get_space(get()); return manage(res); } id map::get_tuple_id(isl::dim type) const { auto res = isl_map_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string map::get_tuple_name(isl::dim type) const { auto res = isl_map_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } map map::gist(map context) const { auto res = isl_map_gist(copy(), context.release()); return manage(res); } map map::gist_basic_map(basic_map context) const { auto res = isl_map_gist_basic_map(copy(), context.release()); return manage(res); } map map::gist_domain(set context) const { auto res = isl_map_gist_domain(copy(), context.release()); return manage(res); } map map::gist_params(set context) const { auto res = isl_map_gist_params(copy(), context.release()); return manage(res); } map map::gist_range(set context) const { auto res = isl_map_gist_range(copy(), context.release()); return manage(res); } boolean map::has_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_map_has_dim_id(get(), static_cast(type), pos); return manage(res); } boolean map::has_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_map_has_dim_name(get(), static_cast(type), pos); return manage(res); } boolean map::has_equal_space(const map &map2) const { auto res = isl_map_has_equal_space(get(), map2.get()); return manage(res); } boolean map::has_tuple_id(isl::dim type) const { auto res = isl_map_has_tuple_id(get(), static_cast(type)); return manage(res); } boolean map::has_tuple_name(isl::dim type) const { auto res = isl_map_has_tuple_name(get(), static_cast(type)); return manage(res); } map map::identity(space dim) { auto res = isl_map_identity(dim.release()); return manage(res); } map map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const { auto res = isl_map_insert_dims(copy(), static_cast(type), pos, n); return manage(res); } map map::intersect(map map2) const { auto res = isl_map_intersect(copy(), map2.release()); return manage(res); } map map::intersect_domain(set set) const { auto res = isl_map_intersect_domain(copy(), set.release()); return manage(res); } map map::intersect_domain_factor_range(map factor) const { auto res = isl_map_intersect_domain_factor_range(copy(), factor.release()); return manage(res); } map map::intersect_params(set params) const { auto res = isl_map_intersect_params(copy(), params.release()); return manage(res); } map map::intersect_range(set set) const { auto res = isl_map_intersect_range(copy(), set.release()); return manage(res); } map map::intersect_range_factor_range(map factor) const { auto res = isl_map_intersect_range_factor_range(copy(), factor.release()); return manage(res); } boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean map::is_bijective() const { auto res = isl_map_is_bijective(get()); return manage(res); } boolean map::is_disjoint(const map &map2) const { auto res = isl_map_is_disjoint(get(), map2.get()); return manage(res); } boolean map::is_empty() const { auto res = isl_map_is_empty(get()); return manage(res); } boolean map::is_equal(const map &map2) const { auto res = isl_map_is_equal(get(), map2.get()); return manage(res); } boolean map::is_identity() const { auto res = isl_map_is_identity(get()); return manage(res); } boolean map::is_injective() const { auto res = isl_map_is_injective(get()); return manage(res); } boolean map::is_product() const { auto res = isl_map_is_product(get()); return manage(res); } boolean map::is_single_valued() const { auto res = isl_map_is_single_valued(get()); return manage(res); } boolean map::is_strict_subset(const map &map2) const { auto res = isl_map_is_strict_subset(get(), map2.get()); return manage(res); } boolean map::is_subset(const map &map2) const { auto res = isl_map_is_subset(get(), map2.get()); return manage(res); } int map::is_translation() const { auto res = isl_map_is_translation(get()); return res; } map map::lex_ge(space set_dim) { auto res = isl_map_lex_ge(set_dim.release()); return manage(res); } map map::lex_ge_first(space dim, unsigned int n) { auto res = isl_map_lex_ge_first(dim.release(), n); return manage(res); } map map::lex_ge_map(map map2) const { auto res = isl_map_lex_ge_map(copy(), map2.release()); return manage(res); } map map::lex_gt(space set_dim) { auto res = isl_map_lex_gt(set_dim.release()); return manage(res); } map map::lex_gt_first(space dim, unsigned int n) { auto res = isl_map_lex_gt_first(dim.release(), n); return manage(res); } map map::lex_gt_map(map map2) const { auto res = isl_map_lex_gt_map(copy(), map2.release()); return manage(res); } map map::lex_le(space set_dim) { auto res = isl_map_lex_le(set_dim.release()); return manage(res); } map map::lex_le_first(space dim, unsigned int n) { auto res = isl_map_lex_le_first(dim.release(), n); return manage(res); } map map::lex_le_map(map map2) const { auto res = isl_map_lex_le_map(copy(), map2.release()); return manage(res); } map map::lex_lt(space set_dim) { auto res = isl_map_lex_lt(set_dim.release()); return manage(res); } map map::lex_lt_first(space dim, unsigned int n) { auto res = isl_map_lex_lt_first(dim.release(), n); return manage(res); } map map::lex_lt_map(map map2) const { auto res = isl_map_lex_lt_map(copy(), map2.release()); return manage(res); } map map::lexmax() const { auto res = isl_map_lexmax(copy()); return manage(res); } pw_multi_aff map::lexmax_pw_multi_aff() const { auto res = isl_map_lexmax_pw_multi_aff(copy()); return manage(res); } map map::lexmin() const { auto res = isl_map_lexmin(copy()); return manage(res); } pw_multi_aff map::lexmin_pw_multi_aff() const { auto res = isl_map_lexmin_pw_multi_aff(copy()); return manage(res); } map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_map_lower_bound_si(copy(), static_cast(type), pos, value); return manage(res); } map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_map_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } int map::n_basic_map() const { auto res = isl_map_n_basic_map(get()); return res; } map map::nat_universe(space dim) { auto res = isl_map_nat_universe(dim.release()); return manage(res); } map map::neg() const { auto res = isl_map_neg(copy()); return manage(res); } map map::oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_map_oppose(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } map map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_map_order_ge(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } map map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_map_order_gt(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } map map::order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_map_order_le(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_map_order_lt(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } set map::params() const { auto res = isl_map_params(copy()); return manage(res); } val map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const { auto res = isl_map_plain_get_val_if_fixed(get(), static_cast(type), pos); return manage(res); } boolean map::plain_is_empty() const { auto res = isl_map_plain_is_empty(get()); return manage(res); } boolean map::plain_is_equal(const map &map2) const { auto res = isl_map_plain_is_equal(get(), map2.get()); return manage(res); } boolean map::plain_is_injective() const { auto res = isl_map_plain_is_injective(get()); return manage(res); } boolean map::plain_is_single_valued() const { auto res = isl_map_plain_is_single_valued(get()); return manage(res); } boolean map::plain_is_universe() const { auto res = isl_map_plain_is_universe(get()); return manage(res); } basic_map map::plain_unshifted_simple_hull() const { auto res = isl_map_plain_unshifted_simple_hull(copy()); return manage(res); } basic_map map::polyhedral_hull() const { auto res = isl_map_polyhedral_hull(copy()); return manage(res); } map map::preimage_domain_multi_aff(multi_aff ma) const { auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release()); return manage(res); } map map::preimage_domain_multi_pw_aff(multi_pw_aff mpa) const { auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release()); return manage(res); } map map::preimage_domain_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release()); return manage(res); } map map::preimage_range_multi_aff(multi_aff ma) const { auto res = isl_map_preimage_range_multi_aff(copy(), ma.release()); return manage(res); } map map::preimage_range_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release()); return manage(res); } map map::product(map map2) const { auto res = isl_map_product(copy(), map2.release()); return manage(res); } map map::project_out(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_project_out(copy(), static_cast(type), first, n); return manage(res); } set map::range() const { auto res = isl_map_range(copy()); return manage(res); } map map::range_curry() const { auto res = isl_map_range_curry(copy()); return manage(res); } map map::range_factor_domain() const { auto res = isl_map_range_factor_domain(copy()); return manage(res); } map map::range_factor_range() const { auto res = isl_map_range_factor_range(copy()); return manage(res); } boolean map::range_is_wrapping() const { auto res = isl_map_range_is_wrapping(get()); return manage(res); } map map::range_map() const { auto res = isl_map_range_map(copy()); return manage(res); } map map::range_product(map map2) const { auto res = isl_map_range_product(copy(), map2.release()); return manage(res); } map map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_remove_dims(copy(), static_cast(type), first, n); return manage(res); } map map::remove_divs() const { auto res = isl_map_remove_divs(copy()); return manage(res); } map map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_map_remove_divs_involving_dims(copy(), static_cast(type), first, n); return manage(res); } map map::remove_redundancies() const { auto res = isl_map_remove_redundancies(copy()); return manage(res); } map map::remove_unknown_divs() const { auto res = isl_map_remove_unknown_divs(copy()); return manage(res); } map map::reset_tuple_id(isl::dim type) const { auto res = isl_map_reset_tuple_id(copy(), static_cast(type)); return manage(res); } map map::reset_user() const { auto res = isl_map_reset_user(copy()); return manage(res); } map map::reverse() const { auto res = isl_map_reverse(copy()); return manage(res); } basic_map map::sample() const { auto res = isl_map_sample(copy()); return manage(res); } map map::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_map_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } map map::set_tuple_id(isl::dim type, id id) const { auto res = isl_map_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } map map::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_map_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } basic_map map::simple_hull() const { auto res = isl_map_simple_hull(copy()); return manage(res); } map map::subtract(map map2) const { auto res = isl_map_subtract(copy(), map2.release()); return manage(res); } map map::subtract_domain(set dom) const { auto res = isl_map_subtract_domain(copy(), dom.release()); return manage(res); } map map::subtract_range(set dom) const { auto res = isl_map_subtract_range(copy(), dom.release()); return manage(res); } map map::sum(map map2) const { auto res = isl_map_sum(copy(), map2.release()); return manage(res); } map map::uncurry() const { auto res = isl_map_uncurry(copy()); return manage(res); } map map::unite(map map2) const { auto res = isl_map_union(copy(), map2.release()); return manage(res); } map map::universe(space space) { auto res = isl_map_universe(space.release()); return manage(res); } basic_map map::unshifted_simple_hull() const { auto res = isl_map_unshifted_simple_hull(copy()); return manage(res); } basic_map map::unshifted_simple_hull_from_map_list(map_list list) const { auto res = isl_map_unshifted_simple_hull_from_map_list(copy(), list.release()); return manage(res); } map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_map_upper_bound_si(copy(), static_cast(type), pos, value); return manage(res); } set map::wrap() const { auto res = isl_map_wrap(copy()); return manage(res); } map map::zip() const { auto res = isl_map_zip(copy()); return manage(res); } // implementations for isl::map_list map_list manage(__isl_take isl_map_list *ptr) { return map_list(ptr); } map_list manage_copy(__isl_keep isl_map_list *ptr) { ptr = isl_map_list_copy(ptr); return map_list(ptr); } map_list::map_list() : ptr(nullptr) {} map_list::map_list(const map_list &obj) : ptr(nullptr) { ptr = obj.copy(); } map_list::map_list(std::nullptr_t) : ptr(nullptr) {} map_list::map_list(__isl_take isl_map_list *ptr) : ptr(ptr) {} map_list &map_list::operator=(map_list obj) { std::swap(this->ptr, obj.ptr); return *this; } map_list::~map_list() { if (ptr) isl_map_list_free(ptr); } __isl_give isl_map_list *map_list::copy() const & { return isl_map_list_copy(ptr); } __isl_keep isl_map_list *map_list::get() const { return ptr; } __isl_give isl_map_list *map_list::release() { isl_map_list *tmp = ptr; ptr = nullptr; return tmp; } bool map_list::is_null() const { return ptr == nullptr; } map_list::operator bool() const { return !is_null(); } ctx map_list::get_ctx() const { return ctx(isl_map_list_get_ctx(ptr)); } void map_list::dump() const { isl_map_list_dump(get()); } map_list map_list::add(map el) const { auto res = isl_map_list_add(copy(), el.release()); return manage(res); } map_list map_list::alloc(ctx ctx, int n) { auto res = isl_map_list_alloc(ctx.release(), n); return manage(res); } map_list map_list::concat(map_list list2) const { auto res = isl_map_list_concat(copy(), list2.release()); return manage(res); } map_list map_list::drop(unsigned int first, unsigned int n) const { auto res = isl_map_list_drop(copy(), first, n); return manage(res); } stat map_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } map_list map_list::from_map(map el) { auto res = isl_map_list_from_map(el.release()); return manage(res); } map map_list::get_at(int index) const { auto res = isl_map_list_get_at(get(), index); return manage(res); } map map_list::get_map(int index) const { auto res = isl_map_list_get_map(get(), index); return manage(res); } map_list map_list::insert(unsigned int pos, map el) const { auto res = isl_map_list_insert(copy(), pos, el.release()); return manage(res); } int map_list::n_map() const { auto res = isl_map_list_n_map(get()); return res; } map_list map_list::reverse() const { auto res = isl_map_list_reverse(copy()); return manage(res); } map_list map_list::set_map(int index, map el) const { auto res = isl_map_list_set_map(copy(), index, el.release()); return manage(res); } int map_list::size() const { auto res = isl_map_list_size(get()); return res; } map_list map_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_map_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::mat mat manage(__isl_take isl_mat *ptr) { return mat(ptr); } mat manage_copy(__isl_keep isl_mat *ptr) { ptr = isl_mat_copy(ptr); return mat(ptr); } mat::mat() : ptr(nullptr) {} mat::mat(const mat &obj) : ptr(nullptr) { ptr = obj.copy(); } mat::mat(std::nullptr_t) : ptr(nullptr) {} mat::mat(__isl_take isl_mat *ptr) : ptr(ptr) {} mat &mat::operator=(mat obj) { std::swap(this->ptr, obj.ptr); return *this; } mat::~mat() { if (ptr) isl_mat_free(ptr); } __isl_give isl_mat *mat::copy() const & { return isl_mat_copy(ptr); } __isl_keep isl_mat *mat::get() const { return ptr; } __isl_give isl_mat *mat::release() { isl_mat *tmp = ptr; ptr = nullptr; return tmp; } bool mat::is_null() const { return ptr == nullptr; } mat::operator bool() const { return !is_null(); } ctx mat::get_ctx() const { return ctx(isl_mat_get_ctx(ptr)); } void mat::dump() const { isl_mat_dump(get()); } mat mat::add_rows(unsigned int n) const { auto res = isl_mat_add_rows(copy(), n); return manage(res); } mat mat::add_zero_cols(unsigned int n) const { auto res = isl_mat_add_zero_cols(copy(), n); return manage(res); } mat mat::add_zero_rows(unsigned int n) const { auto res = isl_mat_add_zero_rows(copy(), n); return manage(res); } mat mat::aff_direct_sum(mat right) const { auto res = isl_mat_aff_direct_sum(copy(), right.release()); return manage(res); } mat mat::alloc(ctx ctx, unsigned int n_row, unsigned int n_col) { auto res = isl_mat_alloc(ctx.release(), n_row, n_col); return manage(res); } int mat::cols() const { auto res = isl_mat_cols(get()); return res; } mat mat::concat(mat bot) const { auto res = isl_mat_concat(copy(), bot.release()); return manage(res); } mat mat::diagonal(mat mat2) const { auto res = isl_mat_diagonal(copy(), mat2.release()); return manage(res); } mat mat::drop_cols(unsigned int col, unsigned int n) const { auto res = isl_mat_drop_cols(copy(), col, n); return manage(res); } mat mat::drop_rows(unsigned int row, unsigned int n) const { auto res = isl_mat_drop_rows(copy(), row, n); return manage(res); } mat mat::from_row_vec(vec vec) { auto res = isl_mat_from_row_vec(vec.release()); return manage(res); } val mat::get_element_val(int row, int col) const { auto res = isl_mat_get_element_val(get(), row, col); return manage(res); } boolean mat::has_linearly_independent_rows(const mat &mat2) const { auto res = isl_mat_has_linearly_independent_rows(get(), mat2.get()); return manage(res); } int mat::initial_non_zero_cols() const { auto res = isl_mat_initial_non_zero_cols(get()); return res; } mat mat::insert_cols(unsigned int col, unsigned int n) const { auto res = isl_mat_insert_cols(copy(), col, n); return manage(res); } mat mat::insert_rows(unsigned int row, unsigned int n) const { auto res = isl_mat_insert_rows(copy(), row, n); return manage(res); } mat mat::insert_zero_cols(unsigned int first, unsigned int n) const { auto res = isl_mat_insert_zero_cols(copy(), first, n); return manage(res); } mat mat::insert_zero_rows(unsigned int row, unsigned int n) const { auto res = isl_mat_insert_zero_rows(copy(), row, n); return manage(res); } mat mat::inverse_product(mat right) const { auto res = isl_mat_inverse_product(copy(), right.release()); return manage(res); } boolean mat::is_equal(const mat &mat2) const { auto res = isl_mat_is_equal(get(), mat2.get()); return manage(res); } mat mat::lin_to_aff() const { auto res = isl_mat_lin_to_aff(copy()); return manage(res); } mat mat::move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const { auto res = isl_mat_move_cols(copy(), dst_col, src_col, n); return manage(res); } mat mat::normalize() const { auto res = isl_mat_normalize(copy()); return manage(res); } mat mat::normalize_row(int row) const { auto res = isl_mat_normalize_row(copy(), row); return manage(res); } mat mat::product(mat right) const { auto res = isl_mat_product(copy(), right.release()); return manage(res); } int mat::rank() const { auto res = isl_mat_rank(get()); return res; } mat mat::right_inverse() const { auto res = isl_mat_right_inverse(copy()); return manage(res); } mat mat::right_kernel() const { auto res = isl_mat_right_kernel(copy()); return manage(res); } mat mat::row_basis() const { auto res = isl_mat_row_basis(copy()); return manage(res); } mat mat::row_basis_extension(mat mat2) const { auto res = isl_mat_row_basis_extension(copy(), mat2.release()); return manage(res); } int mat::rows() const { auto res = isl_mat_rows(get()); return res; } mat mat::set_element_si(int row, int col, int v) const { auto res = isl_mat_set_element_si(copy(), row, col, v); return manage(res); } mat mat::set_element_val(int row, int col, val v) const { auto res = isl_mat_set_element_val(copy(), row, col, v.release()); return manage(res); } mat mat::swap_cols(unsigned int i, unsigned int j) const { auto res = isl_mat_swap_cols(copy(), i, j); return manage(res); } mat mat::swap_rows(unsigned int i, unsigned int j) const { auto res = isl_mat_swap_rows(copy(), i, j); return manage(res); } mat mat::transpose() const { auto res = isl_mat_transpose(copy()); return manage(res); } mat mat::unimodular_complete(int row) const { auto res = isl_mat_unimodular_complete(copy(), row); return manage(res); } mat mat::vec_concat(vec bot) const { auto res = isl_mat_vec_concat(copy(), bot.release()); return manage(res); } vec mat::vec_inverse_product(vec vec) const { auto res = isl_mat_vec_inverse_product(copy(), vec.release()); return manage(res); } vec mat::vec_product(vec vec) const { auto res = isl_mat_vec_product(copy(), vec.release()); return manage(res); } // implementations for isl::multi_aff multi_aff manage(__isl_take isl_multi_aff *ptr) { return multi_aff(ptr); } multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) { ptr = isl_multi_aff_copy(ptr); return multi_aff(ptr); } multi_aff::multi_aff() : ptr(nullptr) {} multi_aff::multi_aff(const multi_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } multi_aff::multi_aff(std::nullptr_t) : ptr(nullptr) {} multi_aff::multi_aff(__isl_take isl_multi_aff *ptr) : ptr(ptr) {} multi_aff::multi_aff(aff aff) { auto res = isl_multi_aff_from_aff(aff.release()); ptr = res; } multi_aff::multi_aff(ctx ctx, const std::string &str) { auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } multi_aff &multi_aff::operator=(multi_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } multi_aff::~multi_aff() { if (ptr) isl_multi_aff_free(ptr); } __isl_give isl_multi_aff *multi_aff::copy() const & { return isl_multi_aff_copy(ptr); } __isl_keep isl_multi_aff *multi_aff::get() const { return ptr; } __isl_give isl_multi_aff *multi_aff::release() { isl_multi_aff *tmp = ptr; ptr = nullptr; return tmp; } bool multi_aff::is_null() const { return ptr == nullptr; } multi_aff::operator bool() const { return !is_null(); } ctx multi_aff::get_ctx() const { return ctx(isl_multi_aff_get_ctx(ptr)); } std::string multi_aff::to_str() const { char *Tmp = isl_multi_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void multi_aff::dump() const { isl_multi_aff_dump(get()); } multi_aff multi_aff::add(multi_aff multi2) const { auto res = isl_multi_aff_add(copy(), multi2.release()); return manage(res); } multi_aff multi_aff::add_dims(isl::dim type, unsigned int n) const { auto res = isl_multi_aff_add_dims(copy(), static_cast(type), n); return manage(res); } multi_aff multi_aff::align_params(space model) const { auto res = isl_multi_aff_align_params(copy(), model.release()); return manage(res); } unsigned int multi_aff::dim(isl::dim type) const { auto res = isl_multi_aff_dim(get(), static_cast(type)); return res; } multi_aff multi_aff::domain_map(space space) { auto res = isl_multi_aff_domain_map(space.release()); return manage(res); } multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } multi_aff multi_aff::factor_range() const { auto res = isl_multi_aff_factor_range(copy()); return manage(res); } int multi_aff::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_multi_aff_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_multi_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } multi_aff multi_aff::flat_range_product(multi_aff multi2) const { auto res = isl_multi_aff_flat_range_product(copy(), multi2.release()); return manage(res); } multi_aff multi_aff::flatten_domain() const { auto res = isl_multi_aff_flatten_domain(copy()); return manage(res); } multi_aff multi_aff::flatten_range() const { auto res = isl_multi_aff_flatten_range(copy()); return manage(res); } multi_aff multi_aff::floor() const { auto res = isl_multi_aff_floor(copy()); return manage(res); } multi_aff multi_aff::from_aff_list(space space, aff_list list) { auto res = isl_multi_aff_from_aff_list(space.release(), list.release()); return manage(res); } multi_aff multi_aff::from_range() const { auto res = isl_multi_aff_from_range(copy()); return manage(res); } aff multi_aff::get_aff(int pos) const { auto res = isl_multi_aff_get_aff(get(), pos); return manage(res); } id multi_aff::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_multi_aff_get_dim_id(get(), static_cast(type), pos); return manage(res); } space multi_aff::get_domain_space() const { auto res = isl_multi_aff_get_domain_space(get()); return manage(res); } space multi_aff::get_space() const { auto res = isl_multi_aff_get_space(get()); return manage(res); } id multi_aff::get_tuple_id(isl::dim type) const { auto res = isl_multi_aff_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string multi_aff::get_tuple_name(isl::dim type) const { auto res = isl_multi_aff_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } multi_aff multi_aff::gist(set context) const { auto res = isl_multi_aff_gist(copy(), context.release()); return manage(res); } multi_aff multi_aff::gist_params(set context) const { auto res = isl_multi_aff_gist_params(copy(), context.release()); return manage(res); } boolean multi_aff::has_tuple_id(isl::dim type) const { auto res = isl_multi_aff_has_tuple_id(get(), static_cast(type)); return manage(res); } multi_aff multi_aff::identity(space space) { auto res = isl_multi_aff_identity(space.release()); return manage(res); } multi_aff multi_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_aff_insert_dims(copy(), static_cast(type), first, n); return manage(res); } boolean multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_aff_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean multi_aff::involves_nan() const { auto res = isl_multi_aff_involves_nan(get()); return manage(res); } set multi_aff::lex_ge_set(multi_aff ma2) const { auto res = isl_multi_aff_lex_ge_set(copy(), ma2.release()); return manage(res); } set multi_aff::lex_gt_set(multi_aff ma2) const { auto res = isl_multi_aff_lex_gt_set(copy(), ma2.release()); return manage(res); } set multi_aff::lex_le_set(multi_aff ma2) const { auto res = isl_multi_aff_lex_le_set(copy(), ma2.release()); return manage(res); } set multi_aff::lex_lt_set(multi_aff ma2) const { auto res = isl_multi_aff_lex_lt_set(copy(), ma2.release()); return manage(res); } multi_aff multi_aff::mod_multi_val(multi_val mv) const { auto res = isl_multi_aff_mod_multi_val(copy(), mv.release()); return manage(res); } multi_aff multi_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_multi_aff_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } multi_aff multi_aff::multi_val_on_space(space space, multi_val mv) { auto res = isl_multi_aff_multi_val_on_space(space.release(), mv.release()); return manage(res); } multi_aff multi_aff::neg() const { auto res = isl_multi_aff_neg(copy()); return manage(res); } int multi_aff::plain_cmp(const multi_aff &multi2) const { auto res = isl_multi_aff_plain_cmp(get(), multi2.get()); return res; } boolean multi_aff::plain_is_equal(const multi_aff &multi2) const { auto res = isl_multi_aff_plain_is_equal(get(), multi2.get()); return manage(res); } multi_aff multi_aff::product(multi_aff multi2) const { auto res = isl_multi_aff_product(copy(), multi2.release()); return manage(res); } multi_aff multi_aff::project_domain_on_params() const { auto res = isl_multi_aff_project_domain_on_params(copy()); return manage(res); } multi_aff multi_aff::project_out_map(space space, isl::dim type, unsigned int first, unsigned int n) { auto res = isl_multi_aff_project_out_map(space.release(), static_cast(type), first, n); return manage(res); } multi_aff multi_aff::pullback(multi_aff ma2) const { auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release()); return manage(res); } multi_aff multi_aff::range_factor_domain() const { auto res = isl_multi_aff_range_factor_domain(copy()); return manage(res); } multi_aff multi_aff::range_factor_range() const { auto res = isl_multi_aff_range_factor_range(copy()); return manage(res); } boolean multi_aff::range_is_wrapping() const { auto res = isl_multi_aff_range_is_wrapping(get()); return manage(res); } multi_aff multi_aff::range_map(space space) { auto res = isl_multi_aff_range_map(space.release()); return manage(res); } multi_aff multi_aff::range_product(multi_aff multi2) const { auto res = isl_multi_aff_range_product(copy(), multi2.release()); return manage(res); } multi_aff multi_aff::range_splice(unsigned int pos, multi_aff multi2) const { auto res = isl_multi_aff_range_splice(copy(), pos, multi2.release()); return manage(res); } multi_aff multi_aff::reset_tuple_id(isl::dim type) const { auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast(type)); return manage(res); } multi_aff multi_aff::reset_user() const { auto res = isl_multi_aff_reset_user(copy()); return manage(res); } multi_aff multi_aff::scale_down_multi_val(multi_val mv) const { auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release()); return manage(res); } multi_aff multi_aff::scale_down_val(val v) const { auto res = isl_multi_aff_scale_down_val(copy(), v.release()); return manage(res); } multi_aff multi_aff::scale_multi_val(multi_val mv) const { auto res = isl_multi_aff_scale_multi_val(copy(), mv.release()); return manage(res); } multi_aff multi_aff::scale_val(val v) const { auto res = isl_multi_aff_scale_val(copy(), v.release()); return manage(res); } multi_aff multi_aff::set_aff(int pos, aff el) const { auto res = isl_multi_aff_set_aff(copy(), pos, el.release()); return manage(res); } multi_aff multi_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_multi_aff_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } multi_aff multi_aff::set_tuple_id(isl::dim type, id id) const { auto res = isl_multi_aff_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } multi_aff multi_aff::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_multi_aff_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } multi_aff multi_aff::splice(unsigned int in_pos, unsigned int out_pos, multi_aff multi2) const { auto res = isl_multi_aff_splice(copy(), in_pos, out_pos, multi2.release()); return manage(res); } multi_aff multi_aff::sub(multi_aff multi2) const { auto res = isl_multi_aff_sub(copy(), multi2.release()); return manage(res); } multi_aff multi_aff::zero(space space) { auto res = isl_multi_aff_zero(space.release()); return manage(res); } // implementations for isl::multi_pw_aff multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) { return multi_pw_aff(ptr); } multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) { ptr = isl_multi_pw_aff_copy(ptr); return multi_pw_aff(ptr); } multi_pw_aff::multi_pw_aff() : ptr(nullptr) {} multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } multi_pw_aff::multi_pw_aff(std::nullptr_t) : ptr(nullptr) {} multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr) : ptr(ptr) {} multi_pw_aff::multi_pw_aff(multi_aff ma) { auto res = isl_multi_pw_aff_from_multi_aff(ma.release()); ptr = res; } multi_pw_aff::multi_pw_aff(pw_aff pa) { auto res = isl_multi_pw_aff_from_pw_aff(pa.release()); ptr = res; } multi_pw_aff::multi_pw_aff(pw_multi_aff pma) { auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release()); ptr = res; } multi_pw_aff::multi_pw_aff(ctx ctx, const std::string &str) { auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } multi_pw_aff::~multi_pw_aff() { if (ptr) isl_multi_pw_aff_free(ptr); } __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & { return isl_multi_pw_aff_copy(ptr); } __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const { return ptr; } __isl_give isl_multi_pw_aff *multi_pw_aff::release() { isl_multi_pw_aff *tmp = ptr; ptr = nullptr; return tmp; } bool multi_pw_aff::is_null() const { return ptr == nullptr; } multi_pw_aff::operator bool() const { return !is_null(); } ctx multi_pw_aff::get_ctx() const { return ctx(isl_multi_pw_aff_get_ctx(ptr)); } std::string multi_pw_aff::to_str() const { char *Tmp = isl_multi_pw_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void multi_pw_aff::dump() const { isl_multi_pw_aff_dump(get()); } multi_pw_aff multi_pw_aff::add(multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_add(copy(), multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::add_dims(isl::dim type, unsigned int n) const { auto res = isl_multi_pw_aff_add_dims(copy(), static_cast(type), n); return manage(res); } multi_pw_aff multi_pw_aff::align_params(space model) const { auto res = isl_multi_pw_aff_align_params(copy(), model.release()); return manage(res); } multi_pw_aff multi_pw_aff::coalesce() const { auto res = isl_multi_pw_aff_coalesce(copy()); return manage(res); } unsigned int multi_pw_aff::dim(isl::dim type) const { auto res = isl_multi_pw_aff_dim(get(), static_cast(type)); return res; } set multi_pw_aff::domain() const { auto res = isl_multi_pw_aff_domain(copy()); return manage(res); } multi_pw_aff multi_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_pw_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } map multi_pw_aff::eq_map(multi_pw_aff mpa2) const { auto res = isl_multi_pw_aff_eq_map(copy(), mpa2.release()); return manage(res); } multi_pw_aff multi_pw_aff::factor_range() const { auto res = isl_multi_pw_aff_factor_range(copy()); return manage(res); } int multi_pw_aff::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_multi_pw_aff_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int multi_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_multi_pw_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } multi_pw_aff multi_pw_aff::flat_range_product(multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::flatten_range() const { auto res = isl_multi_pw_aff_flatten_range(copy()); return manage(res); } multi_pw_aff multi_pw_aff::from_pw_aff_list(space space, pw_aff_list list) { auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release()); return manage(res); } multi_pw_aff multi_pw_aff::from_range() const { auto res = isl_multi_pw_aff_from_range(copy()); return manage(res); } id multi_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_multi_pw_aff_get_dim_id(get(), static_cast(type), pos); return manage(res); } space multi_pw_aff::get_domain_space() const { auto res = isl_multi_pw_aff_get_domain_space(get()); return manage(res); } uint32_t multi_pw_aff::get_hash() const { auto res = isl_multi_pw_aff_get_hash(get()); return res; } pw_aff multi_pw_aff::get_pw_aff(int pos) const { auto res = isl_multi_pw_aff_get_pw_aff(get(), pos); return manage(res); } space multi_pw_aff::get_space() const { auto res = isl_multi_pw_aff_get_space(get()); return manage(res); } id multi_pw_aff::get_tuple_id(isl::dim type) const { auto res = isl_multi_pw_aff_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string multi_pw_aff::get_tuple_name(isl::dim type) const { auto res = isl_multi_pw_aff_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } multi_pw_aff multi_pw_aff::gist(set set) const { auto res = isl_multi_pw_aff_gist(copy(), set.release()); return manage(res); } multi_pw_aff multi_pw_aff::gist_params(set set) const { auto res = isl_multi_pw_aff_gist_params(copy(), set.release()); return manage(res); } boolean multi_pw_aff::has_tuple_id(isl::dim type) const { auto res = isl_multi_pw_aff_has_tuple_id(get(), static_cast(type)); return manage(res); } multi_pw_aff multi_pw_aff::identity(space space) { auto res = isl_multi_pw_aff_identity(space.release()); return manage(res); } multi_pw_aff multi_pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_pw_aff_insert_dims(copy(), static_cast(type), first, n); return manage(res); } multi_pw_aff multi_pw_aff::intersect_domain(set domain) const { auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release()); return manage(res); } multi_pw_aff multi_pw_aff::intersect_params(set set) const { auto res = isl_multi_pw_aff_intersect_params(copy(), set.release()); return manage(res); } boolean multi_pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_pw_aff_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean multi_pw_aff::involves_nan() const { auto res = isl_multi_pw_aff_involves_nan(get()); return manage(res); } boolean multi_pw_aff::is_cst() const { auto res = isl_multi_pw_aff_is_cst(get()); return manage(res); } boolean multi_pw_aff::is_equal(const multi_pw_aff &mpa2) const { auto res = isl_multi_pw_aff_is_equal(get(), mpa2.get()); return manage(res); } map multi_pw_aff::lex_gt_map(multi_pw_aff mpa2) const { auto res = isl_multi_pw_aff_lex_gt_map(copy(), mpa2.release()); return manage(res); } map multi_pw_aff::lex_lt_map(multi_pw_aff mpa2) const { auto res = isl_multi_pw_aff_lex_lt_map(copy(), mpa2.release()); return manage(res); } multi_pw_aff multi_pw_aff::mod_multi_val(multi_val mv) const { auto res = isl_multi_pw_aff_mod_multi_val(copy(), mv.release()); return manage(res); } multi_pw_aff multi_pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_multi_pw_aff_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } multi_pw_aff multi_pw_aff::neg() const { auto res = isl_multi_pw_aff_neg(copy()); return manage(res); } boolean multi_pw_aff::plain_is_equal(const multi_pw_aff &multi2) const { auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get()); return manage(res); } multi_pw_aff multi_pw_aff::product(multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_product(copy(), multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::project_domain_on_params() const { auto res = isl_multi_pw_aff_project_domain_on_params(copy()); return manage(res); } multi_pw_aff multi_pw_aff::pullback(multi_aff ma) const { auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release()); return manage(res); } multi_pw_aff multi_pw_aff::pullback(pw_multi_aff pma) const { auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release()); return manage(res); } multi_pw_aff multi_pw_aff::pullback(multi_pw_aff mpa2) const { auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release()); return manage(res); } multi_pw_aff multi_pw_aff::range_factor_domain() const { auto res = isl_multi_pw_aff_range_factor_domain(copy()); return manage(res); } multi_pw_aff multi_pw_aff::range_factor_range() const { auto res = isl_multi_pw_aff_range_factor_range(copy()); return manage(res); } boolean multi_pw_aff::range_is_wrapping() const { auto res = isl_multi_pw_aff_range_is_wrapping(get()); return manage(res); } multi_pw_aff multi_pw_aff::range_product(multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_range_product(copy(), multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::range_splice(unsigned int pos, multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_range_splice(copy(), pos, multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const { auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast(type)); return manage(res); } multi_pw_aff multi_pw_aff::reset_user() const { auto res = isl_multi_pw_aff_reset_user(copy()); return manage(res); } multi_pw_aff multi_pw_aff::scale_down_multi_val(multi_val mv) const { auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release()); return manage(res); } multi_pw_aff multi_pw_aff::scale_down_val(val v) const { auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release()); return manage(res); } multi_pw_aff multi_pw_aff::scale_multi_val(multi_val mv) const { auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release()); return manage(res); } multi_pw_aff multi_pw_aff::scale_val(val v) const { auto res = isl_multi_pw_aff_scale_val(copy(), v.release()); return manage(res); } multi_pw_aff multi_pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_multi_pw_aff_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } multi_pw_aff multi_pw_aff::set_pw_aff(int pos, pw_aff el) const { auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release()); return manage(res); } multi_pw_aff multi_pw_aff::set_tuple_id(isl::dim type, id id) const { auto res = isl_multi_pw_aff_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } multi_pw_aff multi_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_multi_pw_aff_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } multi_pw_aff multi_pw_aff::splice(unsigned int in_pos, unsigned int out_pos, multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_splice(copy(), in_pos, out_pos, multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::sub(multi_pw_aff multi2) const { auto res = isl_multi_pw_aff_sub(copy(), multi2.release()); return manage(res); } multi_pw_aff multi_pw_aff::zero(space space) { auto res = isl_multi_pw_aff_zero(space.release()); return manage(res); } // implementations for isl::multi_union_pw_aff multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) { return multi_union_pw_aff(ptr); } multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) { ptr = isl_multi_union_pw_aff_copy(ptr); return multi_union_pw_aff(ptr); } multi_union_pw_aff::multi_union_pw_aff() : ptr(nullptr) {} multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } multi_union_pw_aff::multi_union_pw_aff(std::nullptr_t) : ptr(nullptr) {} multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr) : ptr(ptr) {} multi_union_pw_aff::multi_union_pw_aff(union_pw_aff upa) { auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release()); ptr = res; } multi_union_pw_aff::multi_union_pw_aff(multi_pw_aff mpa) { auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release()); ptr = res; } multi_union_pw_aff::multi_union_pw_aff(union_pw_multi_aff upma) { auto res = isl_multi_union_pw_aff_from_union_pw_multi_aff(upma.release()); ptr = res; } multi_union_pw_aff::multi_union_pw_aff(ctx ctx, const std::string &str) { auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } multi_union_pw_aff::~multi_union_pw_aff() { if (ptr) isl_multi_union_pw_aff_free(ptr); } __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & { return isl_multi_union_pw_aff_copy(ptr); } __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const { return ptr; } __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() { isl_multi_union_pw_aff *tmp = ptr; ptr = nullptr; return tmp; } bool multi_union_pw_aff::is_null() const { return ptr == nullptr; } multi_union_pw_aff::operator bool() const { return !is_null(); } ctx multi_union_pw_aff::get_ctx() const { return ctx(isl_multi_union_pw_aff_get_ctx(ptr)); } std::string multi_union_pw_aff::to_str() const { char *Tmp = isl_multi_union_pw_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void multi_union_pw_aff::dump() const { isl_multi_union_pw_aff_dump(get()); } multi_union_pw_aff multi_union_pw_aff::add(multi_union_pw_aff multi2) const { auto res = isl_multi_union_pw_aff_add(copy(), multi2.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::align_params(space model) const { auto res = isl_multi_union_pw_aff_align_params(copy(), model.release()); return manage(res); } union_pw_aff multi_union_pw_aff::apply_aff(aff aff) const { auto res = isl_multi_union_pw_aff_apply_aff(copy(), aff.release()); return manage(res); } union_pw_aff multi_union_pw_aff::apply_pw_aff(pw_aff pa) const { auto res = isl_multi_union_pw_aff_apply_pw_aff(copy(), pa.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::apply_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_multi_union_pw_aff_apply_pw_multi_aff(copy(), pma.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::coalesce() const { auto res = isl_multi_union_pw_aff_coalesce(copy()); return manage(res); } unsigned int multi_union_pw_aff::dim(isl::dim type) const { auto res = isl_multi_union_pw_aff_dim(get(), static_cast(type)); return res; } union_set multi_union_pw_aff::domain() const { auto res = isl_multi_union_pw_aff_domain(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_union_pw_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } multi_pw_aff multi_union_pw_aff::extract_multi_pw_aff(space space) const { auto res = isl_multi_union_pw_aff_extract_multi_pw_aff(get(), space.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::factor_range() const { auto res = isl_multi_union_pw_aff_factor_range(copy()); return manage(res); } int multi_union_pw_aff::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_multi_union_pw_aff_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int multi_union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_multi_union_pw_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } multi_union_pw_aff multi_union_pw_aff::flat_range_product(multi_union_pw_aff multi2) const { auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::flatten_range() const { auto res = isl_multi_union_pw_aff_flatten_range(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::floor() const { auto res = isl_multi_union_pw_aff_floor(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::from_multi_aff(multi_aff ma) { auto res = isl_multi_union_pw_aff_from_multi_aff(ma.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::from_range() const { auto res = isl_multi_union_pw_aff_from_range(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::from_union_map(union_map umap) { auto res = isl_multi_union_pw_aff_from_union_map(umap.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::from_union_pw_aff_list(space space, union_pw_aff_list list) { auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release()); return manage(res); } id multi_union_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_multi_union_pw_aff_get_dim_id(get(), static_cast(type), pos); return manage(res); } space multi_union_pw_aff::get_domain_space() const { auto res = isl_multi_union_pw_aff_get_domain_space(get()); return manage(res); } space multi_union_pw_aff::get_space() const { auto res = isl_multi_union_pw_aff_get_space(get()); return manage(res); } id multi_union_pw_aff::get_tuple_id(isl::dim type) const { auto res = isl_multi_union_pw_aff_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string multi_union_pw_aff::get_tuple_name(isl::dim type) const { auto res = isl_multi_union_pw_aff_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } union_pw_aff multi_union_pw_aff::get_union_pw_aff(int pos) const { auto res = isl_multi_union_pw_aff_get_union_pw_aff(get(), pos); return manage(res); } multi_union_pw_aff multi_union_pw_aff::gist(union_set context) const { auto res = isl_multi_union_pw_aff_gist(copy(), context.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::gist_params(set context) const { auto res = isl_multi_union_pw_aff_gist_params(copy(), context.release()); return manage(res); } boolean multi_union_pw_aff::has_tuple_id(isl::dim type) const { auto res = isl_multi_union_pw_aff_has_tuple_id(get(), static_cast(type)); return manage(res); } multi_union_pw_aff multi_union_pw_aff::intersect_domain(union_set uset) const { auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::intersect_params(set params) const { auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::intersect_range(set set) const { auto res = isl_multi_union_pw_aff_intersect_range(copy(), set.release()); return manage(res); } boolean multi_union_pw_aff::involves_nan() const { auto res = isl_multi_union_pw_aff_involves_nan(get()); return manage(res); } multi_val multi_union_pw_aff::max_multi_val() const { auto res = isl_multi_union_pw_aff_max_multi_val(copy()); return manage(res); } multi_val multi_union_pw_aff::min_multi_val() const { auto res = isl_multi_union_pw_aff_min_multi_val(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::mod_multi_val(multi_val mv) const { auto res = isl_multi_union_pw_aff_mod_multi_val(copy(), mv.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::multi_aff_on_domain(union_set domain, multi_aff ma) { auto res = isl_multi_union_pw_aff_multi_aff_on_domain(domain.release(), ma.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::multi_val_on_domain(union_set domain, multi_val mv) { auto res = isl_multi_union_pw_aff_multi_val_on_domain(domain.release(), mv.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::neg() const { auto res = isl_multi_union_pw_aff_neg(copy()); return manage(res); } boolean multi_union_pw_aff::plain_is_equal(const multi_union_pw_aff &multi2) const { auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::pullback(union_pw_multi_aff upma) const { auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::pw_multi_aff_on_domain(union_set domain, pw_multi_aff pma) { auto res = isl_multi_union_pw_aff_pw_multi_aff_on_domain(domain.release(), pma.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::range_factor_domain() const { auto res = isl_multi_union_pw_aff_range_factor_domain(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::range_factor_range() const { auto res = isl_multi_union_pw_aff_range_factor_range(copy()); return manage(res); } boolean multi_union_pw_aff::range_is_wrapping() const { auto res = isl_multi_union_pw_aff_range_is_wrapping(get()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::range_product(multi_union_pw_aff multi2) const { auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::range_splice(unsigned int pos, multi_union_pw_aff multi2) const { auto res = isl_multi_union_pw_aff_range_splice(copy(), pos, multi2.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::reset_tuple_id(isl::dim type) const { auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast(type)); return manage(res); } multi_union_pw_aff multi_union_pw_aff::reset_user() const { auto res = isl_multi_union_pw_aff_reset_user(copy()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::scale_down_multi_val(multi_val mv) const { auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::scale_down_val(val v) const { auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::scale_multi_val(multi_val mv) const { auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::scale_val(val v) const { auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_multi_union_pw_aff_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::set_tuple_id(isl::dim type, id id) const { auto res = isl_multi_union_pw_aff_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_multi_union_pw_aff_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::set_union_pw_aff(int pos, union_pw_aff el) const { auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::sub(multi_union_pw_aff multi2) const { auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::union_add(multi_union_pw_aff mupa2) const { auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release()); return manage(res); } multi_union_pw_aff multi_union_pw_aff::zero(space space) { auto res = isl_multi_union_pw_aff_zero(space.release()); return manage(res); } union_set multi_union_pw_aff::zero_union_set() const { auto res = isl_multi_union_pw_aff_zero_union_set(copy()); return manage(res); } // implementations for isl::multi_val multi_val manage(__isl_take isl_multi_val *ptr) { return multi_val(ptr); } multi_val manage_copy(__isl_keep isl_multi_val *ptr) { ptr = isl_multi_val_copy(ptr); return multi_val(ptr); } multi_val::multi_val() : ptr(nullptr) {} multi_val::multi_val(const multi_val &obj) : ptr(nullptr) { ptr = obj.copy(); } multi_val::multi_val(std::nullptr_t) : ptr(nullptr) {} multi_val::multi_val(__isl_take isl_multi_val *ptr) : ptr(ptr) {} multi_val &multi_val::operator=(multi_val obj) { std::swap(this->ptr, obj.ptr); return *this; } multi_val::~multi_val() { if (ptr) isl_multi_val_free(ptr); } __isl_give isl_multi_val *multi_val::copy() const & { return isl_multi_val_copy(ptr); } __isl_keep isl_multi_val *multi_val::get() const { return ptr; } __isl_give isl_multi_val *multi_val::release() { isl_multi_val *tmp = ptr; ptr = nullptr; return tmp; } bool multi_val::is_null() const { return ptr == nullptr; } multi_val::operator bool() const { return !is_null(); } ctx multi_val::get_ctx() const { return ctx(isl_multi_val_get_ctx(ptr)); } std::string multi_val::to_str() const { char *Tmp = isl_multi_val_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void multi_val::dump() const { isl_multi_val_dump(get()); } multi_val multi_val::add(multi_val multi2) const { auto res = isl_multi_val_add(copy(), multi2.release()); return manage(res); } multi_val multi_val::add_dims(isl::dim type, unsigned int n) const { auto res = isl_multi_val_add_dims(copy(), static_cast(type), n); return manage(res); } multi_val multi_val::add_val(val v) const { auto res = isl_multi_val_add_val(copy(), v.release()); return manage(res); } multi_val multi_val::align_params(space model) const { auto res = isl_multi_val_align_params(copy(), model.release()); return manage(res); } unsigned int multi_val::dim(isl::dim type) const { auto res = isl_multi_val_dim(get(), static_cast(type)); return res; } multi_val multi_val::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_val_drop_dims(copy(), static_cast(type), first, n); return manage(res); } multi_val multi_val::factor_range() const { auto res = isl_multi_val_factor_range(copy()); return manage(res); } int multi_val::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_multi_val_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int multi_val::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_multi_val_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } multi_val multi_val::flat_range_product(multi_val multi2) const { auto res = isl_multi_val_flat_range_product(copy(), multi2.release()); return manage(res); } multi_val multi_val::flatten_range() const { auto res = isl_multi_val_flatten_range(copy()); return manage(res); } multi_val multi_val::from_range() const { auto res = isl_multi_val_from_range(copy()); return manage(res); } multi_val multi_val::from_val_list(space space, val_list list) { auto res = isl_multi_val_from_val_list(space.release(), list.release()); return manage(res); } id multi_val::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_multi_val_get_dim_id(get(), static_cast(type), pos); return manage(res); } space multi_val::get_domain_space() const { auto res = isl_multi_val_get_domain_space(get()); return manage(res); } space multi_val::get_space() const { auto res = isl_multi_val_get_space(get()); return manage(res); } id multi_val::get_tuple_id(isl::dim type) const { auto res = isl_multi_val_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string multi_val::get_tuple_name(isl::dim type) const { auto res = isl_multi_val_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } val multi_val::get_val(int pos) const { auto res = isl_multi_val_get_val(get(), pos); return manage(res); } boolean multi_val::has_tuple_id(isl::dim type) const { auto res = isl_multi_val_has_tuple_id(get(), static_cast(type)); return manage(res); } multi_val multi_val::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_val_insert_dims(copy(), static_cast(type), first, n); return manage(res); } boolean multi_val::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_multi_val_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean multi_val::involves_nan() const { auto res = isl_multi_val_involves_nan(get()); return manage(res); } multi_val multi_val::mod_multi_val(multi_val mv) const { auto res = isl_multi_val_mod_multi_val(copy(), mv.release()); return manage(res); } multi_val multi_val::mod_val(val v) const { auto res = isl_multi_val_mod_val(copy(), v.release()); return manage(res); } multi_val multi_val::neg() const { auto res = isl_multi_val_neg(copy()); return manage(res); } boolean multi_val::plain_is_equal(const multi_val &multi2) const { auto res = isl_multi_val_plain_is_equal(get(), multi2.get()); return manage(res); } multi_val multi_val::product(multi_val multi2) const { auto res = isl_multi_val_product(copy(), multi2.release()); return manage(res); } multi_val multi_val::project_domain_on_params() const { auto res = isl_multi_val_project_domain_on_params(copy()); return manage(res); } multi_val multi_val::range_factor_domain() const { auto res = isl_multi_val_range_factor_domain(copy()); return manage(res); } multi_val multi_val::range_factor_range() const { auto res = isl_multi_val_range_factor_range(copy()); return manage(res); } boolean multi_val::range_is_wrapping() const { auto res = isl_multi_val_range_is_wrapping(get()); return manage(res); } multi_val multi_val::range_product(multi_val multi2) const { auto res = isl_multi_val_range_product(copy(), multi2.release()); return manage(res); } multi_val multi_val::range_splice(unsigned int pos, multi_val multi2) const { auto res = isl_multi_val_range_splice(copy(), pos, multi2.release()); return manage(res); } multi_val multi_val::read_from_str(ctx ctx, const std::string &str) { auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str()); return manage(res); } multi_val multi_val::reset_tuple_id(isl::dim type) const { auto res = isl_multi_val_reset_tuple_id(copy(), static_cast(type)); return manage(res); } multi_val multi_val::reset_user() const { auto res = isl_multi_val_reset_user(copy()); return manage(res); } multi_val multi_val::scale_down_multi_val(multi_val mv) const { auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release()); return manage(res); } multi_val multi_val::scale_down_val(val v) const { auto res = isl_multi_val_scale_down_val(copy(), v.release()); return manage(res); } multi_val multi_val::scale_multi_val(multi_val mv) const { auto res = isl_multi_val_scale_multi_val(copy(), mv.release()); return manage(res); } multi_val multi_val::scale_val(val v) const { auto res = isl_multi_val_scale_val(copy(), v.release()); return manage(res); } multi_val multi_val::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_multi_val_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } multi_val multi_val::set_tuple_id(isl::dim type, id id) const { auto res = isl_multi_val_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } multi_val multi_val::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_multi_val_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } multi_val multi_val::set_val(int pos, val el) const { auto res = isl_multi_val_set_val(copy(), pos, el.release()); return manage(res); } multi_val multi_val::splice(unsigned int in_pos, unsigned int out_pos, multi_val multi2) const { auto res = isl_multi_val_splice(copy(), in_pos, out_pos, multi2.release()); return manage(res); } multi_val multi_val::sub(multi_val multi2) const { auto res = isl_multi_val_sub(copy(), multi2.release()); return manage(res); } multi_val multi_val::zero(space space) { auto res = isl_multi_val_zero(space.release()); return manage(res); } // implementations for isl::point point manage(__isl_take isl_point *ptr) { return point(ptr); } point manage_copy(__isl_keep isl_point *ptr) { ptr = isl_point_copy(ptr); return point(ptr); } point::point() : ptr(nullptr) {} point::point(const point &obj) : ptr(nullptr) { ptr = obj.copy(); } point::point(std::nullptr_t) : ptr(nullptr) {} point::point(__isl_take isl_point *ptr) : ptr(ptr) {} point::point(space dim) { auto res = isl_point_zero(dim.release()); ptr = res; } point &point::operator=(point obj) { std::swap(this->ptr, obj.ptr); return *this; } point::~point() { if (ptr) isl_point_free(ptr); } __isl_give isl_point *point::copy() const & { return isl_point_copy(ptr); } __isl_keep isl_point *point::get() const { return ptr; } __isl_give isl_point *point::release() { isl_point *tmp = ptr; ptr = nullptr; return tmp; } bool point::is_null() const { return ptr == nullptr; } point::operator bool() const { return !is_null(); } ctx point::get_ctx() const { return ctx(isl_point_get_ctx(ptr)); } std::string point::to_str() const { char *Tmp = isl_point_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void point::dump() const { isl_point_dump(get()); } point point::add_ui(isl::dim type, int pos, unsigned int val) const { auto res = isl_point_add_ui(copy(), static_cast(type), pos, val); return manage(res); } val point::get_coordinate_val(isl::dim type, int pos) const { auto res = isl_point_get_coordinate_val(get(), static_cast(type), pos); return manage(res); } space point::get_space() const { auto res = isl_point_get_space(get()); return manage(res); } point point::set_coordinate_val(isl::dim type, int pos, val v) const { auto res = isl_point_set_coordinate_val(copy(), static_cast(type), pos, v.release()); return manage(res); } point point::sub_ui(isl::dim type, int pos, unsigned int val) const { auto res = isl_point_sub_ui(copy(), static_cast(type), pos, val); return manage(res); } // implementations for isl::pw_aff pw_aff manage(__isl_take isl_pw_aff *ptr) { return pw_aff(ptr); } pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) { ptr = isl_pw_aff_copy(ptr); return pw_aff(ptr); } pw_aff::pw_aff() : ptr(nullptr) {} pw_aff::pw_aff(const pw_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_aff::pw_aff(std::nullptr_t) : ptr(nullptr) {} pw_aff::pw_aff(__isl_take isl_pw_aff *ptr) : ptr(ptr) {} pw_aff::pw_aff(aff aff) { auto res = isl_pw_aff_from_aff(aff.release()); ptr = res; } pw_aff::pw_aff(local_space ls) { auto res = isl_pw_aff_zero_on_domain(ls.release()); ptr = res; } pw_aff::pw_aff(set domain, val v) { auto res = isl_pw_aff_val_on_domain(domain.release(), v.release()); ptr = res; } pw_aff::pw_aff(ctx ctx, const std::string &str) { auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } pw_aff &pw_aff::operator=(pw_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_aff::~pw_aff() { if (ptr) isl_pw_aff_free(ptr); } __isl_give isl_pw_aff *pw_aff::copy() const & { return isl_pw_aff_copy(ptr); } __isl_keep isl_pw_aff *pw_aff::get() const { return ptr; } __isl_give isl_pw_aff *pw_aff::release() { isl_pw_aff *tmp = ptr; ptr = nullptr; return tmp; } bool pw_aff::is_null() const { return ptr == nullptr; } pw_aff::operator bool() const { return !is_null(); } ctx pw_aff::get_ctx() const { return ctx(isl_pw_aff_get_ctx(ptr)); } std::string pw_aff::to_str() const { char *Tmp = isl_pw_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void pw_aff::dump() const { isl_pw_aff_dump(get()); } pw_aff pw_aff::add(pw_aff pwaff2) const { auto res = isl_pw_aff_add(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const { auto res = isl_pw_aff_add_dims(copy(), static_cast(type), n); return manage(res); } pw_aff pw_aff::align_params(space model) const { auto res = isl_pw_aff_align_params(copy(), model.release()); return manage(res); } pw_aff pw_aff::alloc(set set, aff aff) { auto res = isl_pw_aff_alloc(set.release(), aff.release()); return manage(res); } pw_aff pw_aff::ceil() const { auto res = isl_pw_aff_ceil(copy()); return manage(res); } pw_aff pw_aff::coalesce() const { auto res = isl_pw_aff_coalesce(copy()); return manage(res); } pw_aff pw_aff::cond(pw_aff pwaff_true, pw_aff pwaff_false) const { auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release()); return manage(res); } unsigned int pw_aff::dim(isl::dim type) const { auto res = isl_pw_aff_dim(get(), static_cast(type)); return res; } pw_aff pw_aff::div(pw_aff pa2) const { auto res = isl_pw_aff_div(copy(), pa2.release()); return manage(res); } set pw_aff::domain() const { auto res = isl_pw_aff_domain(copy()); return manage(res); } pw_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } pw_aff pw_aff::drop_unused_params() const { auto res = isl_pw_aff_drop_unused_params(copy()); return manage(res); } pw_aff pw_aff::empty(space dim) { auto res = isl_pw_aff_empty(dim.release()); return manage(res); } map pw_aff::eq_map(pw_aff pa2) const { auto res = isl_pw_aff_eq_map(copy(), pa2.release()); return manage(res); } set pw_aff::eq_set(pw_aff pwaff2) const { auto res = isl_pw_aff_eq_set(copy(), pwaff2.release()); return manage(res); } val pw_aff::eval(point pnt) const { auto res = isl_pw_aff_eval(copy(), pnt.release()); return manage(res); } int pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_pw_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } pw_aff pw_aff::floor() const { auto res = isl_pw_aff_floor(copy()); return manage(res); } stat pw_aff::foreach_piece(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat { auto *data = static_cast(arg_2); stat ret = (*data->func)(manage(arg_0), manage(arg_1)); return ret.release(); }; auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_data); return manage(res); } pw_aff pw_aff::from_range() const { auto res = isl_pw_aff_from_range(copy()); return manage(res); } set pw_aff::ge_set(pw_aff pwaff2) const { auto res = isl_pw_aff_ge_set(copy(), pwaff2.release()); return manage(res); } id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_pw_aff_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string pw_aff::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_pw_aff_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } space pw_aff::get_domain_space() const { auto res = isl_pw_aff_get_domain_space(get()); return manage(res); } uint32_t pw_aff::get_hash() const { auto res = isl_pw_aff_get_hash(get()); return res; } space pw_aff::get_space() const { auto res = isl_pw_aff_get_space(get()); return manage(res); } id pw_aff::get_tuple_id(isl::dim type) const { auto res = isl_pw_aff_get_tuple_id(get(), static_cast(type)); return manage(res); } pw_aff pw_aff::gist(set context) const { auto res = isl_pw_aff_gist(copy(), context.release()); return manage(res); } pw_aff pw_aff::gist_params(set context) const { auto res = isl_pw_aff_gist_params(copy(), context.release()); return manage(res); } map pw_aff::gt_map(pw_aff pa2) const { auto res = isl_pw_aff_gt_map(copy(), pa2.release()); return manage(res); } set pw_aff::gt_set(pw_aff pwaff2) const { auto res = isl_pw_aff_gt_set(copy(), pwaff2.release()); return manage(res); } boolean pw_aff::has_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_pw_aff_has_dim_id(get(), static_cast(type), pos); return manage(res); } boolean pw_aff::has_tuple_id(isl::dim type) const { auto res = isl_pw_aff_has_tuple_id(get(), static_cast(type)); return manage(res); } pw_aff pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_aff_insert_dims(copy(), static_cast(type), first, n); return manage(res); } pw_aff pw_aff::intersect_domain(set set) const { auto res = isl_pw_aff_intersect_domain(copy(), set.release()); return manage(res); } pw_aff pw_aff::intersect_params(set set) const { auto res = isl_pw_aff_intersect_params(copy(), set.release()); return manage(res); } boolean pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_aff_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean pw_aff::involves_nan() const { auto res = isl_pw_aff_involves_nan(get()); return manage(res); } boolean pw_aff::is_cst() const { auto res = isl_pw_aff_is_cst(get()); return manage(res); } boolean pw_aff::is_empty() const { auto res = isl_pw_aff_is_empty(get()); return manage(res); } boolean pw_aff::is_equal(const pw_aff &pa2) const { auto res = isl_pw_aff_is_equal(get(), pa2.get()); return manage(res); } set pw_aff::le_set(pw_aff pwaff2) const { auto res = isl_pw_aff_le_set(copy(), pwaff2.release()); return manage(res); } map pw_aff::lt_map(pw_aff pa2) const { auto res = isl_pw_aff_lt_map(copy(), pa2.release()); return manage(res); } set pw_aff::lt_set(pw_aff pwaff2) const { auto res = isl_pw_aff_lt_set(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::max(pw_aff pwaff2) const { auto res = isl_pw_aff_max(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::min(pw_aff pwaff2) const { auto res = isl_pw_aff_min(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::mod(val mod) const { auto res = isl_pw_aff_mod_val(copy(), mod.release()); return manage(res); } pw_aff pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_pw_aff_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } pw_aff pw_aff::mul(pw_aff pwaff2) const { auto res = isl_pw_aff_mul(copy(), pwaff2.release()); return manage(res); } int pw_aff::n_piece() const { auto res = isl_pw_aff_n_piece(get()); return res; } pw_aff pw_aff::nan_on_domain(local_space ls) { auto res = isl_pw_aff_nan_on_domain(ls.release()); return manage(res); } set pw_aff::ne_set(pw_aff pwaff2) const { auto res = isl_pw_aff_ne_set(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::neg() const { auto res = isl_pw_aff_neg(copy()); return manage(res); } set pw_aff::non_zero_set() const { auto res = isl_pw_aff_non_zero_set(copy()); return manage(res); } set pw_aff::nonneg_set() const { auto res = isl_pw_aff_nonneg_set(copy()); return manage(res); } set pw_aff::params() const { auto res = isl_pw_aff_params(copy()); return manage(res); } int pw_aff::plain_cmp(const pw_aff &pa2) const { auto res = isl_pw_aff_plain_cmp(get(), pa2.get()); return res; } boolean pw_aff::plain_is_equal(const pw_aff &pwaff2) const { auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get()); return manage(res); } set pw_aff::pos_set() const { auto res = isl_pw_aff_pos_set(copy()); return manage(res); } pw_aff pw_aff::project_domain_on_params() const { auto res = isl_pw_aff_project_domain_on_params(copy()); return manage(res); } pw_aff pw_aff::pullback(multi_aff ma) const { auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release()); return manage(res); } pw_aff pw_aff::pullback(pw_multi_aff pma) const { auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release()); return manage(res); } pw_aff pw_aff::pullback(multi_pw_aff mpa) const { auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release()); return manage(res); } pw_aff pw_aff::reset_tuple_id(isl::dim type) const { auto res = isl_pw_aff_reset_tuple_id(copy(), static_cast(type)); return manage(res); } pw_aff pw_aff::reset_user() const { auto res = isl_pw_aff_reset_user(copy()); return manage(res); } pw_aff pw_aff::scale(val v) const { auto res = isl_pw_aff_scale_val(copy(), v.release()); return manage(res); } pw_aff pw_aff::scale_down(val f) const { auto res = isl_pw_aff_scale_down_val(copy(), f.release()); return manage(res); } pw_aff pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_pw_aff_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } pw_aff pw_aff::set_tuple_id(isl::dim type, id id) const { auto res = isl_pw_aff_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } pw_aff pw_aff::sub(pw_aff pwaff2) const { auto res = isl_pw_aff_sub(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::subtract_domain(set set) const { auto res = isl_pw_aff_subtract_domain(copy(), set.release()); return manage(res); } pw_aff pw_aff::tdiv_q(pw_aff pa2) const { auto res = isl_pw_aff_tdiv_q(copy(), pa2.release()); return manage(res); } pw_aff pw_aff::tdiv_r(pw_aff pa2) const { auto res = isl_pw_aff_tdiv_r(copy(), pa2.release()); return manage(res); } pw_aff pw_aff::union_add(pw_aff pwaff2) const { auto res = isl_pw_aff_union_add(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::union_max(pw_aff pwaff2) const { auto res = isl_pw_aff_union_max(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::union_min(pw_aff pwaff2) const { auto res = isl_pw_aff_union_min(copy(), pwaff2.release()); return manage(res); } pw_aff pw_aff::var_on_domain(local_space ls, isl::dim type, unsigned int pos) { auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast(type), pos); return manage(res); } set pw_aff::zero_set() const { auto res = isl_pw_aff_zero_set(copy()); return manage(res); } // implementations for isl::pw_aff_list pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) { return pw_aff_list(ptr); } pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) { ptr = isl_pw_aff_list_copy(ptr); return pw_aff_list(ptr); } pw_aff_list::pw_aff_list() : ptr(nullptr) {} pw_aff_list::pw_aff_list(const pw_aff_list &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_aff_list::pw_aff_list(std::nullptr_t) : ptr(nullptr) {} pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr) : ptr(ptr) {} pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_aff_list::~pw_aff_list() { if (ptr) isl_pw_aff_list_free(ptr); } __isl_give isl_pw_aff_list *pw_aff_list::copy() const & { return isl_pw_aff_list_copy(ptr); } __isl_keep isl_pw_aff_list *pw_aff_list::get() const { return ptr; } __isl_give isl_pw_aff_list *pw_aff_list::release() { isl_pw_aff_list *tmp = ptr; ptr = nullptr; return tmp; } bool pw_aff_list::is_null() const { return ptr == nullptr; } pw_aff_list::operator bool() const { return !is_null(); } ctx pw_aff_list::get_ctx() const { return ctx(isl_pw_aff_list_get_ctx(ptr)); } void pw_aff_list::dump() const { isl_pw_aff_list_dump(get()); } pw_aff_list pw_aff_list::add(pw_aff el) const { auto res = isl_pw_aff_list_add(copy(), el.release()); return manage(res); } pw_aff_list pw_aff_list::alloc(ctx ctx, int n) { auto res = isl_pw_aff_list_alloc(ctx.release(), n); return manage(res); } pw_aff_list pw_aff_list::concat(pw_aff_list list2) const { auto res = isl_pw_aff_list_concat(copy(), list2.release()); return manage(res); } pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl_pw_aff_list_drop(copy(), first, n); return manage(res); } set pw_aff_list::eq_set(pw_aff_list list2) const { auto res = isl_pw_aff_list_eq_set(copy(), list2.release()); return manage(res); } stat pw_aff_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } pw_aff_list pw_aff_list::from_pw_aff(pw_aff el) { auto res = isl_pw_aff_list_from_pw_aff(el.release()); return manage(res); } set pw_aff_list::ge_set(pw_aff_list list2) const { auto res = isl_pw_aff_list_ge_set(copy(), list2.release()); return manage(res); } pw_aff pw_aff_list::get_at(int index) const { auto res = isl_pw_aff_list_get_at(get(), index); return manage(res); } pw_aff pw_aff_list::get_pw_aff(int index) const { auto res = isl_pw_aff_list_get_pw_aff(get(), index); return manage(res); } set pw_aff_list::gt_set(pw_aff_list list2) const { auto res = isl_pw_aff_list_gt_set(copy(), list2.release()); return manage(res); } pw_aff_list pw_aff_list::insert(unsigned int pos, pw_aff el) const { auto res = isl_pw_aff_list_insert(copy(), pos, el.release()); return manage(res); } set pw_aff_list::le_set(pw_aff_list list2) const { auto res = isl_pw_aff_list_le_set(copy(), list2.release()); return manage(res); } set pw_aff_list::lt_set(pw_aff_list list2) const { auto res = isl_pw_aff_list_lt_set(copy(), list2.release()); return manage(res); } pw_aff pw_aff_list::max() const { auto res = isl_pw_aff_list_max(copy()); return manage(res); } pw_aff pw_aff_list::min() const { auto res = isl_pw_aff_list_min(copy()); return manage(res); } int pw_aff_list::n_pw_aff() const { auto res = isl_pw_aff_list_n_pw_aff(get()); return res; } set pw_aff_list::ne_set(pw_aff_list list2) const { auto res = isl_pw_aff_list_ne_set(copy(), list2.release()); return manage(res); } pw_aff_list pw_aff_list::reverse() const { auto res = isl_pw_aff_list_reverse(copy()); return manage(res); } pw_aff_list pw_aff_list::set_pw_aff(int index, pw_aff el) const { auto res = isl_pw_aff_list_set_pw_aff(copy(), index, el.release()); return manage(res); } int pw_aff_list::size() const { auto res = isl_pw_aff_list_size(get()); return res; } pw_aff_list pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_pw_aff_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::pw_multi_aff pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) { return pw_multi_aff(ptr); } pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) { ptr = isl_pw_multi_aff_copy(ptr); return pw_multi_aff(ptr); } pw_multi_aff::pw_multi_aff() : ptr(nullptr) {} pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_multi_aff::pw_multi_aff(std::nullptr_t) : ptr(nullptr) {} pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr) : ptr(ptr) {} pw_multi_aff::pw_multi_aff(multi_aff ma) { auto res = isl_pw_multi_aff_from_multi_aff(ma.release()); ptr = res; } pw_multi_aff::pw_multi_aff(pw_aff pa) { auto res = isl_pw_multi_aff_from_pw_aff(pa.release()); ptr = res; } pw_multi_aff::pw_multi_aff(ctx ctx, const std::string &str) { auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_multi_aff::~pw_multi_aff() { if (ptr) isl_pw_multi_aff_free(ptr); } __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & { return isl_pw_multi_aff_copy(ptr); } __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const { return ptr; } __isl_give isl_pw_multi_aff *pw_multi_aff::release() { isl_pw_multi_aff *tmp = ptr; ptr = nullptr; return tmp; } bool pw_multi_aff::is_null() const { return ptr == nullptr; } pw_multi_aff::operator bool() const { return !is_null(); } ctx pw_multi_aff::get_ctx() const { return ctx(isl_pw_multi_aff_get_ctx(ptr)); } std::string pw_multi_aff::to_str() const { char *Tmp = isl_pw_multi_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void pw_multi_aff::dump() const { isl_pw_multi_aff_dump(get()); } pw_multi_aff pw_multi_aff::add(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_add(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::align_params(space model) const { auto res = isl_pw_multi_aff_align_params(copy(), model.release()); return manage(res); } pw_multi_aff pw_multi_aff::alloc(set set, multi_aff maff) { auto res = isl_pw_multi_aff_alloc(set.release(), maff.release()); return manage(res); } pw_multi_aff pw_multi_aff::coalesce() const { auto res = isl_pw_multi_aff_coalesce(copy()); return manage(res); } unsigned int pw_multi_aff::dim(isl::dim type) const { auto res = isl_pw_multi_aff_dim(get(), static_cast(type)); return res; } set pw_multi_aff::domain() const { auto res = isl_pw_multi_aff_domain(copy()); return manage(res); } pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } pw_multi_aff pw_multi_aff::drop_unused_params() const { auto res = isl_pw_multi_aff_drop_unused_params(copy()); return manage(res); } pw_multi_aff pw_multi_aff::empty(space space) { auto res = isl_pw_multi_aff_empty(space.release()); return manage(res); } int pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_pw_multi_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } pw_multi_aff pw_multi_aff::fix_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_pw_multi_aff_fix_si(copy(), static_cast(type), pos, value); return manage(res); } pw_multi_aff pw_multi_aff::flat_range_product(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release()); return manage(res); } stat pw_multi_aff::foreach_piece(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat { auto *data = static_cast(arg_2); stat ret = (*data->func)(manage(arg_0), manage(arg_1)); return ret.release(); }; auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data); return manage(res); } pw_multi_aff pw_multi_aff::from_domain(set set) { auto res = isl_pw_multi_aff_from_domain(set.release()); return manage(res); } pw_multi_aff pw_multi_aff::from_map(map map) { auto res = isl_pw_multi_aff_from_map(map.release()); return manage(res); } pw_multi_aff pw_multi_aff::from_multi_pw_aff(multi_pw_aff mpa) { auto res = isl_pw_multi_aff_from_multi_pw_aff(mpa.release()); return manage(res); } pw_multi_aff pw_multi_aff::from_set(set set) { auto res = isl_pw_multi_aff_from_set(set.release()); return manage(res); } id pw_multi_aff::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_pw_multi_aff_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string pw_multi_aff::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_pw_multi_aff_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } space pw_multi_aff::get_domain_space() const { auto res = isl_pw_multi_aff_get_domain_space(get()); return manage(res); } pw_aff pw_multi_aff::get_pw_aff(int pos) const { auto res = isl_pw_multi_aff_get_pw_aff(get(), pos); return manage(res); } space pw_multi_aff::get_space() const { auto res = isl_pw_multi_aff_get_space(get()); return manage(res); } id pw_multi_aff::get_tuple_id(isl::dim type) const { auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string pw_multi_aff::get_tuple_name(isl::dim type) const { auto res = isl_pw_multi_aff_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } pw_multi_aff pw_multi_aff::gist(set set) const { auto res = isl_pw_multi_aff_gist(copy(), set.release()); return manage(res); } pw_multi_aff pw_multi_aff::gist_params(set set) const { auto res = isl_pw_multi_aff_gist_params(copy(), set.release()); return manage(res); } boolean pw_multi_aff::has_tuple_id(isl::dim type) const { auto res = isl_pw_multi_aff_has_tuple_id(get(), static_cast(type)); return manage(res); } boolean pw_multi_aff::has_tuple_name(isl::dim type) const { auto res = isl_pw_multi_aff_has_tuple_name(get(), static_cast(type)); return manage(res); } pw_multi_aff pw_multi_aff::identity(space space) { auto res = isl_pw_multi_aff_identity(space.release()); return manage(res); } pw_multi_aff pw_multi_aff::intersect_domain(set set) const { auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release()); return manage(res); } pw_multi_aff pw_multi_aff::intersect_params(set set) const { auto res = isl_pw_multi_aff_intersect_params(copy(), set.release()); return manage(res); } boolean pw_multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_multi_aff_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean pw_multi_aff::involves_nan() const { auto res = isl_pw_multi_aff_involves_nan(get()); return manage(res); } boolean pw_multi_aff::is_equal(const pw_multi_aff &pma2) const { auto res = isl_pw_multi_aff_is_equal(get(), pma2.get()); return manage(res); } pw_multi_aff pw_multi_aff::multi_val_on_domain(set domain, multi_val mv) { auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release()); return manage(res); } int pw_multi_aff::n_piece() const { auto res = isl_pw_multi_aff_n_piece(get()); return res; } pw_multi_aff pw_multi_aff::neg() const { auto res = isl_pw_multi_aff_neg(copy()); return manage(res); } boolean pw_multi_aff::plain_is_equal(const pw_multi_aff &pma2) const { auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get()); return manage(res); } pw_multi_aff pw_multi_aff::product(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_product(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::project_domain_on_params() const { auto res = isl_pw_multi_aff_project_domain_on_params(copy()); return manage(res); } pw_multi_aff pw_multi_aff::project_out_map(space space, isl::dim type, unsigned int first, unsigned int n) { auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast(type), first, n); return manage(res); } pw_multi_aff pw_multi_aff::pullback(multi_aff ma) const { auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release()); return manage(res); } pw_multi_aff pw_multi_aff::pullback(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::range_map(space space) { auto res = isl_pw_multi_aff_range_map(space.release()); return manage(res); } pw_multi_aff pw_multi_aff::range_product(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_range_product(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::reset_tuple_id(isl::dim type) const { auto res = isl_pw_multi_aff_reset_tuple_id(copy(), static_cast(type)); return manage(res); } pw_multi_aff pw_multi_aff::reset_user() const { auto res = isl_pw_multi_aff_reset_user(copy()); return manage(res); } pw_multi_aff pw_multi_aff::scale_down_val(val v) const { auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release()); return manage(res); } pw_multi_aff pw_multi_aff::scale_multi_val(multi_val mv) const { auto res = isl_pw_multi_aff_scale_multi_val(copy(), mv.release()); return manage(res); } pw_multi_aff pw_multi_aff::scale_val(val v) const { auto res = isl_pw_multi_aff_scale_val(copy(), v.release()); return manage(res); } pw_multi_aff pw_multi_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_pw_multi_aff_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } pw_multi_aff pw_multi_aff::set_pw_aff(unsigned int pos, pw_aff pa) const { auto res = isl_pw_multi_aff_set_pw_aff(copy(), pos, pa.release()); return manage(res); } pw_multi_aff pw_multi_aff::set_tuple_id(isl::dim type, id id) const { auto res = isl_pw_multi_aff_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } pw_multi_aff pw_multi_aff::sub(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_sub(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::subtract_domain(set set) const { auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release()); return manage(res); } pw_multi_aff pw_multi_aff::union_add(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_union_add(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::union_lexmax(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_union_lexmax(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::union_lexmin(pw_multi_aff pma2) const { auto res = isl_pw_multi_aff_union_lexmin(copy(), pma2.release()); return manage(res); } pw_multi_aff pw_multi_aff::zero(space space) { auto res = isl_pw_multi_aff_zero(space.release()); return manage(res); } // implementations for isl::pw_multi_aff_list pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) { return pw_multi_aff_list(ptr); } pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) { ptr = isl_pw_multi_aff_list_copy(ptr); return pw_multi_aff_list(ptr); } pw_multi_aff_list::pw_multi_aff_list() : ptr(nullptr) {} pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_multi_aff_list::pw_multi_aff_list(std::nullptr_t) : ptr(nullptr) {} pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr) : ptr(ptr) {} pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_multi_aff_list::~pw_multi_aff_list() { if (ptr) isl_pw_multi_aff_list_free(ptr); } __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & { return isl_pw_multi_aff_list_copy(ptr); } __isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const { return ptr; } __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() { isl_pw_multi_aff_list *tmp = ptr; ptr = nullptr; return tmp; } bool pw_multi_aff_list::is_null() const { return ptr == nullptr; } pw_multi_aff_list::operator bool() const { return !is_null(); } ctx pw_multi_aff_list::get_ctx() const { return ctx(isl_pw_multi_aff_list_get_ctx(ptr)); } void pw_multi_aff_list::dump() const { isl_pw_multi_aff_list_dump(get()); } pw_multi_aff_list pw_multi_aff_list::add(pw_multi_aff el) const { auto res = isl_pw_multi_aff_list_add(copy(), el.release()); return manage(res); } pw_multi_aff_list pw_multi_aff_list::alloc(ctx ctx, int n) { auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n); return manage(res); } pw_multi_aff_list pw_multi_aff_list::concat(pw_multi_aff_list list2) const { auto res = isl_pw_multi_aff_list_concat(copy(), list2.release()); return manage(res); } pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl_pw_multi_aff_list_drop(copy(), first, n); return manage(res); } stat pw_multi_aff_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } pw_multi_aff_list pw_multi_aff_list::from_pw_multi_aff(pw_multi_aff el) { auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release()); return manage(res); } pw_multi_aff pw_multi_aff_list::get_at(int index) const { auto res = isl_pw_multi_aff_list_get_at(get(), index); return manage(res); } pw_multi_aff pw_multi_aff_list::get_pw_multi_aff(int index) const { auto res = isl_pw_multi_aff_list_get_pw_multi_aff(get(), index); return manage(res); } pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, pw_multi_aff el) const { auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release()); return manage(res); } int pw_multi_aff_list::n_pw_multi_aff() const { auto res = isl_pw_multi_aff_list_n_pw_multi_aff(get()); return res; } pw_multi_aff_list pw_multi_aff_list::reverse() const { auto res = isl_pw_multi_aff_list_reverse(copy()); return manage(res); } pw_multi_aff_list pw_multi_aff_list::set_pw_multi_aff(int index, pw_multi_aff el) const { auto res = isl_pw_multi_aff_list_set_pw_multi_aff(copy(), index, el.release()); return manage(res); } int pw_multi_aff_list::size() const { auto res = isl_pw_multi_aff_list_size(get()); return res; } pw_multi_aff_list pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_pw_multi_aff_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::pw_qpolynomial pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr) { return pw_qpolynomial(ptr); } pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr) { ptr = isl_pw_qpolynomial_copy(ptr); return pw_qpolynomial(ptr); } pw_qpolynomial::pw_qpolynomial() : ptr(nullptr) {} pw_qpolynomial::pw_qpolynomial(const pw_qpolynomial &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_qpolynomial::pw_qpolynomial(std::nullptr_t) : ptr(nullptr) {} pw_qpolynomial::pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr) : ptr(ptr) {} pw_qpolynomial::pw_qpolynomial(ctx ctx, const std::string &str) { auto res = isl_pw_qpolynomial_read_from_str(ctx.release(), str.c_str()); ptr = res; } pw_qpolynomial &pw_qpolynomial::operator=(pw_qpolynomial obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_qpolynomial::~pw_qpolynomial() { if (ptr) isl_pw_qpolynomial_free(ptr); } __isl_give isl_pw_qpolynomial *pw_qpolynomial::copy() const & { return isl_pw_qpolynomial_copy(ptr); } __isl_keep isl_pw_qpolynomial *pw_qpolynomial::get() const { return ptr; } __isl_give isl_pw_qpolynomial *pw_qpolynomial::release() { isl_pw_qpolynomial *tmp = ptr; ptr = nullptr; return tmp; } bool pw_qpolynomial::is_null() const { return ptr == nullptr; } pw_qpolynomial::operator bool() const { return !is_null(); } ctx pw_qpolynomial::get_ctx() const { return ctx(isl_pw_qpolynomial_get_ctx(ptr)); } std::string pw_qpolynomial::to_str() const { char *Tmp = isl_pw_qpolynomial_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void pw_qpolynomial::dump() const { isl_pw_qpolynomial_dump(get()); } pw_qpolynomial pw_qpolynomial::add(pw_qpolynomial pwqp2) const { auto res = isl_pw_qpolynomial_add(copy(), pwqp2.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::add_dims(isl::dim type, unsigned int n) const { auto res = isl_pw_qpolynomial_add_dims(copy(), static_cast(type), n); return manage(res); } pw_qpolynomial pw_qpolynomial::alloc(set set, qpolynomial qp) { auto res = isl_pw_qpolynomial_alloc(set.release(), qp.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::coalesce() const { auto res = isl_pw_qpolynomial_coalesce(copy()); return manage(res); } unsigned int pw_qpolynomial::dim(isl::dim type) const { auto res = isl_pw_qpolynomial_dim(get(), static_cast(type)); return res; } set pw_qpolynomial::domain() const { auto res = isl_pw_qpolynomial_domain(copy()); return manage(res); } pw_qpolynomial pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_qpolynomial_drop_dims(copy(), static_cast(type), first, n); return manage(res); } pw_qpolynomial pw_qpolynomial::drop_unused_params() const { auto res = isl_pw_qpolynomial_drop_unused_params(copy()); return manage(res); } val pw_qpolynomial::eval(point pnt) const { auto res = isl_pw_qpolynomial_eval(copy(), pnt.release()); return manage(res); } int pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_pw_qpolynomial_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } pw_qpolynomial pw_qpolynomial::fix_val(isl::dim type, unsigned int n, val v) const { auto res = isl_pw_qpolynomial_fix_val(copy(), static_cast(type), n, v.release()); return manage(res); } stat pw_qpolynomial::foreach_piece(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat { auto *data = static_cast(arg_2); stat ret = (*data->func)(manage(arg_0), manage(arg_1)); return ret.release(); }; auto res = isl_pw_qpolynomial_foreach_piece(get(), fn_lambda, &fn_data); return manage(res); } pw_qpolynomial pw_qpolynomial::from_pw_aff(pw_aff pwaff) { auto res = isl_pw_qpolynomial_from_pw_aff(pwaff.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::from_qpolynomial(qpolynomial qp) { auto res = isl_pw_qpolynomial_from_qpolynomial(qp.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::from_range() const { auto res = isl_pw_qpolynomial_from_range(copy()); return manage(res); } space pw_qpolynomial::get_domain_space() const { auto res = isl_pw_qpolynomial_get_domain_space(get()); return manage(res); } space pw_qpolynomial::get_space() const { auto res = isl_pw_qpolynomial_get_space(get()); return manage(res); } pw_qpolynomial pw_qpolynomial::gist(set context) const { auto res = isl_pw_qpolynomial_gist(copy(), context.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::gist_params(set context) const { auto res = isl_pw_qpolynomial_gist_params(copy(), context.release()); return manage(res); } boolean pw_qpolynomial::has_equal_space(const pw_qpolynomial &pwqp2) const { auto res = isl_pw_qpolynomial_has_equal_space(get(), pwqp2.get()); return manage(res); } pw_qpolynomial pw_qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_qpolynomial_insert_dims(copy(), static_cast(type), first, n); return manage(res); } pw_qpolynomial pw_qpolynomial::intersect_domain(set set) const { auto res = isl_pw_qpolynomial_intersect_domain(copy(), set.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::intersect_params(set set) const { auto res = isl_pw_qpolynomial_intersect_params(copy(), set.release()); return manage(res); } boolean pw_qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_qpolynomial_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean pw_qpolynomial::involves_nan() const { auto res = isl_pw_qpolynomial_involves_nan(get()); return manage(res); } boolean pw_qpolynomial::is_zero() const { auto res = isl_pw_qpolynomial_is_zero(get()); return manage(res); } val pw_qpolynomial::max() const { auto res = isl_pw_qpolynomial_max(copy()); return manage(res); } val pw_qpolynomial::min() const { auto res = isl_pw_qpolynomial_min(copy()); return manage(res); } pw_qpolynomial pw_qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_pw_qpolynomial_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } pw_qpolynomial pw_qpolynomial::mul(pw_qpolynomial pwqp2) const { auto res = isl_pw_qpolynomial_mul(copy(), pwqp2.release()); return manage(res); } int pw_qpolynomial::n_piece() const { auto res = isl_pw_qpolynomial_n_piece(get()); return res; } pw_qpolynomial pw_qpolynomial::neg() const { auto res = isl_pw_qpolynomial_neg(copy()); return manage(res); } boolean pw_qpolynomial::plain_is_equal(const pw_qpolynomial &pwqp2) const { auto res = isl_pw_qpolynomial_plain_is_equal(get(), pwqp2.get()); return manage(res); } pw_qpolynomial pw_qpolynomial::pow(unsigned int exponent) const { auto res = isl_pw_qpolynomial_pow(copy(), exponent); return manage(res); } pw_qpolynomial pw_qpolynomial::project_domain_on_params() const { auto res = isl_pw_qpolynomial_project_domain_on_params(copy()); return manage(res); } pw_qpolynomial pw_qpolynomial::reset_domain_space(space dim) const { auto res = isl_pw_qpolynomial_reset_domain_space(copy(), dim.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::reset_user() const { auto res = isl_pw_qpolynomial_reset_user(copy()); return manage(res); } pw_qpolynomial pw_qpolynomial::scale_down_val(val v) const { auto res = isl_pw_qpolynomial_scale_down_val(copy(), v.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::scale_val(val v) const { auto res = isl_pw_qpolynomial_scale_val(copy(), v.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::split_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_pw_qpolynomial_split_dims(copy(), static_cast(type), first, n); return manage(res); } pw_qpolynomial pw_qpolynomial::split_periods(int max_periods) const { auto res = isl_pw_qpolynomial_split_periods(copy(), max_periods); return manage(res); } pw_qpolynomial pw_qpolynomial::sub(pw_qpolynomial pwqp2) const { auto res = isl_pw_qpolynomial_sub(copy(), pwqp2.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::subtract_domain(set set) const { auto res = isl_pw_qpolynomial_subtract_domain(copy(), set.release()); return manage(res); } pw_qpolynomial pw_qpolynomial::to_polynomial(int sign) const { auto res = isl_pw_qpolynomial_to_polynomial(copy(), sign); return manage(res); } pw_qpolynomial pw_qpolynomial::zero(space dim) { auto res = isl_pw_qpolynomial_zero(dim.release()); return manage(res); } // implementations for isl::pw_qpolynomial_fold_list pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr) { return pw_qpolynomial_fold_list(ptr); } pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr) { ptr = isl_pw_qpolynomial_fold_list_copy(ptr); return pw_qpolynomial_fold_list(ptr); } pw_qpolynomial_fold_list::pw_qpolynomial_fold_list() : ptr(nullptr) {} pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(std::nullptr_t) : ptr(nullptr) {} pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr) : ptr(ptr) {} pw_qpolynomial_fold_list &pw_qpolynomial_fold_list::operator=(pw_qpolynomial_fold_list obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_qpolynomial_fold_list::~pw_qpolynomial_fold_list() { if (ptr) isl_pw_qpolynomial_fold_list_free(ptr); } __isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::copy() const & { return isl_pw_qpolynomial_fold_list_copy(ptr); } __isl_keep isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::get() const { return ptr; } __isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::release() { isl_pw_qpolynomial_fold_list *tmp = ptr; ptr = nullptr; return tmp; } bool pw_qpolynomial_fold_list::is_null() const { return ptr == nullptr; } pw_qpolynomial_fold_list::operator bool() const { return !is_null(); } ctx pw_qpolynomial_fold_list::get_ctx() const { return ctx(isl_pw_qpolynomial_fold_list_get_ctx(ptr)); } void pw_qpolynomial_fold_list::dump() const { isl_pw_qpolynomial_fold_list_dump(get()); } // implementations for isl::pw_qpolynomial_list pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr) { return pw_qpolynomial_list(ptr); } pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr) { ptr = isl_pw_qpolynomial_list_copy(ptr); return pw_qpolynomial_list(ptr); } pw_qpolynomial_list::pw_qpolynomial_list() : ptr(nullptr) {} pw_qpolynomial_list::pw_qpolynomial_list(const pw_qpolynomial_list &obj) : ptr(nullptr) { ptr = obj.copy(); } pw_qpolynomial_list::pw_qpolynomial_list(std::nullptr_t) : ptr(nullptr) {} pw_qpolynomial_list::pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr) : ptr(ptr) {} pw_qpolynomial_list &pw_qpolynomial_list::operator=(pw_qpolynomial_list obj) { std::swap(this->ptr, obj.ptr); return *this; } pw_qpolynomial_list::~pw_qpolynomial_list() { if (ptr) isl_pw_qpolynomial_list_free(ptr); } __isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::copy() const & { return isl_pw_qpolynomial_list_copy(ptr); } __isl_keep isl_pw_qpolynomial_list *pw_qpolynomial_list::get() const { return ptr; } __isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::release() { isl_pw_qpolynomial_list *tmp = ptr; ptr = nullptr; return tmp; } bool pw_qpolynomial_list::is_null() const { return ptr == nullptr; } pw_qpolynomial_list::operator bool() const { return !is_null(); } ctx pw_qpolynomial_list::get_ctx() const { return ctx(isl_pw_qpolynomial_list_get_ctx(ptr)); } void pw_qpolynomial_list::dump() const { isl_pw_qpolynomial_list_dump(get()); } pw_qpolynomial_list pw_qpolynomial_list::add(pw_qpolynomial el) const { auto res = isl_pw_qpolynomial_list_add(copy(), el.release()); return manage(res); } pw_qpolynomial_list pw_qpolynomial_list::alloc(ctx ctx, int n) { auto res = isl_pw_qpolynomial_list_alloc(ctx.release(), n); return manage(res); } pw_qpolynomial_list pw_qpolynomial_list::concat(pw_qpolynomial_list list2) const { auto res = isl_pw_qpolynomial_list_concat(copy(), list2.release()); return manage(res); } pw_qpolynomial_list pw_qpolynomial_list::drop(unsigned int first, unsigned int n) const { auto res = isl_pw_qpolynomial_list_drop(copy(), first, n); return manage(res); } stat pw_qpolynomial_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_pw_qpolynomial_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } pw_qpolynomial_list pw_qpolynomial_list::from_pw_qpolynomial(pw_qpolynomial el) { auto res = isl_pw_qpolynomial_list_from_pw_qpolynomial(el.release()); return manage(res); } pw_qpolynomial pw_qpolynomial_list::get_at(int index) const { auto res = isl_pw_qpolynomial_list_get_at(get(), index); return manage(res); } pw_qpolynomial pw_qpolynomial_list::get_pw_qpolynomial(int index) const { auto res = isl_pw_qpolynomial_list_get_pw_qpolynomial(get(), index); return manage(res); } pw_qpolynomial_list pw_qpolynomial_list::insert(unsigned int pos, pw_qpolynomial el) const { auto res = isl_pw_qpolynomial_list_insert(copy(), pos, el.release()); return manage(res); } int pw_qpolynomial_list::n_pw_qpolynomial() const { auto res = isl_pw_qpolynomial_list_n_pw_qpolynomial(get()); return res; } pw_qpolynomial_list pw_qpolynomial_list::reverse() const { auto res = isl_pw_qpolynomial_list_reverse(copy()); return manage(res); } pw_qpolynomial_list pw_qpolynomial_list::set_pw_qpolynomial(int index, pw_qpolynomial el) const { auto res = isl_pw_qpolynomial_list_set_pw_qpolynomial(copy(), index, el.release()); return manage(res); } int pw_qpolynomial_list::size() const { auto res = isl_pw_qpolynomial_list_size(get()); return res; } pw_qpolynomial_list pw_qpolynomial_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_pw_qpolynomial_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::qpolynomial qpolynomial manage(__isl_take isl_qpolynomial *ptr) { return qpolynomial(ptr); } qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr) { ptr = isl_qpolynomial_copy(ptr); return qpolynomial(ptr); } qpolynomial::qpolynomial() : ptr(nullptr) {} qpolynomial::qpolynomial(const qpolynomial &obj) : ptr(nullptr) { ptr = obj.copy(); } qpolynomial::qpolynomial(std::nullptr_t) : ptr(nullptr) {} qpolynomial::qpolynomial(__isl_take isl_qpolynomial *ptr) : ptr(ptr) {} qpolynomial &qpolynomial::operator=(qpolynomial obj) { std::swap(this->ptr, obj.ptr); return *this; } qpolynomial::~qpolynomial() { if (ptr) isl_qpolynomial_free(ptr); } __isl_give isl_qpolynomial *qpolynomial::copy() const & { return isl_qpolynomial_copy(ptr); } __isl_keep isl_qpolynomial *qpolynomial::get() const { return ptr; } __isl_give isl_qpolynomial *qpolynomial::release() { isl_qpolynomial *tmp = ptr; ptr = nullptr; return tmp; } bool qpolynomial::is_null() const { return ptr == nullptr; } qpolynomial::operator bool() const { return !is_null(); } ctx qpolynomial::get_ctx() const { return ctx(isl_qpolynomial_get_ctx(ptr)); } void qpolynomial::dump() const { isl_qpolynomial_dump(get()); } qpolynomial qpolynomial::add(qpolynomial qp2) const { auto res = isl_qpolynomial_add(copy(), qp2.release()); return manage(res); } qpolynomial qpolynomial::add_dims(isl::dim type, unsigned int n) const { auto res = isl_qpolynomial_add_dims(copy(), static_cast(type), n); return manage(res); } qpolynomial qpolynomial::align_params(space model) const { auto res = isl_qpolynomial_align_params(copy(), model.release()); return manage(res); } stat qpolynomial::as_polynomial_on_domain(const basic_set &bset, const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_basic_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat { auto *data = static_cast(arg_2); stat ret = (*data->func)(manage(arg_0), manage(arg_1)); return ret.release(); }; auto res = isl_qpolynomial_as_polynomial_on_domain(get(), bset.get(), fn_lambda, &fn_data); return manage(res); } unsigned int qpolynomial::dim(isl::dim type) const { auto res = isl_qpolynomial_dim(get(), static_cast(type)); return res; } qpolynomial qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_qpolynomial_drop_dims(copy(), static_cast(type), first, n); return manage(res); } val qpolynomial::eval(point pnt) const { auto res = isl_qpolynomial_eval(copy(), pnt.release()); return manage(res); } stat qpolynomial::foreach_term(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_term *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_qpolynomial_foreach_term(get(), fn_lambda, &fn_data); return manage(res); } qpolynomial qpolynomial::from_aff(aff aff) { auto res = isl_qpolynomial_from_aff(aff.release()); return manage(res); } qpolynomial qpolynomial::from_constraint(constraint c, isl::dim type, unsigned int pos) { auto res = isl_qpolynomial_from_constraint(c.release(), static_cast(type), pos); return manage(res); } qpolynomial qpolynomial::from_term(term term) { auto res = isl_qpolynomial_from_term(term.release()); return manage(res); } val qpolynomial::get_constant_val() const { auto res = isl_qpolynomial_get_constant_val(get()); return manage(res); } space qpolynomial::get_domain_space() const { auto res = isl_qpolynomial_get_domain_space(get()); return manage(res); } space qpolynomial::get_space() const { auto res = isl_qpolynomial_get_space(get()); return manage(res); } qpolynomial qpolynomial::gist(set context) const { auto res = isl_qpolynomial_gist(copy(), context.release()); return manage(res); } qpolynomial qpolynomial::gist_params(set context) const { auto res = isl_qpolynomial_gist_params(copy(), context.release()); return manage(res); } qpolynomial qpolynomial::homogenize() const { auto res = isl_qpolynomial_homogenize(copy()); return manage(res); } qpolynomial qpolynomial::infty_on_domain(space dim) { auto res = isl_qpolynomial_infty_on_domain(dim.release()); return manage(res); } qpolynomial qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_qpolynomial_insert_dims(copy(), static_cast(type), first, n); return manage(res); } boolean qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_qpolynomial_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean qpolynomial::is_infty() const { auto res = isl_qpolynomial_is_infty(get()); return manage(res); } boolean qpolynomial::is_nan() const { auto res = isl_qpolynomial_is_nan(get()); return manage(res); } boolean qpolynomial::is_neginfty() const { auto res = isl_qpolynomial_is_neginfty(get()); return manage(res); } boolean qpolynomial::is_zero() const { auto res = isl_qpolynomial_is_zero(get()); return manage(res); } qpolynomial qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_qpolynomial_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } qpolynomial qpolynomial::mul(qpolynomial qp2) const { auto res = isl_qpolynomial_mul(copy(), qp2.release()); return manage(res); } qpolynomial qpolynomial::nan_on_domain(space dim) { auto res = isl_qpolynomial_nan_on_domain(dim.release()); return manage(res); } qpolynomial qpolynomial::neg() const { auto res = isl_qpolynomial_neg(copy()); return manage(res); } qpolynomial qpolynomial::neginfty_on_domain(space dim) { auto res = isl_qpolynomial_neginfty_on_domain(dim.release()); return manage(res); } qpolynomial qpolynomial::one_on_domain(space dim) { auto res = isl_qpolynomial_one_on_domain(dim.release()); return manage(res); } boolean qpolynomial::plain_is_equal(const qpolynomial &qp2) const { auto res = isl_qpolynomial_plain_is_equal(get(), qp2.get()); return manage(res); } qpolynomial qpolynomial::pow(unsigned int power) const { auto res = isl_qpolynomial_pow(copy(), power); return manage(res); } qpolynomial qpolynomial::project_domain_on_params() const { auto res = isl_qpolynomial_project_domain_on_params(copy()); return manage(res); } qpolynomial qpolynomial::scale_down_val(val v) const { auto res = isl_qpolynomial_scale_down_val(copy(), v.release()); return manage(res); } qpolynomial qpolynomial::scale_val(val v) const { auto res = isl_qpolynomial_scale_val(copy(), v.release()); return manage(res); } int qpolynomial::sgn() const { auto res = isl_qpolynomial_sgn(get()); return res; } qpolynomial qpolynomial::sub(qpolynomial qp2) const { auto res = isl_qpolynomial_sub(copy(), qp2.release()); return manage(res); } qpolynomial qpolynomial::val_on_domain(space space, val val) { auto res = isl_qpolynomial_val_on_domain(space.release(), val.release()); return manage(res); } qpolynomial qpolynomial::var_on_domain(space dim, isl::dim type, unsigned int pos) { auto res = isl_qpolynomial_var_on_domain(dim.release(), static_cast(type), pos); return manage(res); } qpolynomial qpolynomial::zero_on_domain(space dim) { auto res = isl_qpolynomial_zero_on_domain(dim.release()); return manage(res); } // implementations for isl::schedule schedule manage(__isl_take isl_schedule *ptr) { return schedule(ptr); } schedule manage_copy(__isl_keep isl_schedule *ptr) { ptr = isl_schedule_copy(ptr); return schedule(ptr); } schedule::schedule() : ptr(nullptr) {} schedule::schedule(const schedule &obj) : ptr(nullptr) { ptr = obj.copy(); } schedule::schedule(std::nullptr_t) : ptr(nullptr) {} schedule::schedule(__isl_take isl_schedule *ptr) : ptr(ptr) {} schedule::schedule(ctx ctx, const std::string &str) { auto res = isl_schedule_read_from_str(ctx.release(), str.c_str()); ptr = res; } schedule &schedule::operator=(schedule obj) { std::swap(this->ptr, obj.ptr); return *this; } schedule::~schedule() { if (ptr) isl_schedule_free(ptr); } __isl_give isl_schedule *schedule::copy() const & { return isl_schedule_copy(ptr); } __isl_keep isl_schedule *schedule::get() const { return ptr; } __isl_give isl_schedule *schedule::release() { isl_schedule *tmp = ptr; ptr = nullptr; return tmp; } bool schedule::is_null() const { return ptr == nullptr; } schedule::operator bool() const { return !is_null(); } ctx schedule::get_ctx() const { return ctx(isl_schedule_get_ctx(ptr)); } std::string schedule::to_str() const { char *Tmp = isl_schedule_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void schedule::dump() const { isl_schedule_dump(get()); } schedule schedule::align_params(space space) const { auto res = isl_schedule_align_params(copy(), space.release()); return manage(res); } schedule schedule::empty(space space) { auto res = isl_schedule_empty(space.release()); return manage(res); } schedule schedule::from_domain(union_set domain) { auto res = isl_schedule_from_domain(domain.release()); return manage(res); } union_set schedule::get_domain() const { auto res = isl_schedule_get_domain(get()); return manage(res); } union_map schedule::get_map() const { auto res = isl_schedule_get_map(get()); return manage(res); } schedule_node schedule::get_root() const { auto res = isl_schedule_get_root(get()); return manage(res); } schedule schedule::gist_domain_params(set context) const { auto res = isl_schedule_gist_domain_params(copy(), context.release()); return manage(res); } schedule schedule::insert_context(set context) const { auto res = isl_schedule_insert_context(copy(), context.release()); return manage(res); } schedule schedule::insert_guard(set guard) const { auto res = isl_schedule_insert_guard(copy(), guard.release()); return manage(res); } schedule schedule::insert_partial_schedule(multi_union_pw_aff partial) const { auto res = isl_schedule_insert_partial_schedule(copy(), partial.release()); return manage(res); } schedule schedule::intersect_domain(union_set domain) const { auto res = isl_schedule_intersect_domain(copy(), domain.release()); return manage(res); } boolean schedule::plain_is_equal(const schedule &schedule2) const { auto res = isl_schedule_plain_is_equal(get(), schedule2.get()); return manage(res); } schedule schedule::pullback(union_pw_multi_aff upma) const { auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release()); return manage(res); } schedule schedule::reset_user() const { auto res = isl_schedule_reset_user(copy()); return manage(res); } schedule schedule::sequence(schedule schedule2) const { auto res = isl_schedule_sequence(copy(), schedule2.release()); return manage(res); } // implementations for isl::schedule_constraints schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) { return schedule_constraints(ptr); } schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) { ptr = isl_schedule_constraints_copy(ptr); return schedule_constraints(ptr); } schedule_constraints::schedule_constraints() : ptr(nullptr) {} schedule_constraints::schedule_constraints(const schedule_constraints &obj) : ptr(nullptr) { ptr = obj.copy(); } schedule_constraints::schedule_constraints(std::nullptr_t) : ptr(nullptr) {} schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr) : ptr(ptr) {} schedule_constraints::schedule_constraints(ctx ctx, const std::string &str) { auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str()); ptr = res; } schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) { std::swap(this->ptr, obj.ptr); return *this; } schedule_constraints::~schedule_constraints() { if (ptr) isl_schedule_constraints_free(ptr); } __isl_give isl_schedule_constraints *schedule_constraints::copy() const & { return isl_schedule_constraints_copy(ptr); } __isl_keep isl_schedule_constraints *schedule_constraints::get() const { return ptr; } __isl_give isl_schedule_constraints *schedule_constraints::release() { isl_schedule_constraints *tmp = ptr; ptr = nullptr; return tmp; } bool schedule_constraints::is_null() const { return ptr == nullptr; } schedule_constraints::operator bool() const { return !is_null(); } ctx schedule_constraints::get_ctx() const { return ctx(isl_schedule_constraints_get_ctx(ptr)); } std::string schedule_constraints::to_str() const { char *Tmp = isl_schedule_constraints_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void schedule_constraints::dump() const { isl_schedule_constraints_dump(get()); } schedule_constraints schedule_constraints::apply(union_map umap) const { auto res = isl_schedule_constraints_apply(copy(), umap.release()); return manage(res); } schedule schedule_constraints::compute_schedule() const { auto res = isl_schedule_constraints_compute_schedule(copy()); return manage(res); } union_map schedule_constraints::get_coincidence() const { auto res = isl_schedule_constraints_get_coincidence(get()); return manage(res); } union_map schedule_constraints::get_conditional_validity() const { auto res = isl_schedule_constraints_get_conditional_validity(get()); return manage(res); } union_map schedule_constraints::get_conditional_validity_condition() const { auto res = isl_schedule_constraints_get_conditional_validity_condition(get()); return manage(res); } set schedule_constraints::get_context() const { auto res = isl_schedule_constraints_get_context(get()); return manage(res); } union_set schedule_constraints::get_domain() const { auto res = isl_schedule_constraints_get_domain(get()); return manage(res); } union_map schedule_constraints::get_proximity() const { auto res = isl_schedule_constraints_get_proximity(get()); return manage(res); } union_map schedule_constraints::get_validity() const { auto res = isl_schedule_constraints_get_validity(get()); return manage(res); } schedule_constraints schedule_constraints::on_domain(union_set domain) { auto res = isl_schedule_constraints_on_domain(domain.release()); return manage(res); } schedule_constraints schedule_constraints::set_coincidence(union_map coincidence) const { auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release()); return manage(res); } schedule_constraints schedule_constraints::set_conditional_validity(union_map condition, union_map validity) const { auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release()); return manage(res); } schedule_constraints schedule_constraints::set_context(set context) const { auto res = isl_schedule_constraints_set_context(copy(), context.release()); return manage(res); } schedule_constraints schedule_constraints::set_proximity(union_map proximity) const { auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release()); return manage(res); } schedule_constraints schedule_constraints::set_validity(union_map validity) const { auto res = isl_schedule_constraints_set_validity(copy(), validity.release()); return manage(res); } // implementations for isl::schedule_node schedule_node manage(__isl_take isl_schedule_node *ptr) { return schedule_node(ptr); } schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) { ptr = isl_schedule_node_copy(ptr); return schedule_node(ptr); } schedule_node::schedule_node() : ptr(nullptr) {} schedule_node::schedule_node(const schedule_node &obj) : ptr(nullptr) { ptr = obj.copy(); } schedule_node::schedule_node(std::nullptr_t) : ptr(nullptr) {} schedule_node::schedule_node(__isl_take isl_schedule_node *ptr) : ptr(ptr) {} schedule_node &schedule_node::operator=(schedule_node obj) { std::swap(this->ptr, obj.ptr); return *this; } schedule_node::~schedule_node() { if (ptr) isl_schedule_node_free(ptr); } __isl_give isl_schedule_node *schedule_node::copy() const & { return isl_schedule_node_copy(ptr); } __isl_keep isl_schedule_node *schedule_node::get() const { return ptr; } __isl_give isl_schedule_node *schedule_node::release() { isl_schedule_node *tmp = ptr; ptr = nullptr; return tmp; } bool schedule_node::is_null() const { return ptr == nullptr; } schedule_node::operator bool() const { return !is_null(); } ctx schedule_node::get_ctx() const { return ctx(isl_schedule_node_get_ctx(ptr)); } std::string schedule_node::to_str() const { char *Tmp = isl_schedule_node_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void schedule_node::dump() const { isl_schedule_node_dump(get()); } schedule_node schedule_node::align_params(space space) const { auto res = isl_schedule_node_align_params(copy(), space.release()); return manage(res); } schedule_node schedule_node::ancestor(int generation) const { auto res = isl_schedule_node_ancestor(copy(), generation); return manage(res); } boolean schedule_node::band_member_get_coincident(int pos) const { auto res = isl_schedule_node_band_member_get_coincident(get(), pos); return manage(res); } schedule_node schedule_node::band_member_set_coincident(int pos, int coincident) const { auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident); return manage(res); } schedule_node schedule_node::band_set_ast_build_options(union_set options) const { auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release()); return manage(res); } schedule_node schedule_node::child(int pos) const { auto res = isl_schedule_node_child(copy(), pos); return manage(res); } set schedule_node::context_get_context() const { auto res = isl_schedule_node_context_get_context(get()); return manage(res); } schedule_node schedule_node::cut() const { auto res = isl_schedule_node_cut(copy()); return manage(res); } union_set schedule_node::domain_get_domain() const { auto res = isl_schedule_node_domain_get_domain(get()); return manage(res); } union_pw_multi_aff schedule_node::expansion_get_contraction() const { auto res = isl_schedule_node_expansion_get_contraction(get()); return manage(res); } union_map schedule_node::expansion_get_expansion() const { auto res = isl_schedule_node_expansion_get_expansion(get()); return manage(res); } union_map schedule_node::extension_get_extension() const { auto res = isl_schedule_node_extension_get_extension(get()); return manage(res); } union_set schedule_node::filter_get_filter() const { auto res = isl_schedule_node_filter_get_filter(get()); return manage(res); } schedule_node schedule_node::first_child() const { auto res = isl_schedule_node_first_child(copy()); return manage(res); } stat schedule_node::foreach_ancestor_top_down(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage_copy(arg_0)); return ret.release(); }; auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data); return manage(res); } schedule_node schedule_node::from_domain(union_set domain) { auto res = isl_schedule_node_from_domain(domain.release()); return manage(res); } schedule_node schedule_node::from_extension(union_map extension) { auto res = isl_schedule_node_from_extension(extension.release()); return manage(res); } int schedule_node::get_ancestor_child_position(const schedule_node &ancestor) const { auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get()); return res; } schedule_node schedule_node::get_child(int pos) const { auto res = isl_schedule_node_get_child(get(), pos); return manage(res); } int schedule_node::get_child_position() const { auto res = isl_schedule_node_get_child_position(get()); return res; } union_set schedule_node::get_domain() const { auto res = isl_schedule_node_get_domain(get()); return manage(res); } multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const { auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get()); return manage(res); } union_map schedule_node::get_prefix_schedule_relation() const { auto res = isl_schedule_node_get_prefix_schedule_relation(get()); return manage(res); } union_map schedule_node::get_prefix_schedule_union_map() const { auto res = isl_schedule_node_get_prefix_schedule_union_map(get()); return manage(res); } union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const { auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get()); return manage(res); } schedule schedule_node::get_schedule() const { auto res = isl_schedule_node_get_schedule(get()); return manage(res); } int schedule_node::get_schedule_depth() const { auto res = isl_schedule_node_get_schedule_depth(get()); return res; } schedule_node schedule_node::get_shared_ancestor(const schedule_node &node2) const { auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get()); return manage(res); } union_pw_multi_aff schedule_node::get_subtree_contraction() const { auto res = isl_schedule_node_get_subtree_contraction(get()); return manage(res); } union_map schedule_node::get_subtree_expansion() const { auto res = isl_schedule_node_get_subtree_expansion(get()); return manage(res); } union_map schedule_node::get_subtree_schedule_union_map() const { auto res = isl_schedule_node_get_subtree_schedule_union_map(get()); return manage(res); } int schedule_node::get_tree_depth() const { auto res = isl_schedule_node_get_tree_depth(get()); return res; } union_set schedule_node::get_universe_domain() const { auto res = isl_schedule_node_get_universe_domain(get()); return manage(res); } schedule_node schedule_node::graft_after(schedule_node graft) const { auto res = isl_schedule_node_graft_after(copy(), graft.release()); return manage(res); } schedule_node schedule_node::graft_before(schedule_node graft) const { auto res = isl_schedule_node_graft_before(copy(), graft.release()); return manage(res); } schedule_node schedule_node::group(id group_id) const { auto res = isl_schedule_node_group(copy(), group_id.release()); return manage(res); } set schedule_node::guard_get_guard() const { auto res = isl_schedule_node_guard_get_guard(get()); return manage(res); } boolean schedule_node::has_children() const { auto res = isl_schedule_node_has_children(get()); return manage(res); } boolean schedule_node::has_next_sibling() const { auto res = isl_schedule_node_has_next_sibling(get()); return manage(res); } boolean schedule_node::has_parent() const { auto res = isl_schedule_node_has_parent(get()); return manage(res); } boolean schedule_node::has_previous_sibling() const { auto res = isl_schedule_node_has_previous_sibling(get()); return manage(res); } schedule_node schedule_node::insert_context(set context) const { auto res = isl_schedule_node_insert_context(copy(), context.release()); return manage(res); } schedule_node schedule_node::insert_filter(union_set filter) const { auto res = isl_schedule_node_insert_filter(copy(), filter.release()); return manage(res); } schedule_node schedule_node::insert_guard(set context) const { auto res = isl_schedule_node_insert_guard(copy(), context.release()); return manage(res); } schedule_node schedule_node::insert_mark(id mark) const { auto res = isl_schedule_node_insert_mark(copy(), mark.release()); return manage(res); } schedule_node schedule_node::insert_partial_schedule(multi_union_pw_aff schedule) const { auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release()); return manage(res); } schedule_node schedule_node::insert_sequence(union_set_list filters) const { auto res = isl_schedule_node_insert_sequence(copy(), filters.release()); return manage(res); } schedule_node schedule_node::insert_set(union_set_list filters) const { auto res = isl_schedule_node_insert_set(copy(), filters.release()); return manage(res); } boolean schedule_node::is_equal(const schedule_node &node2) const { auto res = isl_schedule_node_is_equal(get(), node2.get()); return manage(res); } boolean schedule_node::is_subtree_anchored() const { auto res = isl_schedule_node_is_subtree_anchored(get()); return manage(res); } id schedule_node::mark_get_id() const { auto res = isl_schedule_node_mark_get_id(get()); return manage(res); } int schedule_node::n_children() const { auto res = isl_schedule_node_n_children(get()); return res; } schedule_node schedule_node::next_sibling() const { auto res = isl_schedule_node_next_sibling(copy()); return manage(res); } schedule_node schedule_node::order_after(union_set filter) const { auto res = isl_schedule_node_order_after(copy(), filter.release()); return manage(res); } schedule_node schedule_node::order_before(union_set filter) const { auto res = isl_schedule_node_order_before(copy(), filter.release()); return manage(res); } schedule_node schedule_node::parent() const { auto res = isl_schedule_node_parent(copy()); return manage(res); } schedule_node schedule_node::previous_sibling() const { auto res = isl_schedule_node_previous_sibling(copy()); return manage(res); } schedule_node schedule_node::reset_user() const { auto res = isl_schedule_node_reset_user(copy()); return manage(res); } schedule_node schedule_node::root() const { auto res = isl_schedule_node_root(copy()); return manage(res); } schedule_node schedule_node::sequence_splice_child(int pos) const { auto res = isl_schedule_node_sequence_splice_child(copy(), pos); return manage(res); } // implementations for isl::set set manage(__isl_take isl_set *ptr) { return set(ptr); } set manage_copy(__isl_keep isl_set *ptr) { ptr = isl_set_copy(ptr); return set(ptr); } set::set() : ptr(nullptr) {} set::set(const set &obj) : ptr(nullptr) { ptr = obj.copy(); } set::set(std::nullptr_t) : ptr(nullptr) {} set::set(__isl_take isl_set *ptr) : ptr(ptr) {} set::set(ctx ctx, const std::string &str) { auto res = isl_set_read_from_str(ctx.release(), str.c_str()); ptr = res; } set::set(basic_set bset) { auto res = isl_set_from_basic_set(bset.release()); ptr = res; } set::set(point pnt) { auto res = isl_set_from_point(pnt.release()); ptr = res; } set::set(union_set uset) { auto res = isl_set_from_union_set(uset.release()); ptr = res; } set &set::operator=(set obj) { std::swap(this->ptr, obj.ptr); return *this; } set::~set() { if (ptr) isl_set_free(ptr); } __isl_give isl_set *set::copy() const & { return isl_set_copy(ptr); } __isl_keep isl_set *set::get() const { return ptr; } __isl_give isl_set *set::release() { isl_set *tmp = ptr; ptr = nullptr; return tmp; } bool set::is_null() const { return ptr == nullptr; } set::operator bool() const { return !is_null(); } ctx set::get_ctx() const { return ctx(isl_set_get_ctx(ptr)); } std::string set::to_str() const { char *Tmp = isl_set_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void set::dump() const { isl_set_dump(get()); } set set::add_constraint(constraint constraint) const { auto res = isl_set_add_constraint(copy(), constraint.release()); return manage(res); } set set::add_dims(isl::dim type, unsigned int n) const { auto res = isl_set_add_dims(copy(), static_cast(type), n); return manage(res); } basic_set set::affine_hull() const { auto res = isl_set_affine_hull(copy()); return manage(res); } set set::align_params(space model) const { auto res = isl_set_align_params(copy(), model.release()); return manage(res); } set set::apply(map map) const { auto res = isl_set_apply(copy(), map.release()); return manage(res); } basic_set set::bounded_simple_hull() const { auto res = isl_set_bounded_simple_hull(copy()); return manage(res); } set set::box_from_points(point pnt1, point pnt2) { auto res = isl_set_box_from_points(pnt1.release(), pnt2.release()); return manage(res); } set set::coalesce() const { auto res = isl_set_coalesce(copy()); return manage(res); } basic_set set::coefficients() const { auto res = isl_set_coefficients(copy()); return manage(res); } set set::complement() const { auto res = isl_set_complement(copy()); return manage(res); } basic_set set::convex_hull() const { auto res = isl_set_convex_hull(copy()); return manage(res); } val set::count_val() const { auto res = isl_set_count_val(get()); return manage(res); } set set::detect_equalities() const { auto res = isl_set_detect_equalities(copy()); return manage(res); } unsigned int set::dim(isl::dim type) const { auto res = isl_set_dim(get(), static_cast(type)); return res; } boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const { auto res = isl_set_dim_has_any_lower_bound(get(), static_cast(type), pos); return manage(res); } boolean set::dim_has_any_upper_bound(isl::dim type, unsigned int pos) const { auto res = isl_set_dim_has_any_upper_bound(get(), static_cast(type), pos); return manage(res); } boolean set::dim_has_lower_bound(isl::dim type, unsigned int pos) const { auto res = isl_set_dim_has_lower_bound(get(), static_cast(type), pos); return manage(res); } boolean set::dim_has_upper_bound(isl::dim type, unsigned int pos) const { auto res = isl_set_dim_has_upper_bound(get(), static_cast(type), pos); return manage(res); } boolean set::dim_is_bounded(isl::dim type, unsigned int pos) const { auto res = isl_set_dim_is_bounded(get(), static_cast(type), pos); return manage(res); } pw_aff set::dim_max(int pos) const { auto res = isl_set_dim_max(copy(), pos); return manage(res); } pw_aff set::dim_min(int pos) const { auto res = isl_set_dim_min(copy(), pos); return manage(res); } set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast(type), first, n); return manage(res); } set set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_drop_constraints_not_involving_dims(copy(), static_cast(type), first, n); return manage(res); } set set::drop_unused_params() const { auto res = isl_set_drop_unused_params(copy()); return manage(res); } set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_eliminate(copy(), static_cast(type), first, n); return manage(res); } set set::empty(space space) { auto res = isl_set_empty(space.release()); return manage(res); } set set::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const { auto res = isl_set_equate(copy(), static_cast(type1), pos1, static_cast(type2), pos2); return manage(res); } int set::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_set_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int set::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_set_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } set set::fix_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_set_fix_si(copy(), static_cast(type), pos, value); return manage(res); } set set::fix_val(isl::dim type, unsigned int pos, val v) const { auto res = isl_set_fix_val(copy(), static_cast(type), pos, v.release()); return manage(res); } set set::flat_product(set set2) const { auto res = isl_set_flat_product(copy(), set2.release()); return manage(res); } set set::flatten() const { auto res = isl_set_flatten(copy()); return manage(res); } map set::flatten_map() const { auto res = isl_set_flatten_map(copy()); return manage(res); } int set::follows_at(const set &set2, int pos) const { auto res = isl_set_follows_at(get(), set2.get(), pos); return res; } stat set::foreach_basic_set(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data); return manage(res); } stat set::foreach_point(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data); return manage(res); } set set::from_multi_aff(multi_aff ma) { auto res = isl_set_from_multi_aff(ma.release()); return manage(res); } set set::from_multi_pw_aff(multi_pw_aff mpa) { auto res = isl_set_from_multi_pw_aff(mpa.release()); return manage(res); } set set::from_params() const { auto res = isl_set_from_params(copy()); return manage(res); } set set::from_pw_aff(pw_aff pwaff) { auto res = isl_set_from_pw_aff(pwaff.release()); return manage(res); } set set::from_pw_multi_aff(pw_multi_aff pma) { auto res = isl_set_from_pw_multi_aff(pma.release()); return manage(res); } basic_set_list set::get_basic_set_list() const { auto res = isl_set_get_basic_set_list(get()); return manage(res); } id set::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_set_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string set::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_set_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } space set::get_space() const { auto res = isl_set_get_space(get()); return manage(res); } val set::get_stride(int pos) const { auto res = isl_set_get_stride(get(), pos); return manage(res); } id set::get_tuple_id() const { auto res = isl_set_get_tuple_id(get()); return manage(res); } std::string set::get_tuple_name() const { auto res = isl_set_get_tuple_name(get()); std::string tmp(res); return tmp; } set set::gist(set context) const { auto res = isl_set_gist(copy(), context.release()); return manage(res); } set set::gist_basic_set(basic_set context) const { auto res = isl_set_gist_basic_set(copy(), context.release()); return manage(res); } set set::gist_params(set context) const { auto res = isl_set_gist_params(copy(), context.release()); return manage(res); } boolean set::has_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_set_has_dim_id(get(), static_cast(type), pos); return manage(res); } boolean set::has_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_set_has_dim_name(get(), static_cast(type), pos); return manage(res); } boolean set::has_equal_space(const set &set2) const { auto res = isl_set_has_equal_space(get(), set2.get()); return manage(res); } boolean set::has_tuple_id() const { auto res = isl_set_has_tuple_id(get()); return manage(res); } boolean set::has_tuple_name() const { auto res = isl_set_has_tuple_name(get()); return manage(res); } map set::identity() const { auto res = isl_set_identity(copy()); return manage(res); } pw_aff set::indicator_function() const { auto res = isl_set_indicator_function(copy()); return manage(res); } set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const { auto res = isl_set_insert_dims(copy(), static_cast(type), pos, n); return manage(res); } set set::intersect(set set2) const { auto res = isl_set_intersect(copy(), set2.release()); return manage(res); } set set::intersect_params(set params) const { auto res = isl_set_intersect_params(copy(), params.release()); return manage(res); } boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean set::is_bounded() const { auto res = isl_set_is_bounded(get()); return manage(res); } boolean set::is_box() const { auto res = isl_set_is_box(get()); return manage(res); } boolean set::is_disjoint(const set &set2) const { auto res = isl_set_is_disjoint(get(), set2.get()); return manage(res); } boolean set::is_empty() const { auto res = isl_set_is_empty(get()); return manage(res); } boolean set::is_equal(const set &set2) const { auto res = isl_set_is_equal(get(), set2.get()); return manage(res); } boolean set::is_params() const { auto res = isl_set_is_params(get()); return manage(res); } boolean set::is_singleton() const { auto res = isl_set_is_singleton(get()); return manage(res); } boolean set::is_strict_subset(const set &set2) const { auto res = isl_set_is_strict_subset(get(), set2.get()); return manage(res); } boolean set::is_subset(const set &set2) const { auto res = isl_set_is_subset(get(), set2.get()); return manage(res); } boolean set::is_wrapping() const { auto res = isl_set_is_wrapping(get()); return manage(res); } map set::lex_ge_set(set set2) const { auto res = isl_set_lex_ge_set(copy(), set2.release()); return manage(res); } map set::lex_gt_set(set set2) const { auto res = isl_set_lex_gt_set(copy(), set2.release()); return manage(res); } map set::lex_le_set(set set2) const { auto res = isl_set_lex_le_set(copy(), set2.release()); return manage(res); } map set::lex_lt_set(set set2) const { auto res = isl_set_lex_lt_set(copy(), set2.release()); return manage(res); } set set::lexmax() const { auto res = isl_set_lexmax(copy()); return manage(res); } pw_multi_aff set::lexmax_pw_multi_aff() const { auto res = isl_set_lexmax_pw_multi_aff(copy()); return manage(res); } set set::lexmin() const { auto res = isl_set_lexmin(copy()); return manage(res); } pw_multi_aff set::lexmin_pw_multi_aff() const { auto res = isl_set_lexmin_pw_multi_aff(copy()); return manage(res); } set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_set_lower_bound_si(copy(), static_cast(type), pos, value); return manage(res); } set set::lower_bound_val(isl::dim type, unsigned int pos, val value) const { auto res = isl_set_lower_bound_val(copy(), static_cast(type), pos, value.release()); return manage(res); } val set::max_val(const aff &obj) const { auto res = isl_set_max_val(get(), obj.get()); return manage(res); } val set::min_val(const aff &obj) const { auto res = isl_set_min_val(get(), obj.get()); return manage(res); } set set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_set_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } int set::n_basic_set() const { auto res = isl_set_n_basic_set(get()); return res; } unsigned int set::n_dim() const { auto res = isl_set_n_dim(get()); return res; } set set::nat_universe(space dim) { auto res = isl_set_nat_universe(dim.release()); return manage(res); } set set::neg() const { auto res = isl_set_neg(copy()); return manage(res); } set set::params() const { auto res = isl_set_params(copy()); return manage(res); } int set::plain_cmp(const set &set2) const { auto res = isl_set_plain_cmp(get(), set2.get()); return res; } val set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const { auto res = isl_set_plain_get_val_if_fixed(get(), static_cast(type), pos); return manage(res); } boolean set::plain_is_disjoint(const set &set2) const { auto res = isl_set_plain_is_disjoint(get(), set2.get()); return manage(res); } boolean set::plain_is_empty() const { auto res = isl_set_plain_is_empty(get()); return manage(res); } boolean set::plain_is_equal(const set &set2) const { auto res = isl_set_plain_is_equal(get(), set2.get()); return manage(res); } boolean set::plain_is_universe() const { auto res = isl_set_plain_is_universe(get()); return manage(res); } basic_set set::plain_unshifted_simple_hull() const { auto res = isl_set_plain_unshifted_simple_hull(copy()); return manage(res); } basic_set set::polyhedral_hull() const { auto res = isl_set_polyhedral_hull(copy()); return manage(res); } set set::preimage_multi_aff(multi_aff ma) const { auto res = isl_set_preimage_multi_aff(copy(), ma.release()); return manage(res); } set set::preimage_multi_pw_aff(multi_pw_aff mpa) const { auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release()); return manage(res); } set set::preimage_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release()); return manage(res); } set set::product(set set2) const { auto res = isl_set_product(copy(), set2.release()); return manage(res); } map set::project_onto_map(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_project_onto_map(copy(), static_cast(type), first, n); return manage(res); } set set::project_out(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_project_out(copy(), static_cast(type), first, n); return manage(res); } set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_remove_dims(copy(), static_cast(type), first, n); return manage(res); } set set::remove_divs() const { auto res = isl_set_remove_divs(copy()); return manage(res); } set set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_remove_divs_involving_dims(copy(), static_cast(type), first, n); return manage(res); } set set::remove_redundancies() const { auto res = isl_set_remove_redundancies(copy()); return manage(res); } set set::remove_unknown_divs() const { auto res = isl_set_remove_unknown_divs(copy()); return manage(res); } set set::reset_space(space dim) const { auto res = isl_set_reset_space(copy(), dim.release()); return manage(res); } set set::reset_tuple_id() const { auto res = isl_set_reset_tuple_id(copy()); return manage(res); } set set::reset_user() const { auto res = isl_set_reset_user(copy()); return manage(res); } basic_set set::sample() const { auto res = isl_set_sample(copy()); return manage(res); } point set::sample_point() const { auto res = isl_set_sample_point(copy()); return manage(res); } set set::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_set_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } set set::set_tuple_id(id id) const { auto res = isl_set_set_tuple_id(copy(), id.release()); return manage(res); } set set::set_tuple_name(const std::string &s) const { auto res = isl_set_set_tuple_name(copy(), s.c_str()); return manage(res); } basic_set set::simple_hull() const { auto res = isl_set_simple_hull(copy()); return manage(res); } int set::size() const { auto res = isl_set_size(get()); return res; } basic_set set::solutions() const { auto res = isl_set_solutions(copy()); return manage(res); } set set::split_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_set_split_dims(copy(), static_cast(type), first, n); return manage(res); } set set::subtract(set set2) const { auto res = isl_set_subtract(copy(), set2.release()); return manage(res); } set set::sum(set set2) const { auto res = isl_set_sum(copy(), set2.release()); return manage(res); } set set::unite(set set2) const { auto res = isl_set_union(copy(), set2.release()); return manage(res); } set set::universe(space space) { auto res = isl_set_universe(space.release()); return manage(res); } basic_set set::unshifted_simple_hull() const { auto res = isl_set_unshifted_simple_hull(copy()); return manage(res); } basic_set set::unshifted_simple_hull_from_set_list(set_list list) const { auto res = isl_set_unshifted_simple_hull_from_set_list(copy(), list.release()); return manage(res); } map set::unwrap() const { auto res = isl_set_unwrap(copy()); return manage(res); } set set::upper_bound_si(isl::dim type, unsigned int pos, int value) const { auto res = isl_set_upper_bound_si(copy(), static_cast(type), pos, value); return manage(res); } set set::upper_bound_val(isl::dim type, unsigned int pos, val value) const { auto res = isl_set_upper_bound_val(copy(), static_cast(type), pos, value.release()); return manage(res); } map set::wrapped_domain_map() const { auto res = isl_set_wrapped_domain_map(copy()); return manage(res); } // implementations for isl::set_list set_list manage(__isl_take isl_set_list *ptr) { return set_list(ptr); } set_list manage_copy(__isl_keep isl_set_list *ptr) { ptr = isl_set_list_copy(ptr); return set_list(ptr); } set_list::set_list() : ptr(nullptr) {} set_list::set_list(const set_list &obj) : ptr(nullptr) { ptr = obj.copy(); } set_list::set_list(std::nullptr_t) : ptr(nullptr) {} set_list::set_list(__isl_take isl_set_list *ptr) : ptr(ptr) {} set_list &set_list::operator=(set_list obj) { std::swap(this->ptr, obj.ptr); return *this; } set_list::~set_list() { if (ptr) isl_set_list_free(ptr); } __isl_give isl_set_list *set_list::copy() const & { return isl_set_list_copy(ptr); } __isl_keep isl_set_list *set_list::get() const { return ptr; } __isl_give isl_set_list *set_list::release() { isl_set_list *tmp = ptr; ptr = nullptr; return tmp; } bool set_list::is_null() const { return ptr == nullptr; } set_list::operator bool() const { return !is_null(); } ctx set_list::get_ctx() const { return ctx(isl_set_list_get_ctx(ptr)); } void set_list::dump() const { isl_set_list_dump(get()); } set_list set_list::add(set el) const { auto res = isl_set_list_add(copy(), el.release()); return manage(res); } set_list set_list::alloc(ctx ctx, int n) { auto res = isl_set_list_alloc(ctx.release(), n); return manage(res); } set_list set_list::concat(set_list list2) const { auto res = isl_set_list_concat(copy(), list2.release()); return manage(res); } set_list set_list::drop(unsigned int first, unsigned int n) const { auto res = isl_set_list_drop(copy(), first, n); return manage(res); } stat set_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } set_list set_list::from_set(set el) { auto res = isl_set_list_from_set(el.release()); return manage(res); } set set_list::get_at(int index) const { auto res = isl_set_list_get_at(get(), index); return manage(res); } set set_list::get_set(int index) const { auto res = isl_set_list_get_set(get(), index); return manage(res); } set_list set_list::insert(unsigned int pos, set el) const { auto res = isl_set_list_insert(copy(), pos, el.release()); return manage(res); } int set_list::n_set() const { auto res = isl_set_list_n_set(get()); return res; } set_list set_list::reverse() const { auto res = isl_set_list_reverse(copy()); return manage(res); } set_list set_list::set_set(int index, set el) const { auto res = isl_set_list_set_set(copy(), index, el.release()); return manage(res); } int set_list::size() const { auto res = isl_set_list_size(get()); return res; } set_list set_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_set_list_swap(copy(), pos1, pos2); return manage(res); } set set_list::unite() const { auto res = isl_set_list_union(copy()); return manage(res); } // implementations for isl::space space manage(__isl_take isl_space *ptr) { return space(ptr); } space manage_copy(__isl_keep isl_space *ptr) { ptr = isl_space_copy(ptr); return space(ptr); } space::space() : ptr(nullptr) {} space::space(const space &obj) : ptr(nullptr) { ptr = obj.copy(); } space::space(std::nullptr_t) : ptr(nullptr) {} space::space(__isl_take isl_space *ptr) : ptr(ptr) {} space::space(ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out) { auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out); ptr = res; } space::space(ctx ctx, unsigned int nparam, unsigned int dim) { auto res = isl_space_set_alloc(ctx.release(), nparam, dim); ptr = res; } space &space::operator=(space obj) { std::swap(this->ptr, obj.ptr); return *this; } space::~space() { if (ptr) isl_space_free(ptr); } __isl_give isl_space *space::copy() const & { return isl_space_copy(ptr); } __isl_keep isl_space *space::get() const { return ptr; } __isl_give isl_space *space::release() { isl_space *tmp = ptr; ptr = nullptr; return tmp; } bool space::is_null() const { return ptr == nullptr; } space::operator bool() const { return !is_null(); } ctx space::get_ctx() const { return ctx(isl_space_get_ctx(ptr)); } std::string space::to_str() const { char *Tmp = isl_space_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void space::dump() const { isl_space_dump(get()); } space space::add_dims(isl::dim type, unsigned int n) const { auto res = isl_space_add_dims(copy(), static_cast(type), n); return manage(res); } space space::add_param_id(id id) const { auto res = isl_space_add_param_id(copy(), id.release()); return manage(res); } space space::align_params(space dim2) const { auto res = isl_space_align_params(copy(), dim2.release()); return manage(res); } boolean space::can_curry() const { auto res = isl_space_can_curry(get()); return manage(res); } boolean space::can_range_curry() const { auto res = isl_space_can_range_curry(get()); return manage(res); } boolean space::can_uncurry() const { auto res = isl_space_can_uncurry(get()); return manage(res); } boolean space::can_zip() const { auto res = isl_space_can_zip(get()); return manage(res); } space space::curry() const { auto res = isl_space_curry(copy()); return manage(res); } unsigned int space::dim(isl::dim type) const { auto res = isl_space_dim(get(), static_cast(type)); return res; } space space::domain() const { auto res = isl_space_domain(copy()); return manage(res); } space space::domain_factor_domain() const { auto res = isl_space_domain_factor_domain(copy()); return manage(res); } space space::domain_factor_range() const { auto res = isl_space_domain_factor_range(copy()); return manage(res); } boolean space::domain_is_wrapping() const { auto res = isl_space_domain_is_wrapping(get()); return manage(res); } space space::domain_map() const { auto res = isl_space_domain_map(copy()); return manage(res); } space space::domain_product(space right) const { auto res = isl_space_domain_product(copy(), right.release()); return manage(res); } space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const { auto res = isl_space_drop_dims(copy(), static_cast(type), first, num); return manage(res); } space space::factor_domain() const { auto res = isl_space_factor_domain(copy()); return manage(res); } space space::factor_range() const { auto res = isl_space_factor_range(copy()); return manage(res); } int space::find_dim_by_id(isl::dim type, const id &id) const { auto res = isl_space_find_dim_by_id(get(), static_cast(type), id.get()); return res; } int space::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_space_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } space space::flatten_domain() const { auto res = isl_space_flatten_domain(copy()); return manage(res); } space space::flatten_range() const { auto res = isl_space_flatten_range(copy()); return manage(res); } space space::from_domain() const { auto res = isl_space_from_domain(copy()); return manage(res); } space space::from_range() const { auto res = isl_space_from_range(copy()); return manage(res); } id space::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_space_get_dim_id(get(), static_cast(type), pos); return manage(res); } std::string space::get_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_space_get_dim_name(get(), static_cast(type), pos); std::string tmp(res); return tmp; } id space::get_tuple_id(isl::dim type) const { auto res = isl_space_get_tuple_id(get(), static_cast(type)); return manage(res); } std::string space::get_tuple_name(isl::dim type) const { auto res = isl_space_get_tuple_name(get(), static_cast(type)); std::string tmp(res); return tmp; } boolean space::has_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_space_has_dim_id(get(), static_cast(type), pos); return manage(res); } boolean space::has_dim_name(isl::dim type, unsigned int pos) const { auto res = isl_space_has_dim_name(get(), static_cast(type), pos); return manage(res); } boolean space::has_equal_params(const space &space2) const { auto res = isl_space_has_equal_params(get(), space2.get()); return manage(res); } boolean space::has_equal_tuples(const space &space2) const { auto res = isl_space_has_equal_tuples(get(), space2.get()); return manage(res); } boolean space::has_tuple_id(isl::dim type) const { auto res = isl_space_has_tuple_id(get(), static_cast(type)); return manage(res); } boolean space::has_tuple_name(isl::dim type) const { auto res = isl_space_has_tuple_name(get(), static_cast(type)); return manage(res); } space space::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const { auto res = isl_space_insert_dims(copy(), static_cast(type), pos, n); return manage(res); } boolean space::is_domain(const space &space2) const { auto res = isl_space_is_domain(get(), space2.get()); return manage(res); } boolean space::is_equal(const space &space2) const { auto res = isl_space_is_equal(get(), space2.get()); return manage(res); } boolean space::is_map() const { auto res = isl_space_is_map(get()); return manage(res); } boolean space::is_params() const { auto res = isl_space_is_params(get()); return manage(res); } boolean space::is_product() const { auto res = isl_space_is_product(get()); return manage(res); } boolean space::is_range(const space &space2) const { auto res = isl_space_is_range(get(), space2.get()); return manage(res); } boolean space::is_set() const { auto res = isl_space_is_set(get()); return manage(res); } boolean space::is_wrapping() const { auto res = isl_space_is_wrapping(get()); return manage(res); } space space::join(space right) const { auto res = isl_space_join(copy(), right.release()); return manage(res); } space space::map_from_domain_and_range(space range) const { auto res = isl_space_map_from_domain_and_range(copy(), range.release()); return manage(res); } space space::map_from_set() const { auto res = isl_space_map_from_set(copy()); return manage(res); } space space::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const { auto res = isl_space_move_dims(copy(), static_cast(dst_type), dst_pos, static_cast(src_type), src_pos, n); return manage(res); } space space::params() const { auto res = isl_space_params(copy()); return manage(res); } space space::params_alloc(ctx ctx, unsigned int nparam) { auto res = isl_space_params_alloc(ctx.release(), nparam); return manage(res); } space space::product(space right) const { auto res = isl_space_product(copy(), right.release()); return manage(res); } space space::range() const { auto res = isl_space_range(copy()); return manage(res); } space space::range_curry() const { auto res = isl_space_range_curry(copy()); return manage(res); } space space::range_factor_domain() const { auto res = isl_space_range_factor_domain(copy()); return manage(res); } space space::range_factor_range() const { auto res = isl_space_range_factor_range(copy()); return manage(res); } boolean space::range_is_wrapping() const { auto res = isl_space_range_is_wrapping(get()); return manage(res); } space space::range_map() const { auto res = isl_space_range_map(copy()); return manage(res); } space space::range_product(space right) const { auto res = isl_space_range_product(copy(), right.release()); return manage(res); } space space::reset_tuple_id(isl::dim type) const { auto res = isl_space_reset_tuple_id(copy(), static_cast(type)); return manage(res); } space space::reset_user() const { auto res = isl_space_reset_user(copy()); return manage(res); } space space::reverse() const { auto res = isl_space_reverse(copy()); return manage(res); } space space::set_dim_id(isl::dim type, unsigned int pos, id id) const { auto res = isl_space_set_dim_id(copy(), static_cast(type), pos, id.release()); return manage(res); } space space::set_from_params() const { auto res = isl_space_set_from_params(copy()); return manage(res); } space space::set_tuple_id(isl::dim type, id id) const { auto res = isl_space_set_tuple_id(copy(), static_cast(type), id.release()); return manage(res); } space space::set_tuple_name(isl::dim type, const std::string &s) const { auto res = isl_space_set_tuple_name(copy(), static_cast(type), s.c_str()); return manage(res); } boolean space::tuple_is_equal(isl::dim type1, const space &space2, isl::dim type2) const { auto res = isl_space_tuple_is_equal(get(), static_cast(type1), space2.get(), static_cast(type2)); return manage(res); } space space::uncurry() const { auto res = isl_space_uncurry(copy()); return manage(res); } space space::unwrap() const { auto res = isl_space_unwrap(copy()); return manage(res); } space space::wrap() const { auto res = isl_space_wrap(copy()); return manage(res); } space space::zip() const { auto res = isl_space_zip(copy()); return manage(res); } // implementations for isl::term term manage(__isl_take isl_term *ptr) { return term(ptr); } term manage_copy(__isl_keep isl_term *ptr) { ptr = isl_term_copy(ptr); return term(ptr); } term::term() : ptr(nullptr) {} term::term(const term &obj) : ptr(nullptr) { ptr = obj.copy(); } term::term(std::nullptr_t) : ptr(nullptr) {} term::term(__isl_take isl_term *ptr) : ptr(ptr) {} term &term::operator=(term obj) { std::swap(this->ptr, obj.ptr); return *this; } term::~term() { if (ptr) isl_term_free(ptr); } __isl_give isl_term *term::copy() const & { return isl_term_copy(ptr); } __isl_keep isl_term *term::get() const { return ptr; } __isl_give isl_term *term::release() { isl_term *tmp = ptr; ptr = nullptr; return tmp; } bool term::is_null() const { return ptr == nullptr; } term::operator bool() const { return !is_null(); } ctx term::get_ctx() const { return ctx(isl_term_get_ctx(ptr)); } unsigned int term::dim(isl::dim type) const { auto res = isl_term_dim(get(), static_cast(type)); return res; } val term::get_coefficient_val() const { auto res = isl_term_get_coefficient_val(get()); return manage(res); } aff term::get_div(unsigned int pos) const { auto res = isl_term_get_div(get(), pos); return manage(res); } int term::get_exp(isl::dim type, unsigned int pos) const { auto res = isl_term_get_exp(get(), static_cast(type), pos); return res; } // implementations for isl::union_access_info union_access_info manage(__isl_take isl_union_access_info *ptr) { return union_access_info(ptr); } union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) { ptr = isl_union_access_info_copy(ptr); return union_access_info(ptr); } union_access_info::union_access_info() : ptr(nullptr) {} union_access_info::union_access_info(const union_access_info &obj) : ptr(nullptr) { ptr = obj.copy(); } union_access_info::union_access_info(std::nullptr_t) : ptr(nullptr) {} union_access_info::union_access_info(__isl_take isl_union_access_info *ptr) : ptr(ptr) {} union_access_info::union_access_info(union_map sink) { auto res = isl_union_access_info_from_sink(sink.release()); ptr = res; } union_access_info &union_access_info::operator=(union_access_info obj) { std::swap(this->ptr, obj.ptr); return *this; } union_access_info::~union_access_info() { if (ptr) isl_union_access_info_free(ptr); } __isl_give isl_union_access_info *union_access_info::copy() const & { return isl_union_access_info_copy(ptr); } __isl_keep isl_union_access_info *union_access_info::get() const { return ptr; } __isl_give isl_union_access_info *union_access_info::release() { isl_union_access_info *tmp = ptr; ptr = nullptr; return tmp; } bool union_access_info::is_null() const { return ptr == nullptr; } union_access_info::operator bool() const { return !is_null(); } ctx union_access_info::get_ctx() const { return ctx(isl_union_access_info_get_ctx(ptr)); } std::string union_access_info::to_str() const { char *Tmp = isl_union_access_info_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } union_flow union_access_info::compute_flow() const { auto res = isl_union_access_info_compute_flow(copy()); return manage(res); } union_access_info union_access_info::set_kill(union_map kill) const { auto res = isl_union_access_info_set_kill(copy(), kill.release()); return manage(res); } union_access_info union_access_info::set_may_source(union_map may_source) const { auto res = isl_union_access_info_set_may_source(copy(), may_source.release()); return manage(res); } union_access_info union_access_info::set_must_source(union_map must_source) const { auto res = isl_union_access_info_set_must_source(copy(), must_source.release()); return manage(res); } union_access_info union_access_info::set_schedule(schedule schedule) const { auto res = isl_union_access_info_set_schedule(copy(), schedule.release()); return manage(res); } union_access_info union_access_info::set_schedule_map(union_map schedule_map) const { auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release()); return manage(res); } // implementations for isl::union_flow union_flow manage(__isl_take isl_union_flow *ptr) { return union_flow(ptr); } union_flow manage_copy(__isl_keep isl_union_flow *ptr) { ptr = isl_union_flow_copy(ptr); return union_flow(ptr); } union_flow::union_flow() : ptr(nullptr) {} union_flow::union_flow(const union_flow &obj) : ptr(nullptr) { ptr = obj.copy(); } union_flow::union_flow(std::nullptr_t) : ptr(nullptr) {} union_flow::union_flow(__isl_take isl_union_flow *ptr) : ptr(ptr) {} union_flow &union_flow::operator=(union_flow obj) { std::swap(this->ptr, obj.ptr); return *this; } union_flow::~union_flow() { if (ptr) isl_union_flow_free(ptr); } __isl_give isl_union_flow *union_flow::copy() const & { return isl_union_flow_copy(ptr); } __isl_keep isl_union_flow *union_flow::get() const { return ptr; } __isl_give isl_union_flow *union_flow::release() { isl_union_flow *tmp = ptr; ptr = nullptr; return tmp; } bool union_flow::is_null() const { return ptr == nullptr; } union_flow::operator bool() const { return !is_null(); } ctx union_flow::get_ctx() const { return ctx(isl_union_flow_get_ctx(ptr)); } std::string union_flow::to_str() const { char *Tmp = isl_union_flow_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } union_map union_flow::get_full_may_dependence() const { auto res = isl_union_flow_get_full_may_dependence(get()); return manage(res); } union_map union_flow::get_full_must_dependence() const { auto res = isl_union_flow_get_full_must_dependence(get()); return manage(res); } union_map union_flow::get_may_dependence() const { auto res = isl_union_flow_get_may_dependence(get()); return manage(res); } union_map union_flow::get_may_no_source() const { auto res = isl_union_flow_get_may_no_source(get()); return manage(res); } union_map union_flow::get_must_dependence() const { auto res = isl_union_flow_get_must_dependence(get()); return manage(res); } union_map union_flow::get_must_no_source() const { auto res = isl_union_flow_get_must_no_source(get()); return manage(res); } // implementations for isl::union_map union_map manage(__isl_take isl_union_map *ptr) { return union_map(ptr); } union_map manage_copy(__isl_keep isl_union_map *ptr) { ptr = isl_union_map_copy(ptr); return union_map(ptr); } union_map::union_map() : ptr(nullptr) {} union_map::union_map(const union_map &obj) : ptr(nullptr) { ptr = obj.copy(); } union_map::union_map(std::nullptr_t) : ptr(nullptr) {} union_map::union_map(__isl_take isl_union_map *ptr) : ptr(ptr) {} union_map::union_map(union_pw_multi_aff upma) { auto res = isl_union_map_from_union_pw_multi_aff(upma.release()); ptr = res; } union_map::union_map(basic_map bmap) { auto res = isl_union_map_from_basic_map(bmap.release()); ptr = res; } union_map::union_map(map map) { auto res = isl_union_map_from_map(map.release()); ptr = res; } union_map::union_map(ctx ctx, const std::string &str) { auto res = isl_union_map_read_from_str(ctx.release(), str.c_str()); ptr = res; } union_map &union_map::operator=(union_map obj) { std::swap(this->ptr, obj.ptr); return *this; } union_map::~union_map() { if (ptr) isl_union_map_free(ptr); } __isl_give isl_union_map *union_map::copy() const & { return isl_union_map_copy(ptr); } __isl_keep isl_union_map *union_map::get() const { return ptr; } __isl_give isl_union_map *union_map::release() { isl_union_map *tmp = ptr; ptr = nullptr; return tmp; } bool union_map::is_null() const { return ptr == nullptr; } union_map::operator bool() const { return !is_null(); } ctx union_map::get_ctx() const { return ctx(isl_union_map_get_ctx(ptr)); } std::string union_map::to_str() const { char *Tmp = isl_union_map_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void union_map::dump() const { isl_union_map_dump(get()); } union_map union_map::add_map(map map) const { auto res = isl_union_map_add_map(copy(), map.release()); return manage(res); } union_map union_map::affine_hull() const { auto res = isl_union_map_affine_hull(copy()); return manage(res); } union_map union_map::align_params(space model) const { auto res = isl_union_map_align_params(copy(), model.release()); return manage(res); } union_map union_map::apply_domain(union_map umap2) const { auto res = isl_union_map_apply_domain(copy(), umap2.release()); return manage(res); } union_map union_map::apply_range(union_map umap2) const { auto res = isl_union_map_apply_range(copy(), umap2.release()); return manage(res); } union_map union_map::coalesce() const { auto res = isl_union_map_coalesce(copy()); return manage(res); } boolean union_map::contains(const space &space) const { auto res = isl_union_map_contains(get(), space.get()); return manage(res); } union_map union_map::curry() const { auto res = isl_union_map_curry(copy()); return manage(res); } union_set union_map::deltas() const { auto res = isl_union_map_deltas(copy()); return manage(res); } union_map union_map::deltas_map() const { auto res = isl_union_map_deltas_map(copy()); return manage(res); } union_map union_map::detect_equalities() const { auto res = isl_union_map_detect_equalities(copy()); return manage(res); } unsigned int union_map::dim(isl::dim type) const { auto res = isl_union_map_dim(get(), static_cast(type)); return res; } union_set union_map::domain() const { auto res = isl_union_map_domain(copy()); return manage(res); } union_map union_map::domain_factor_domain() const { auto res = isl_union_map_domain_factor_domain(copy()); return manage(res); } union_map union_map::domain_factor_range() const { auto res = isl_union_map_domain_factor_range(copy()); return manage(res); } union_map union_map::domain_map() const { auto res = isl_union_map_domain_map(copy()); return manage(res); } union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const { auto res = isl_union_map_domain_map_union_pw_multi_aff(copy()); return manage(res); } union_map union_map::domain_product(union_map umap2) const { auto res = isl_union_map_domain_product(copy(), umap2.release()); return manage(res); } union_map union_map::empty(space space) { auto res = isl_union_map_empty(space.release()); return manage(res); } union_map union_map::eq_at(multi_union_pw_aff mupa) const { auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release()); return manage(res); } map union_map::extract_map(space dim) const { auto res = isl_union_map_extract_map(get(), dim.release()); return manage(res); } union_map union_map::factor_domain() const { auto res = isl_union_map_factor_domain(copy()); return manage(res); } union_map union_map::factor_range() const { auto res = isl_union_map_factor_range(copy()); return manage(res); } int union_map::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_union_map_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } union_map union_map::fixed_power(val exp) const { auto res = isl_union_map_fixed_power_val(copy(), exp.release()); return manage(res); } union_map union_map::flat_domain_product(union_map umap2) const { auto res = isl_union_map_flat_domain_product(copy(), umap2.release()); return manage(res); } union_map union_map::flat_range_product(union_map umap2) const { auto res = isl_union_map_flat_range_product(copy(), umap2.release()); return manage(res); } stat union_map::foreach_map(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data); return manage(res); } union_map union_map::from(multi_union_pw_aff mupa) { auto res = isl_union_map_from_multi_union_pw_aff(mupa.release()); return manage(res); } union_map union_map::from_domain(union_set uset) { auto res = isl_union_map_from_domain(uset.release()); return manage(res); } union_map union_map::from_domain_and_range(union_set domain, union_set range) { auto res = isl_union_map_from_domain_and_range(domain.release(), range.release()); return manage(res); } union_map union_map::from_range(union_set uset) { auto res = isl_union_map_from_range(uset.release()); return manage(res); } union_map union_map::from_union_pw_aff(union_pw_aff upa) { auto res = isl_union_map_from_union_pw_aff(upa.release()); return manage(res); } id union_map::get_dim_id(isl::dim type, unsigned int pos) const { auto res = isl_union_map_get_dim_id(get(), static_cast(type), pos); return manage(res); } uint32_t union_map::get_hash() const { auto res = isl_union_map_get_hash(get()); return res; } map_list union_map::get_map_list() const { auto res = isl_union_map_get_map_list(get()); return manage(res); } space union_map::get_space() const { auto res = isl_union_map_get_space(get()); return manage(res); } union_map union_map::gist(union_map context) const { auto res = isl_union_map_gist(copy(), context.release()); return manage(res); } union_map union_map::gist_domain(union_set uset) const { auto res = isl_union_map_gist_domain(copy(), uset.release()); return manage(res); } union_map union_map::gist_params(set set) const { auto res = isl_union_map_gist_params(copy(), set.release()); return manage(res); } union_map union_map::gist_range(union_set uset) const { auto res = isl_union_map_gist_range(copy(), uset.release()); return manage(res); } union_map union_map::intersect(union_map umap2) const { auto res = isl_union_map_intersect(copy(), umap2.release()); return manage(res); } union_map union_map::intersect_domain(union_set uset) const { auto res = isl_union_map_intersect_domain(copy(), uset.release()); return manage(res); } union_map union_map::intersect_params(set set) const { auto res = isl_union_map_intersect_params(copy(), set.release()); return manage(res); } union_map union_map::intersect_range(union_set uset) const { auto res = isl_union_map_intersect_range(copy(), uset.release()); return manage(res); } union_map union_map::intersect_range_factor_range(union_map factor) const { auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release()); return manage(res); } boolean union_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_union_map_involves_dims(get(), static_cast(type), first, n); return manage(res); } boolean union_map::is_bijective() const { auto res = isl_union_map_is_bijective(get()); return manage(res); } boolean union_map::is_disjoint(const union_map &umap2) const { auto res = isl_union_map_is_disjoint(get(), umap2.get()); return manage(res); } boolean union_map::is_empty() const { auto res = isl_union_map_is_empty(get()); return manage(res); } boolean union_map::is_equal(const union_map &umap2) const { auto res = isl_union_map_is_equal(get(), umap2.get()); return manage(res); } boolean union_map::is_identity() const { auto res = isl_union_map_is_identity(get()); return manage(res); } boolean union_map::is_injective() const { auto res = isl_union_map_is_injective(get()); return manage(res); } boolean union_map::is_single_valued() const { auto res = isl_union_map_is_single_valued(get()); return manage(res); } boolean union_map::is_strict_subset(const union_map &umap2) const { auto res = isl_union_map_is_strict_subset(get(), umap2.get()); return manage(res); } boolean union_map::is_subset(const union_map &umap2) const { auto res = isl_union_map_is_subset(get(), umap2.get()); return manage(res); } union_map union_map::lex_ge_union_map(union_map umap2) const { auto res = isl_union_map_lex_ge_union_map(copy(), umap2.release()); return manage(res); } union_map union_map::lex_gt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const { auto res = isl_union_map_lex_gt_at_multi_union_pw_aff(copy(), mupa.release()); return manage(res); } union_map union_map::lex_gt_union_map(union_map umap2) const { auto res = isl_union_map_lex_gt_union_map(copy(), umap2.release()); return manage(res); } union_map union_map::lex_le_union_map(union_map umap2) const { auto res = isl_union_map_lex_le_union_map(copy(), umap2.release()); return manage(res); } union_map union_map::lex_lt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const { auto res = isl_union_map_lex_lt_at_multi_union_pw_aff(copy(), mupa.release()); return manage(res); } union_map union_map::lex_lt_union_map(union_map umap2) const { auto res = isl_union_map_lex_lt_union_map(copy(), umap2.release()); return manage(res); } union_map union_map::lexmax() const { auto res = isl_union_map_lexmax(copy()); return manage(res); } union_map union_map::lexmin() const { auto res = isl_union_map_lexmin(copy()); return manage(res); } int union_map::n_map() const { auto res = isl_union_map_n_map(get()); return res; } set union_map::params() const { auto res = isl_union_map_params(copy()); return manage(res); } boolean union_map::plain_is_empty() const { auto res = isl_union_map_plain_is_empty(get()); return manage(res); } boolean union_map::plain_is_injective() const { auto res = isl_union_map_plain_is_injective(get()); return manage(res); } union_map union_map::polyhedral_hull() const { auto res = isl_union_map_polyhedral_hull(copy()); return manage(res); } union_map union_map::preimage_domain_multi_aff(multi_aff ma) const { auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release()); return manage(res); } union_map union_map::preimage_domain_multi_pw_aff(multi_pw_aff mpa) const { auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release()); return manage(res); } union_map union_map::preimage_domain_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release()); return manage(res); } union_map union_map::preimage_domain_union_pw_multi_aff(union_pw_multi_aff upma) const { auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release()); return manage(res); } union_map union_map::preimage_range_multi_aff(multi_aff ma) const { auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release()); return manage(res); } union_map union_map::preimage_range_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release()); return manage(res); } union_map union_map::preimage_range_union_pw_multi_aff(union_pw_multi_aff upma) const { auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release()); return manage(res); } union_map union_map::product(union_map umap2) const { auto res = isl_union_map_product(copy(), umap2.release()); return manage(res); } union_map union_map::project_out(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_union_map_project_out(copy(), static_cast(type), first, n); return manage(res); } union_map union_map::project_out_all_params() const { auto res = isl_union_map_project_out_all_params(copy()); return manage(res); } union_set union_map::range() const { auto res = isl_union_map_range(copy()); return manage(res); } union_map union_map::range_curry() const { auto res = isl_union_map_range_curry(copy()); return manage(res); } union_map union_map::range_factor_domain() const { auto res = isl_union_map_range_factor_domain(copy()); return manage(res); } union_map union_map::range_factor_range() const { auto res = isl_union_map_range_factor_range(copy()); return manage(res); } union_map union_map::range_map() const { auto res = isl_union_map_range_map(copy()); return manage(res); } union_map union_map::range_product(union_map umap2) const { auto res = isl_union_map_range_product(copy(), umap2.release()); return manage(res); } union_map union_map::remove_divs() const { auto res = isl_union_map_remove_divs(copy()); return manage(res); } union_map union_map::remove_redundancies() const { auto res = isl_union_map_remove_redundancies(copy()); return manage(res); } union_map union_map::reset_user() const { auto res = isl_union_map_reset_user(copy()); return manage(res); } union_map union_map::reverse() const { auto res = isl_union_map_reverse(copy()); return manage(res); } basic_map union_map::sample() const { auto res = isl_union_map_sample(copy()); return manage(res); } union_map union_map::simple_hull() const { auto res = isl_union_map_simple_hull(copy()); return manage(res); } union_map union_map::subtract(union_map umap2) const { auto res = isl_union_map_subtract(copy(), umap2.release()); return manage(res); } union_map union_map::subtract_domain(union_set dom) const { auto res = isl_union_map_subtract_domain(copy(), dom.release()); return manage(res); } union_map union_map::subtract_range(union_set dom) const { auto res = isl_union_map_subtract_range(copy(), dom.release()); return manage(res); } union_map union_map::uncurry() const { auto res = isl_union_map_uncurry(copy()); return manage(res); } union_map union_map::unite(union_map umap2) const { auto res = isl_union_map_union(copy(), umap2.release()); return manage(res); } union_map union_map::universe() const { auto res = isl_union_map_universe(copy()); return manage(res); } union_set union_map::wrap() const { auto res = isl_union_map_wrap(copy()); return manage(res); } union_map union_map::zip() const { auto res = isl_union_map_zip(copy()); return manage(res); } // implementations for isl::union_map_list union_map_list manage(__isl_take isl_union_map_list *ptr) { return union_map_list(ptr); } union_map_list manage_copy(__isl_keep isl_union_map_list *ptr) { ptr = isl_union_map_list_copy(ptr); return union_map_list(ptr); } union_map_list::union_map_list() : ptr(nullptr) {} union_map_list::union_map_list(const union_map_list &obj) : ptr(nullptr) { ptr = obj.copy(); } union_map_list::union_map_list(std::nullptr_t) : ptr(nullptr) {} union_map_list::union_map_list(__isl_take isl_union_map_list *ptr) : ptr(ptr) {} union_map_list &union_map_list::operator=(union_map_list obj) { std::swap(this->ptr, obj.ptr); return *this; } union_map_list::~union_map_list() { if (ptr) isl_union_map_list_free(ptr); } __isl_give isl_union_map_list *union_map_list::copy() const & { return isl_union_map_list_copy(ptr); } __isl_keep isl_union_map_list *union_map_list::get() const { return ptr; } __isl_give isl_union_map_list *union_map_list::release() { isl_union_map_list *tmp = ptr; ptr = nullptr; return tmp; } bool union_map_list::is_null() const { return ptr == nullptr; } union_map_list::operator bool() const { return !is_null(); } ctx union_map_list::get_ctx() const { return ctx(isl_union_map_list_get_ctx(ptr)); } void union_map_list::dump() const { isl_union_map_list_dump(get()); } union_map_list union_map_list::add(union_map el) const { auto res = isl_union_map_list_add(copy(), el.release()); return manage(res); } union_map_list union_map_list::alloc(ctx ctx, int n) { auto res = isl_union_map_list_alloc(ctx.release(), n); return manage(res); } union_map_list union_map_list::concat(union_map_list list2) const { auto res = isl_union_map_list_concat(copy(), list2.release()); return manage(res); } union_map_list union_map_list::drop(unsigned int first, unsigned int n) const { auto res = isl_union_map_list_drop(copy(), first, n); return manage(res); } stat union_map_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_union_map *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_map_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } union_map_list union_map_list::from_union_map(union_map el) { auto res = isl_union_map_list_from_union_map(el.release()); return manage(res); } union_map union_map_list::get_at(int index) const { auto res = isl_union_map_list_get_at(get(), index); return manage(res); } union_map union_map_list::get_union_map(int index) const { auto res = isl_union_map_list_get_union_map(get(), index); return manage(res); } union_map_list union_map_list::insert(unsigned int pos, union_map el) const { auto res = isl_union_map_list_insert(copy(), pos, el.release()); return manage(res); } int union_map_list::n_union_map() const { auto res = isl_union_map_list_n_union_map(get()); return res; } union_map_list union_map_list::reverse() const { auto res = isl_union_map_list_reverse(copy()); return manage(res); } union_map_list union_map_list::set_union_map(int index, union_map el) const { auto res = isl_union_map_list_set_union_map(copy(), index, el.release()); return manage(res); } int union_map_list::size() const { auto res = isl_union_map_list_size(get()); return res; } union_map_list union_map_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_union_map_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::union_pw_aff union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) { return union_pw_aff(ptr); } union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) { ptr = isl_union_pw_aff_copy(ptr); return union_pw_aff(ptr); } union_pw_aff::union_pw_aff() : ptr(nullptr) {} union_pw_aff::union_pw_aff(const union_pw_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } union_pw_aff::union_pw_aff(std::nullptr_t) : ptr(nullptr) {} union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr) : ptr(ptr) {} union_pw_aff::union_pw_aff(pw_aff pa) { auto res = isl_union_pw_aff_from_pw_aff(pa.release()); ptr = res; } union_pw_aff::union_pw_aff(union_set domain, val v) { auto res = isl_union_pw_aff_val_on_domain(domain.release(), v.release()); ptr = res; } union_pw_aff::union_pw_aff(ctx ctx, const std::string &str) { auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } union_pw_aff::~union_pw_aff() { if (ptr) isl_union_pw_aff_free(ptr); } __isl_give isl_union_pw_aff *union_pw_aff::copy() const & { return isl_union_pw_aff_copy(ptr); } __isl_keep isl_union_pw_aff *union_pw_aff::get() const { return ptr; } __isl_give isl_union_pw_aff *union_pw_aff::release() { isl_union_pw_aff *tmp = ptr; ptr = nullptr; return tmp; } bool union_pw_aff::is_null() const { return ptr == nullptr; } union_pw_aff::operator bool() const { return !is_null(); } ctx union_pw_aff::get_ctx() const { return ctx(isl_union_pw_aff_get_ctx(ptr)); } std::string union_pw_aff::to_str() const { char *Tmp = isl_union_pw_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void union_pw_aff::dump() const { isl_union_pw_aff_dump(get()); } union_pw_aff union_pw_aff::add(union_pw_aff upa2) const { auto res = isl_union_pw_aff_add(copy(), upa2.release()); return manage(res); } union_pw_aff union_pw_aff::add_pw_aff(pw_aff pa) const { auto res = isl_union_pw_aff_add_pw_aff(copy(), pa.release()); return manage(res); } union_pw_aff union_pw_aff::aff_on_domain(union_set domain, aff aff) { auto res = isl_union_pw_aff_aff_on_domain(domain.release(), aff.release()); return manage(res); } union_pw_aff union_pw_aff::align_params(space model) const { auto res = isl_union_pw_aff_align_params(copy(), model.release()); return manage(res); } union_pw_aff union_pw_aff::coalesce() const { auto res = isl_union_pw_aff_coalesce(copy()); return manage(res); } unsigned int union_pw_aff::dim(isl::dim type) const { auto res = isl_union_pw_aff_dim(get(), static_cast(type)); return res; } union_set union_pw_aff::domain() const { auto res = isl_union_pw_aff_domain(copy()); return manage(res); } union_pw_aff union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_union_pw_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } union_pw_aff union_pw_aff::empty(space space) { auto res = isl_union_pw_aff_empty(space.release()); return manage(res); } pw_aff union_pw_aff::extract_pw_aff(space space) const { auto res = isl_union_pw_aff_extract_pw_aff(get(), space.release()); return manage(res); } int union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_union_pw_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } union_pw_aff union_pw_aff::floor() const { auto res = isl_union_pw_aff_floor(copy()); return manage(res); } stat union_pw_aff::foreach_pw_aff(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_data); return manage(res); } pw_aff_list union_pw_aff::get_pw_aff_list() const { auto res = isl_union_pw_aff_get_pw_aff_list(get()); return manage(res); } space union_pw_aff::get_space() const { auto res = isl_union_pw_aff_get_space(get()); return manage(res); } union_pw_aff union_pw_aff::gist(union_set context) const { auto res = isl_union_pw_aff_gist(copy(), context.release()); return manage(res); } union_pw_aff union_pw_aff::gist_params(set context) const { auto res = isl_union_pw_aff_gist_params(copy(), context.release()); return manage(res); } union_pw_aff union_pw_aff::intersect_domain(union_set uset) const { auto res = isl_union_pw_aff_intersect_domain(copy(), uset.release()); return manage(res); } union_pw_aff union_pw_aff::intersect_params(set set) const { auto res = isl_union_pw_aff_intersect_params(copy(), set.release()); return manage(res); } boolean union_pw_aff::involves_nan() const { auto res = isl_union_pw_aff_involves_nan(get()); return manage(res); } val union_pw_aff::max_val() const { auto res = isl_union_pw_aff_max_val(copy()); return manage(res); } val union_pw_aff::min_val() const { auto res = isl_union_pw_aff_min_val(copy()); return manage(res); } union_pw_aff union_pw_aff::mod_val(val f) const { auto res = isl_union_pw_aff_mod_val(copy(), f.release()); return manage(res); } int union_pw_aff::n_pw_aff() const { auto res = isl_union_pw_aff_n_pw_aff(get()); return res; } union_pw_aff union_pw_aff::neg() const { auto res = isl_union_pw_aff_neg(copy()); return manage(res); } union_pw_aff union_pw_aff::param_on_domain_id(union_set domain, id id) { auto res = isl_union_pw_aff_param_on_domain_id(domain.release(), id.release()); return manage(res); } boolean union_pw_aff::plain_is_equal(const union_pw_aff &upa2) const { auto res = isl_union_pw_aff_plain_is_equal(get(), upa2.get()); return manage(res); } union_pw_aff union_pw_aff::pullback(union_pw_multi_aff upma) const { auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release()); return manage(res); } union_pw_aff union_pw_aff::pw_aff_on_domain(union_set domain, pw_aff pa) { auto res = isl_union_pw_aff_pw_aff_on_domain(domain.release(), pa.release()); return manage(res); } union_pw_aff union_pw_aff::reset_user() const { auto res = isl_union_pw_aff_reset_user(copy()); return manage(res); } union_pw_aff union_pw_aff::scale_down_val(val v) const { auto res = isl_union_pw_aff_scale_down_val(copy(), v.release()); return manage(res); } union_pw_aff union_pw_aff::scale_val(val v) const { auto res = isl_union_pw_aff_scale_val(copy(), v.release()); return manage(res); } union_pw_aff union_pw_aff::sub(union_pw_aff upa2) const { auto res = isl_union_pw_aff_sub(copy(), upa2.release()); return manage(res); } union_pw_aff union_pw_aff::subtract_domain(union_set uset) const { auto res = isl_union_pw_aff_subtract_domain(copy(), uset.release()); return manage(res); } union_pw_aff union_pw_aff::union_add(union_pw_aff upa2) const { auto res = isl_union_pw_aff_union_add(copy(), upa2.release()); return manage(res); } union_set union_pw_aff::zero_union_set() const { auto res = isl_union_pw_aff_zero_union_set(copy()); return manage(res); } // implementations for isl::union_pw_aff_list union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) { return union_pw_aff_list(ptr); } union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) { ptr = isl_union_pw_aff_list_copy(ptr); return union_pw_aff_list(ptr); } union_pw_aff_list::union_pw_aff_list() : ptr(nullptr) {} union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj) : ptr(nullptr) { ptr = obj.copy(); } union_pw_aff_list::union_pw_aff_list(std::nullptr_t) : ptr(nullptr) {} union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr) : ptr(ptr) {} union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) { std::swap(this->ptr, obj.ptr); return *this; } union_pw_aff_list::~union_pw_aff_list() { if (ptr) isl_union_pw_aff_list_free(ptr); } __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & { return isl_union_pw_aff_list_copy(ptr); } __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const { return ptr; } __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() { isl_union_pw_aff_list *tmp = ptr; ptr = nullptr; return tmp; } bool union_pw_aff_list::is_null() const { return ptr == nullptr; } union_pw_aff_list::operator bool() const { return !is_null(); } ctx union_pw_aff_list::get_ctx() const { return ctx(isl_union_pw_aff_list_get_ctx(ptr)); } void union_pw_aff_list::dump() const { isl_union_pw_aff_list_dump(get()); } union_pw_aff_list union_pw_aff_list::add(union_pw_aff el) const { auto res = isl_union_pw_aff_list_add(copy(), el.release()); return manage(res); } union_pw_aff_list union_pw_aff_list::alloc(ctx ctx, int n) { auto res = isl_union_pw_aff_list_alloc(ctx.release(), n); return manage(res); } union_pw_aff_list union_pw_aff_list::concat(union_pw_aff_list list2) const { auto res = isl_union_pw_aff_list_concat(copy(), list2.release()); return manage(res); } union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl_union_pw_aff_list_drop(copy(), first, n); return manage(res); } stat union_pw_aff_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } union_pw_aff_list union_pw_aff_list::from_union_pw_aff(union_pw_aff el) { auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release()); return manage(res); } union_pw_aff union_pw_aff_list::get_at(int index) const { auto res = isl_union_pw_aff_list_get_at(get(), index); return manage(res); } union_pw_aff union_pw_aff_list::get_union_pw_aff(int index) const { auto res = isl_union_pw_aff_list_get_union_pw_aff(get(), index); return manage(res); } union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, union_pw_aff el) const { auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release()); return manage(res); } int union_pw_aff_list::n_union_pw_aff() const { auto res = isl_union_pw_aff_list_n_union_pw_aff(get()); return res; } union_pw_aff_list union_pw_aff_list::reverse() const { auto res = isl_union_pw_aff_list_reverse(copy()); return manage(res); } union_pw_aff_list union_pw_aff_list::set_union_pw_aff(int index, union_pw_aff el) const { auto res = isl_union_pw_aff_list_set_union_pw_aff(copy(), index, el.release()); return manage(res); } int union_pw_aff_list::size() const { auto res = isl_union_pw_aff_list_size(get()); return res; } union_pw_aff_list union_pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_union_pw_aff_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::union_pw_multi_aff union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) { return union_pw_multi_aff(ptr); } union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) { ptr = isl_union_pw_multi_aff_copy(ptr); return union_pw_multi_aff(ptr); } union_pw_multi_aff::union_pw_multi_aff() : ptr(nullptr) {} union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj) : ptr(nullptr) { ptr = obj.copy(); } union_pw_multi_aff::union_pw_multi_aff(std::nullptr_t) : ptr(nullptr) {} union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr) : ptr(ptr) {} union_pw_multi_aff::union_pw_multi_aff(aff aff) { auto res = isl_union_pw_multi_aff_from_aff(aff.release()); ptr = res; } union_pw_multi_aff::union_pw_multi_aff(pw_multi_aff pma) { auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release()); ptr = res; } union_pw_multi_aff::union_pw_multi_aff(union_set uset) { auto res = isl_union_pw_multi_aff_from_domain(uset.release()); ptr = res; } union_pw_multi_aff::union_pw_multi_aff(union_map umap) { auto res = isl_union_pw_multi_aff_from_union_map(umap.release()); ptr = res; } union_pw_multi_aff::union_pw_multi_aff(ctx ctx, const std::string &str) { auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str()); ptr = res; } union_pw_multi_aff::union_pw_multi_aff(union_pw_aff upa) { auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release()); ptr = res; } union_pw_multi_aff::union_pw_multi_aff(multi_union_pw_aff mupa) { auto res = isl_union_pw_multi_aff_from_multi_union_pw_aff(mupa.release()); ptr = res; } union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) { std::swap(this->ptr, obj.ptr); return *this; } union_pw_multi_aff::~union_pw_multi_aff() { if (ptr) isl_union_pw_multi_aff_free(ptr); } __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & { return isl_union_pw_multi_aff_copy(ptr); } __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const { return ptr; } __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() { isl_union_pw_multi_aff *tmp = ptr; ptr = nullptr; return tmp; } bool union_pw_multi_aff::is_null() const { return ptr == nullptr; } union_pw_multi_aff::operator bool() const { return !is_null(); } ctx union_pw_multi_aff::get_ctx() const { return ctx(isl_union_pw_multi_aff_get_ctx(ptr)); } std::string union_pw_multi_aff::to_str() const { char *Tmp = isl_union_pw_multi_aff_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void union_pw_multi_aff::dump() const { isl_union_pw_multi_aff_dump(get()); } union_pw_multi_aff union_pw_multi_aff::add(union_pw_multi_aff upma2) const { auto res = isl_union_pw_multi_aff_add(copy(), upma2.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::add_pw_multi_aff(pw_multi_aff pma) const { auto res = isl_union_pw_multi_aff_add_pw_multi_aff(copy(), pma.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::align_params(space model) const { auto res = isl_union_pw_multi_aff_align_params(copy(), model.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::coalesce() const { auto res = isl_union_pw_multi_aff_coalesce(copy()); return manage(res); } unsigned int union_pw_multi_aff::dim(isl::dim type) const { auto res = isl_union_pw_multi_aff_dim(get(), static_cast(type)); return res; } union_set union_pw_multi_aff::domain() const { auto res = isl_union_pw_multi_aff_domain(copy()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_union_pw_multi_aff_drop_dims(copy(), static_cast(type), first, n); return manage(res); } union_pw_multi_aff union_pw_multi_aff::empty(space space) { auto res = isl_union_pw_multi_aff_empty(space.release()); return manage(res); } pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(space space) const { auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release()); return manage(res); } int union_pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_union_pw_multi_aff_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } union_pw_multi_aff union_pw_multi_aff::flat_range_product(union_pw_multi_aff upma2) const { auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release()); return manage(res); } stat union_pw_multi_aff::foreach_pw_multi_aff(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_pw_multi_aff_foreach_pw_multi_aff(get(), fn_lambda, &fn_data); return manage(res); } union_pw_multi_aff union_pw_multi_aff::from_union_set(union_set uset) { auto res = isl_union_pw_multi_aff_from_union_set(uset.release()); return manage(res); } pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const { auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get()); return manage(res); } space union_pw_multi_aff::get_space() const { auto res = isl_union_pw_multi_aff_get_space(get()); return manage(res); } union_pw_aff union_pw_multi_aff::get_union_pw_aff(int pos) const { auto res = isl_union_pw_multi_aff_get_union_pw_aff(get(), pos); return manage(res); } union_pw_multi_aff union_pw_multi_aff::gist(union_set context) const { auto res = isl_union_pw_multi_aff_gist(copy(), context.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::gist_params(set context) const { auto res = isl_union_pw_multi_aff_gist_params(copy(), context.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::intersect_domain(union_set uset) const { auto res = isl_union_pw_multi_aff_intersect_domain(copy(), uset.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::intersect_params(set set) const { auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release()); return manage(res); } boolean union_pw_multi_aff::involves_nan() const { auto res = isl_union_pw_multi_aff_involves_nan(get()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::multi_val_on_domain(union_set domain, multi_val mv) { auto res = isl_union_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release()); return manage(res); } int union_pw_multi_aff::n_pw_multi_aff() const { auto res = isl_union_pw_multi_aff_n_pw_multi_aff(get()); return res; } union_pw_multi_aff union_pw_multi_aff::neg() const { auto res = isl_union_pw_multi_aff_neg(copy()); return manage(res); } boolean union_pw_multi_aff::plain_is_equal(const union_pw_multi_aff &upma2) const { auto res = isl_union_pw_multi_aff_plain_is_equal(get(), upma2.get()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::pullback(union_pw_multi_aff upma2) const { auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::reset_user() const { auto res = isl_union_pw_multi_aff_reset_user(copy()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::scale_down_val(val val) const { auto res = isl_union_pw_multi_aff_scale_down_val(copy(), val.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::scale_multi_val(multi_val mv) const { auto res = isl_union_pw_multi_aff_scale_multi_val(copy(), mv.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::scale_val(val val) const { auto res = isl_union_pw_multi_aff_scale_val(copy(), val.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::sub(union_pw_multi_aff upma2) const { auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::subtract_domain(union_set uset) const { auto res = isl_union_pw_multi_aff_subtract_domain(copy(), uset.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff::union_add(union_pw_multi_aff upma2) const { auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release()); return manage(res); } // implementations for isl::union_pw_multi_aff_list union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr) { return union_pw_multi_aff_list(ptr); } union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr) { ptr = isl_union_pw_multi_aff_list_copy(ptr); return union_pw_multi_aff_list(ptr); } union_pw_multi_aff_list::union_pw_multi_aff_list() : ptr(nullptr) {} union_pw_multi_aff_list::union_pw_multi_aff_list(const union_pw_multi_aff_list &obj) : ptr(nullptr) { ptr = obj.copy(); } union_pw_multi_aff_list::union_pw_multi_aff_list(std::nullptr_t) : ptr(nullptr) {} union_pw_multi_aff_list::union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr) : ptr(ptr) {} union_pw_multi_aff_list &union_pw_multi_aff_list::operator=(union_pw_multi_aff_list obj) { std::swap(this->ptr, obj.ptr); return *this; } union_pw_multi_aff_list::~union_pw_multi_aff_list() { if (ptr) isl_union_pw_multi_aff_list_free(ptr); } __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::copy() const & { return isl_union_pw_multi_aff_list_copy(ptr); } __isl_keep isl_union_pw_multi_aff_list *union_pw_multi_aff_list::get() const { return ptr; } __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::release() { isl_union_pw_multi_aff_list *tmp = ptr; ptr = nullptr; return tmp; } bool union_pw_multi_aff_list::is_null() const { return ptr == nullptr; } union_pw_multi_aff_list::operator bool() const { return !is_null(); } ctx union_pw_multi_aff_list::get_ctx() const { return ctx(isl_union_pw_multi_aff_list_get_ctx(ptr)); } void union_pw_multi_aff_list::dump() const { isl_union_pw_multi_aff_list_dump(get()); } union_pw_multi_aff_list union_pw_multi_aff_list::add(union_pw_multi_aff el) const { auto res = isl_union_pw_multi_aff_list_add(copy(), el.release()); return manage(res); } union_pw_multi_aff_list union_pw_multi_aff_list::alloc(ctx ctx, int n) { auto res = isl_union_pw_multi_aff_list_alloc(ctx.release(), n); return manage(res); } union_pw_multi_aff_list union_pw_multi_aff_list::concat(union_pw_multi_aff_list list2) const { auto res = isl_union_pw_multi_aff_list_concat(copy(), list2.release()); return manage(res); } union_pw_multi_aff_list union_pw_multi_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl_union_pw_multi_aff_list_drop(copy(), first, n); return manage(res); } stat union_pw_multi_aff_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_union_pw_multi_aff *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } union_pw_multi_aff_list union_pw_multi_aff_list::from_union_pw_multi_aff(union_pw_multi_aff el) { auto res = isl_union_pw_multi_aff_list_from_union_pw_multi_aff(el.release()); return manage(res); } union_pw_multi_aff union_pw_multi_aff_list::get_at(int index) const { auto res = isl_union_pw_multi_aff_list_get_at(get(), index); return manage(res); } union_pw_multi_aff union_pw_multi_aff_list::get_union_pw_multi_aff(int index) const { auto res = isl_union_pw_multi_aff_list_get_union_pw_multi_aff(get(), index); return manage(res); } union_pw_multi_aff_list union_pw_multi_aff_list::insert(unsigned int pos, union_pw_multi_aff el) const { auto res = isl_union_pw_multi_aff_list_insert(copy(), pos, el.release()); return manage(res); } int union_pw_multi_aff_list::n_union_pw_multi_aff() const { auto res = isl_union_pw_multi_aff_list_n_union_pw_multi_aff(get()); return res; } union_pw_multi_aff_list union_pw_multi_aff_list::reverse() const { auto res = isl_union_pw_multi_aff_list_reverse(copy()); return manage(res); } union_pw_multi_aff_list union_pw_multi_aff_list::set_union_pw_multi_aff(int index, union_pw_multi_aff el) const { auto res = isl_union_pw_multi_aff_list_set_union_pw_multi_aff(copy(), index, el.release()); return manage(res); } int union_pw_multi_aff_list::size() const { auto res = isl_union_pw_multi_aff_list_size(get()); return res; } union_pw_multi_aff_list union_pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_union_pw_multi_aff_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::union_pw_qpolynomial union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr) { return union_pw_qpolynomial(ptr); } union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr) { ptr = isl_union_pw_qpolynomial_copy(ptr); return union_pw_qpolynomial(ptr); } union_pw_qpolynomial::union_pw_qpolynomial() : ptr(nullptr) {} union_pw_qpolynomial::union_pw_qpolynomial(const union_pw_qpolynomial &obj) : ptr(nullptr) { ptr = obj.copy(); } union_pw_qpolynomial::union_pw_qpolynomial(std::nullptr_t) : ptr(nullptr) {} union_pw_qpolynomial::union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr) : ptr(ptr) {} union_pw_qpolynomial::union_pw_qpolynomial(ctx ctx, const std::string &str) { auto res = isl_union_pw_qpolynomial_read_from_str(ctx.release(), str.c_str()); ptr = res; } union_pw_qpolynomial &union_pw_qpolynomial::operator=(union_pw_qpolynomial obj) { std::swap(this->ptr, obj.ptr); return *this; } union_pw_qpolynomial::~union_pw_qpolynomial() { if (ptr) isl_union_pw_qpolynomial_free(ptr); } __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::copy() const & { return isl_union_pw_qpolynomial_copy(ptr); } __isl_keep isl_union_pw_qpolynomial *union_pw_qpolynomial::get() const { return ptr; } __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::release() { isl_union_pw_qpolynomial *tmp = ptr; ptr = nullptr; return tmp; } bool union_pw_qpolynomial::is_null() const { return ptr == nullptr; } union_pw_qpolynomial::operator bool() const { return !is_null(); } ctx union_pw_qpolynomial::get_ctx() const { return ctx(isl_union_pw_qpolynomial_get_ctx(ptr)); } std::string union_pw_qpolynomial::to_str() const { char *Tmp = isl_union_pw_qpolynomial_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } union_pw_qpolynomial union_pw_qpolynomial::add(union_pw_qpolynomial upwqp2) const { auto res = isl_union_pw_qpolynomial_add(copy(), upwqp2.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::add_pw_qpolynomial(pw_qpolynomial pwqp) const { auto res = isl_union_pw_qpolynomial_add_pw_qpolynomial(copy(), pwqp.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::align_params(space model) const { auto res = isl_union_pw_qpolynomial_align_params(copy(), model.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::coalesce() const { auto res = isl_union_pw_qpolynomial_coalesce(copy()); return manage(res); } unsigned int union_pw_qpolynomial::dim(isl::dim type) const { auto res = isl_union_pw_qpolynomial_dim(get(), static_cast(type)); return res; } union_set union_pw_qpolynomial::domain() const { auto res = isl_union_pw_qpolynomial_domain(copy()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_union_pw_qpolynomial_drop_dims(copy(), static_cast(type), first, n); return manage(res); } val union_pw_qpolynomial::eval(point pnt) const { auto res = isl_union_pw_qpolynomial_eval(copy(), pnt.release()); return manage(res); } pw_qpolynomial union_pw_qpolynomial::extract_pw_qpolynomial(space dim) const { auto res = isl_union_pw_qpolynomial_extract_pw_qpolynomial(get(), dim.release()); return manage(res); } int union_pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const { auto res = isl_union_pw_qpolynomial_find_dim_by_name(get(), static_cast(type), name.c_str()); return res; } stat union_pw_qpolynomial::foreach_pw_qpolynomial(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_pw_qpolynomial_foreach_pw_qpolynomial(get(), fn_lambda, &fn_data); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::from_pw_qpolynomial(pw_qpolynomial pwqp) { auto res = isl_union_pw_qpolynomial_from_pw_qpolynomial(pwqp.release()); return manage(res); } pw_qpolynomial_list union_pw_qpolynomial::get_pw_qpolynomial_list() const { auto res = isl_union_pw_qpolynomial_get_pw_qpolynomial_list(get()); return manage(res); } space union_pw_qpolynomial::get_space() const { auto res = isl_union_pw_qpolynomial_get_space(get()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::gist(union_set context) const { auto res = isl_union_pw_qpolynomial_gist(copy(), context.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::gist_params(set context) const { auto res = isl_union_pw_qpolynomial_gist_params(copy(), context.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::intersect_domain(union_set uset) const { auto res = isl_union_pw_qpolynomial_intersect_domain(copy(), uset.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::intersect_params(set set) const { auto res = isl_union_pw_qpolynomial_intersect_params(copy(), set.release()); return manage(res); } boolean union_pw_qpolynomial::involves_nan() const { auto res = isl_union_pw_qpolynomial_involves_nan(get()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::mul(union_pw_qpolynomial upwqp2) const { auto res = isl_union_pw_qpolynomial_mul(copy(), upwqp2.release()); return manage(res); } int union_pw_qpolynomial::n_pw_qpolynomial() const { auto res = isl_union_pw_qpolynomial_n_pw_qpolynomial(get()); return res; } union_pw_qpolynomial union_pw_qpolynomial::neg() const { auto res = isl_union_pw_qpolynomial_neg(copy()); return manage(res); } boolean union_pw_qpolynomial::plain_is_equal(const union_pw_qpolynomial &upwqp2) const { auto res = isl_union_pw_qpolynomial_plain_is_equal(get(), upwqp2.get()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::reset_user() const { auto res = isl_union_pw_qpolynomial_reset_user(copy()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::scale_down_val(val v) const { auto res = isl_union_pw_qpolynomial_scale_down_val(copy(), v.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::scale_val(val v) const { auto res = isl_union_pw_qpolynomial_scale_val(copy(), v.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::sub(union_pw_qpolynomial upwqp2) const { auto res = isl_union_pw_qpolynomial_sub(copy(), upwqp2.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::subtract_domain(union_set uset) const { auto res = isl_union_pw_qpolynomial_subtract_domain(copy(), uset.release()); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::to_polynomial(int sign) const { auto res = isl_union_pw_qpolynomial_to_polynomial(copy(), sign); return manage(res); } union_pw_qpolynomial union_pw_qpolynomial::zero(space dim) { auto res = isl_union_pw_qpolynomial_zero(dim.release()); return manage(res); } // implementations for isl::union_set union_set manage(__isl_take isl_union_set *ptr) { return union_set(ptr); } union_set manage_copy(__isl_keep isl_union_set *ptr) { ptr = isl_union_set_copy(ptr); return union_set(ptr); } union_set::union_set() : ptr(nullptr) {} union_set::union_set(const union_set &obj) : ptr(nullptr) { ptr = obj.copy(); } union_set::union_set(std::nullptr_t) : ptr(nullptr) {} union_set::union_set(__isl_take isl_union_set *ptr) : ptr(ptr) {} union_set::union_set(basic_set bset) { auto res = isl_union_set_from_basic_set(bset.release()); ptr = res; } union_set::union_set(set set) { auto res = isl_union_set_from_set(set.release()); ptr = res; } union_set::union_set(point pnt) { auto res = isl_union_set_from_point(pnt.release()); ptr = res; } union_set::union_set(ctx ctx, const std::string &str) { auto res = isl_union_set_read_from_str(ctx.release(), str.c_str()); ptr = res; } union_set &union_set::operator=(union_set obj) { std::swap(this->ptr, obj.ptr); return *this; } union_set::~union_set() { if (ptr) isl_union_set_free(ptr); } __isl_give isl_union_set *union_set::copy() const & { return isl_union_set_copy(ptr); } __isl_keep isl_union_set *union_set::get() const { return ptr; } __isl_give isl_union_set *union_set::release() { isl_union_set *tmp = ptr; ptr = nullptr; return tmp; } bool union_set::is_null() const { return ptr == nullptr; } union_set::operator bool() const { return !is_null(); } ctx union_set::get_ctx() const { return ctx(isl_union_set_get_ctx(ptr)); } std::string union_set::to_str() const { char *Tmp = isl_union_set_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void union_set::dump() const { isl_union_set_dump(get()); } union_set union_set::add_set(set set) const { auto res = isl_union_set_add_set(copy(), set.release()); return manage(res); } union_set union_set::affine_hull() const { auto res = isl_union_set_affine_hull(copy()); return manage(res); } union_set union_set::align_params(space model) const { auto res = isl_union_set_align_params(copy(), model.release()); return manage(res); } union_set union_set::apply(union_map umap) const { auto res = isl_union_set_apply(copy(), umap.release()); return manage(res); } union_set union_set::coalesce() const { auto res = isl_union_set_coalesce(copy()); return manage(res); } union_set union_set::coefficients() const { auto res = isl_union_set_coefficients(copy()); return manage(res); } schedule union_set::compute_schedule(union_map validity, union_map proximity) const { auto res = isl_union_set_compute_schedule(copy(), validity.release(), proximity.release()); return manage(res); } boolean union_set::contains(const space &space) const { auto res = isl_union_set_contains(get(), space.get()); return manage(res); } union_set union_set::detect_equalities() const { auto res = isl_union_set_detect_equalities(copy()); return manage(res); } unsigned int union_set::dim(isl::dim type) const { auto res = isl_union_set_dim(get(), static_cast(type)); return res; } union_set union_set::empty(space space) { auto res = isl_union_set_empty(space.release()); return manage(res); } set union_set::extract_set(space dim) const { auto res = isl_union_set_extract_set(get(), dim.release()); return manage(res); } stat union_set::foreach_point(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data); return manage(res); } stat union_set::foreach_set(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data); return manage(res); } basic_set_list union_set::get_basic_set_list() const { auto res = isl_union_set_get_basic_set_list(get()); return manage(res); } uint32_t union_set::get_hash() const { auto res = isl_union_set_get_hash(get()); return res; } set_list union_set::get_set_list() const { auto res = isl_union_set_get_set_list(get()); return manage(res); } space union_set::get_space() const { auto res = isl_union_set_get_space(get()); return manage(res); } union_set union_set::gist(union_set context) const { auto res = isl_union_set_gist(copy(), context.release()); return manage(res); } union_set union_set::gist_params(set set) const { auto res = isl_union_set_gist_params(copy(), set.release()); return manage(res); } union_map union_set::identity() const { auto res = isl_union_set_identity(copy()); return manage(res); } union_pw_multi_aff union_set::identity_union_pw_multi_aff() const { auto res = isl_union_set_identity_union_pw_multi_aff(copy()); return manage(res); } union_set union_set::intersect(union_set uset2) const { auto res = isl_union_set_intersect(copy(), uset2.release()); return manage(res); } union_set union_set::intersect_params(set set) const { auto res = isl_union_set_intersect_params(copy(), set.release()); return manage(res); } boolean union_set::is_disjoint(const union_set &uset2) const { auto res = isl_union_set_is_disjoint(get(), uset2.get()); return manage(res); } boolean union_set::is_empty() const { auto res = isl_union_set_is_empty(get()); return manage(res); } boolean union_set::is_equal(const union_set &uset2) const { auto res = isl_union_set_is_equal(get(), uset2.get()); return manage(res); } boolean union_set::is_params() const { auto res = isl_union_set_is_params(get()); return manage(res); } boolean union_set::is_strict_subset(const union_set &uset2) const { auto res = isl_union_set_is_strict_subset(get(), uset2.get()); return manage(res); } boolean union_set::is_subset(const union_set &uset2) const { auto res = isl_union_set_is_subset(get(), uset2.get()); return manage(res); } union_map union_set::lex_ge_union_set(union_set uset2) const { auto res = isl_union_set_lex_ge_union_set(copy(), uset2.release()); return manage(res); } union_map union_set::lex_gt_union_set(union_set uset2) const { auto res = isl_union_set_lex_gt_union_set(copy(), uset2.release()); return manage(res); } union_map union_set::lex_le_union_set(union_set uset2) const { auto res = isl_union_set_lex_le_union_set(copy(), uset2.release()); return manage(res); } union_map union_set::lex_lt_union_set(union_set uset2) const { auto res = isl_union_set_lex_lt_union_set(copy(), uset2.release()); return manage(res); } union_set union_set::lexmax() const { auto res = isl_union_set_lexmax(copy()); return manage(res); } union_set union_set::lexmin() const { auto res = isl_union_set_lexmin(copy()); return manage(res); } multi_val union_set::min_multi_union_pw_aff(const multi_union_pw_aff &obj) const { auto res = isl_union_set_min_multi_union_pw_aff(get(), obj.get()); return manage(res); } int union_set::n_set() const { auto res = isl_union_set_n_set(get()); return res; } set union_set::params() const { auto res = isl_union_set_params(copy()); return manage(res); } union_set union_set::polyhedral_hull() const { auto res = isl_union_set_polyhedral_hull(copy()); return manage(res); } union_set union_set::preimage(multi_aff ma) const { auto res = isl_union_set_preimage_multi_aff(copy(), ma.release()); return manage(res); } union_set union_set::preimage(pw_multi_aff pma) const { auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release()); return manage(res); } union_set union_set::preimage(union_pw_multi_aff upma) const { auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release()); return manage(res); } union_set union_set::product(union_set uset2) const { auto res = isl_union_set_product(copy(), uset2.release()); return manage(res); } union_set union_set::project_out(isl::dim type, unsigned int first, unsigned int n) const { auto res = isl_union_set_project_out(copy(), static_cast(type), first, n); return manage(res); } union_set union_set::remove_divs() const { auto res = isl_union_set_remove_divs(copy()); return manage(res); } union_set union_set::remove_redundancies() const { auto res = isl_union_set_remove_redundancies(copy()); return manage(res); } union_set union_set::reset_user() const { auto res = isl_union_set_reset_user(copy()); return manage(res); } basic_set union_set::sample() const { auto res = isl_union_set_sample(copy()); return manage(res); } point union_set::sample_point() const { auto res = isl_union_set_sample_point(copy()); return manage(res); } union_set union_set::simple_hull() const { auto res = isl_union_set_simple_hull(copy()); return manage(res); } union_set union_set::solutions() const { auto res = isl_union_set_solutions(copy()); return manage(res); } union_set union_set::subtract(union_set uset2) const { auto res = isl_union_set_subtract(copy(), uset2.release()); return manage(res); } union_set union_set::unite(union_set uset2) const { auto res = isl_union_set_union(copy(), uset2.release()); return manage(res); } union_set union_set::universe() const { auto res = isl_union_set_universe(copy()); return manage(res); } union_map union_set::unwrap() const { auto res = isl_union_set_unwrap(copy()); return manage(res); } union_map union_set::wrapped_domain_map() const { auto res = isl_union_set_wrapped_domain_map(copy()); return manage(res); } // implementations for isl::union_set_list union_set_list manage(__isl_take isl_union_set_list *ptr) { return union_set_list(ptr); } union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) { ptr = isl_union_set_list_copy(ptr); return union_set_list(ptr); } union_set_list::union_set_list() : ptr(nullptr) {} union_set_list::union_set_list(const union_set_list &obj) : ptr(nullptr) { ptr = obj.copy(); } union_set_list::union_set_list(std::nullptr_t) : ptr(nullptr) {} union_set_list::union_set_list(__isl_take isl_union_set_list *ptr) : ptr(ptr) {} union_set_list &union_set_list::operator=(union_set_list obj) { std::swap(this->ptr, obj.ptr); return *this; } union_set_list::~union_set_list() { if (ptr) isl_union_set_list_free(ptr); } __isl_give isl_union_set_list *union_set_list::copy() const & { return isl_union_set_list_copy(ptr); } __isl_keep isl_union_set_list *union_set_list::get() const { return ptr; } __isl_give isl_union_set_list *union_set_list::release() { isl_union_set_list *tmp = ptr; ptr = nullptr; return tmp; } bool union_set_list::is_null() const { return ptr == nullptr; } union_set_list::operator bool() const { return !is_null(); } ctx union_set_list::get_ctx() const { return ctx(isl_union_set_list_get_ctx(ptr)); } void union_set_list::dump() const { isl_union_set_list_dump(get()); } union_set_list union_set_list::add(union_set el) const { auto res = isl_union_set_list_add(copy(), el.release()); return manage(res); } union_set_list union_set_list::alloc(ctx ctx, int n) { auto res = isl_union_set_list_alloc(ctx.release(), n); return manage(res); } union_set_list union_set_list::concat(union_set_list list2) const { auto res = isl_union_set_list_concat(copy(), list2.release()); return manage(res); } union_set_list union_set_list::drop(unsigned int first, unsigned int n) const { auto res = isl_union_set_list_drop(copy(), first, n); return manage(res); } stat union_set_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } union_set_list union_set_list::from_union_set(union_set el) { auto res = isl_union_set_list_from_union_set(el.release()); return manage(res); } union_set union_set_list::get_at(int index) const { auto res = isl_union_set_list_get_at(get(), index); return manage(res); } union_set union_set_list::get_union_set(int index) const { auto res = isl_union_set_list_get_union_set(get(), index); return manage(res); } union_set_list union_set_list::insert(unsigned int pos, union_set el) const { auto res = isl_union_set_list_insert(copy(), pos, el.release()); return manage(res); } int union_set_list::n_union_set() const { auto res = isl_union_set_list_n_union_set(get()); return res; } union_set_list union_set_list::reverse() const { auto res = isl_union_set_list_reverse(copy()); return manage(res); } union_set_list union_set_list::set_union_set(int index, union_set el) const { auto res = isl_union_set_list_set_union_set(copy(), index, el.release()); return manage(res); } int union_set_list::size() const { auto res = isl_union_set_list_size(get()); return res; } union_set_list union_set_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_union_set_list_swap(copy(), pos1, pos2); return manage(res); } union_set union_set_list::unite() const { auto res = isl_union_set_list_union(copy()); return manage(res); } // implementations for isl::val val manage(__isl_take isl_val *ptr) { return val(ptr); } val manage_copy(__isl_keep isl_val *ptr) { ptr = isl_val_copy(ptr); return val(ptr); } val::val() : ptr(nullptr) {} val::val(const val &obj) : ptr(nullptr) { ptr = obj.copy(); } val::val(std::nullptr_t) : ptr(nullptr) {} val::val(__isl_take isl_val *ptr) : ptr(ptr) {} val::val(ctx ctx, const std::string &str) { auto res = isl_val_read_from_str(ctx.release(), str.c_str()); ptr = res; } val::val(ctx ctx, long i) { auto res = isl_val_int_from_si(ctx.release(), i); ptr = res; } val &val::operator=(val obj) { std::swap(this->ptr, obj.ptr); return *this; } val::~val() { if (ptr) isl_val_free(ptr); } __isl_give isl_val *val::copy() const & { return isl_val_copy(ptr); } __isl_keep isl_val *val::get() const { return ptr; } __isl_give isl_val *val::release() { isl_val *tmp = ptr; ptr = nullptr; return tmp; } bool val::is_null() const { return ptr == nullptr; } val::operator bool() const { return !is_null(); } ctx val::get_ctx() const { return ctx(isl_val_get_ctx(ptr)); } std::string val::to_str() const { char *Tmp = isl_val_to_str(get()); if (!Tmp) return ""; std::string S(Tmp); free(Tmp); return S; } void val::dump() const { isl_val_dump(get()); } val val::abs() const { auto res = isl_val_abs(copy()); return manage(res); } boolean val::abs_eq(const val &v2) const { auto res = isl_val_abs_eq(get(), v2.get()); return manage(res); } val val::add(val v2) const { auto res = isl_val_add(copy(), v2.release()); return manage(res); } val val::add_ui(unsigned long v2) const { auto res = isl_val_add_ui(copy(), v2); return manage(res); } val val::ceil() const { auto res = isl_val_ceil(copy()); return manage(res); } int val::cmp_si(long i) const { auto res = isl_val_cmp_si(get(), i); return res; } val val::div(val v2) const { auto res = isl_val_div(copy(), v2.release()); return manage(res); } val val::div_ui(unsigned long v2) const { auto res = isl_val_div_ui(copy(), v2); return manage(res); } boolean val::eq(const val &v2) const { auto res = isl_val_eq(get(), v2.get()); return manage(res); } val val::floor() const { auto res = isl_val_floor(copy()); return manage(res); } val val::gcd(val v2) const { auto res = isl_val_gcd(copy(), v2.release()); return manage(res); } boolean val::ge(const val &v2) const { auto res = isl_val_ge(get(), v2.get()); return manage(res); } uint32_t val::get_hash() const { auto res = isl_val_get_hash(get()); return res; } long val::get_num_si() const { auto res = isl_val_get_num_si(get()); return res; } boolean val::gt(const val &v2) const { auto res = isl_val_gt(get(), v2.get()); return manage(res); } boolean val::gt_si(long i) const { auto res = isl_val_gt_si(get(), i); return manage(res); } val val::infty(ctx ctx) { auto res = isl_val_infty(ctx.release()); return manage(res); } val val::int_from_ui(ctx ctx, unsigned long u) { auto res = isl_val_int_from_ui(ctx.release(), u); return manage(res); } val val::inv() const { auto res = isl_val_inv(copy()); return manage(res); } boolean val::is_divisible_by(const val &v2) const { auto res = isl_val_is_divisible_by(get(), v2.get()); return manage(res); } boolean val::is_infty() const { auto res = isl_val_is_infty(get()); return manage(res); } boolean val::is_int() const { auto res = isl_val_is_int(get()); return manage(res); } boolean val::is_nan() const { auto res = isl_val_is_nan(get()); return manage(res); } boolean val::is_neg() const { auto res = isl_val_is_neg(get()); return manage(res); } boolean val::is_neginfty() const { auto res = isl_val_is_neginfty(get()); return manage(res); } boolean val::is_negone() const { auto res = isl_val_is_negone(get()); return manage(res); } boolean val::is_nonneg() const { auto res = isl_val_is_nonneg(get()); return manage(res); } boolean val::is_nonpos() const { auto res = isl_val_is_nonpos(get()); return manage(res); } boolean val::is_one() const { auto res = isl_val_is_one(get()); return manage(res); } boolean val::is_pos() const { auto res = isl_val_is_pos(get()); return manage(res); } boolean val::is_rat() const { auto res = isl_val_is_rat(get()); return manage(res); } boolean val::is_zero() const { auto res = isl_val_is_zero(get()); return manage(res); } boolean val::le(const val &v2) const { auto res = isl_val_le(get(), v2.get()); return manage(res); } boolean val::lt(const val &v2) const { auto res = isl_val_lt(get(), v2.get()); return manage(res); } val val::max(val v2) const { auto res = isl_val_max(copy(), v2.release()); return manage(res); } val val::min(val v2) const { auto res = isl_val_min(copy(), v2.release()); return manage(res); } val val::mod(val v2) const { auto res = isl_val_mod(copy(), v2.release()); return manage(res); } val val::mul(val v2) const { auto res = isl_val_mul(copy(), v2.release()); return manage(res); } val val::mul_ui(unsigned long v2) const { auto res = isl_val_mul_ui(copy(), v2); return manage(res); } size_t val::n_abs_num_chunks(size_t size) const { auto res = isl_val_n_abs_num_chunks(get(), size); return res; } val val::nan(ctx ctx) { auto res = isl_val_nan(ctx.release()); return manage(res); } boolean val::ne(const val &v2) const { auto res = isl_val_ne(get(), v2.get()); return manage(res); } val val::neg() const { auto res = isl_val_neg(copy()); return manage(res); } val val::neginfty(ctx ctx) { auto res = isl_val_neginfty(ctx.release()); return manage(res); } val val::negone(ctx ctx) { auto res = isl_val_negone(ctx.release()); return manage(res); } val val::one(ctx ctx) { auto res = isl_val_one(ctx.release()); return manage(res); } val val::pow2() const { auto res = isl_val_pow2(copy()); return manage(res); } val val::set_si(long i) const { auto res = isl_val_set_si(copy(), i); return manage(res); } int val::sgn() const { auto res = isl_val_sgn(get()); return res; } val val::sub(val v2) const { auto res = isl_val_sub(copy(), v2.release()); return manage(res); } val val::sub_ui(unsigned long v2) const { auto res = isl_val_sub_ui(copy(), v2); return manage(res); } val val::trunc() const { auto res = isl_val_trunc(copy()); return manage(res); } val val::zero(ctx ctx) { auto res = isl_val_zero(ctx.release()); return manage(res); } // implementations for isl::val_list val_list manage(__isl_take isl_val_list *ptr) { return val_list(ptr); } val_list manage_copy(__isl_keep isl_val_list *ptr) { ptr = isl_val_list_copy(ptr); return val_list(ptr); } val_list::val_list() : ptr(nullptr) {} val_list::val_list(const val_list &obj) : ptr(nullptr) { ptr = obj.copy(); } val_list::val_list(std::nullptr_t) : ptr(nullptr) {} val_list::val_list(__isl_take isl_val_list *ptr) : ptr(ptr) {} val_list &val_list::operator=(val_list obj) { std::swap(this->ptr, obj.ptr); return *this; } val_list::~val_list() { if (ptr) isl_val_list_free(ptr); } __isl_give isl_val_list *val_list::copy() const & { return isl_val_list_copy(ptr); } __isl_keep isl_val_list *val_list::get() const { return ptr; } __isl_give isl_val_list *val_list::release() { isl_val_list *tmp = ptr; ptr = nullptr; return tmp; } bool val_list::is_null() const { return ptr == nullptr; } val_list::operator bool() const { return !is_null(); } ctx val_list::get_ctx() const { return ctx(isl_val_list_get_ctx(ptr)); } void val_list::dump() const { isl_val_list_dump(get()); } val_list val_list::add(val el) const { auto res = isl_val_list_add(copy(), el.release()); return manage(res); } val_list val_list::alloc(ctx ctx, int n) { auto res = isl_val_list_alloc(ctx.release(), n); return manage(res); } val_list val_list::concat(val_list list2) const { auto res = isl_val_list_concat(copy(), list2.release()); return manage(res); } val_list val_list::drop(unsigned int first, unsigned int n) const { auto res = isl_val_list_drop(copy(), first, n); return manage(res); } stat val_list::foreach(const std::function &fn) const { struct fn_data { const std::function *func; } fn_data = { &fn }; auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat { auto *data = static_cast(arg_1); stat ret = (*data->func)(manage(arg_0)); return ret.release(); }; auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data); return manage(res); } val_list val_list::from_val(val el) { auto res = isl_val_list_from_val(el.release()); return manage(res); } val val_list::get_at(int index) const { auto res = isl_val_list_get_at(get(), index); return manage(res); } val val_list::get_val(int index) const { auto res = isl_val_list_get_val(get(), index); return manage(res); } val_list val_list::insert(unsigned int pos, val el) const { auto res = isl_val_list_insert(copy(), pos, el.release()); return manage(res); } int val_list::n_val() const { auto res = isl_val_list_n_val(get()); return res; } val_list val_list::reverse() const { auto res = isl_val_list_reverse(copy()); return manage(res); } val_list val_list::set_val(int index, val el) const { auto res = isl_val_list_set_val(copy(), index, el.release()); return manage(res); } int val_list::size() const { auto res = isl_val_list_size(get()); return res; } val_list val_list::swap(unsigned int pos1, unsigned int pos2) const { auto res = isl_val_list_swap(copy(), pos1, pos2); return manage(res); } // implementations for isl::vec vec manage(__isl_take isl_vec *ptr) { return vec(ptr); } vec manage_copy(__isl_keep isl_vec *ptr) { ptr = isl_vec_copy(ptr); return vec(ptr); } vec::vec() : ptr(nullptr) {} vec::vec(const vec &obj) : ptr(nullptr) { ptr = obj.copy(); } vec::vec(std::nullptr_t) : ptr(nullptr) {} vec::vec(__isl_take isl_vec *ptr) : ptr(ptr) {} vec &vec::operator=(vec obj) { std::swap(this->ptr, obj.ptr); return *this; } vec::~vec() { if (ptr) isl_vec_free(ptr); } __isl_give isl_vec *vec::copy() const & { return isl_vec_copy(ptr); } __isl_keep isl_vec *vec::get() const { return ptr; } __isl_give isl_vec *vec::release() { isl_vec *tmp = ptr; ptr = nullptr; return tmp; } bool vec::is_null() const { return ptr == nullptr; } vec::operator bool() const { return !is_null(); } ctx vec::get_ctx() const { return ctx(isl_vec_get_ctx(ptr)); } void vec::dump() const { isl_vec_dump(get()); } vec vec::add(vec vec2) const { auto res = isl_vec_add(copy(), vec2.release()); return manage(res); } vec vec::add_els(unsigned int n) const { auto res = isl_vec_add_els(copy(), n); return manage(res); } vec vec::alloc(ctx ctx, unsigned int size) { auto res = isl_vec_alloc(ctx.release(), size); return manage(res); } vec vec::ceil() const { auto res = isl_vec_ceil(copy()); return manage(res); } vec vec::clr() const { auto res = isl_vec_clr(copy()); return manage(res); } int vec::cmp_element(const vec &vec2, int pos) const { auto res = isl_vec_cmp_element(get(), vec2.get(), pos); return res; } vec vec::concat(vec vec2) const { auto res = isl_vec_concat(copy(), vec2.release()); return manage(res); } vec vec::drop_els(unsigned int pos, unsigned int n) const { auto res = isl_vec_drop_els(copy(), pos, n); return manage(res); } vec vec::extend(unsigned int size) const { auto res = isl_vec_extend(copy(), size); return manage(res); } val vec::get_element_val(int pos) const { auto res = isl_vec_get_element_val(get(), pos); return manage(res); } vec vec::insert_els(unsigned int pos, unsigned int n) const { auto res = isl_vec_insert_els(copy(), pos, n); return manage(res); } vec vec::insert_zero_els(unsigned int pos, unsigned int n) const { auto res = isl_vec_insert_zero_els(copy(), pos, n); return manage(res); } boolean vec::is_equal(const vec &vec2) const { auto res = isl_vec_is_equal(get(), vec2.get()); return manage(res); } vec vec::mat_product(mat mat) const { auto res = isl_vec_mat_product(copy(), mat.release()); return manage(res); } vec vec::move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const { auto res = isl_vec_move_els(copy(), dst_col, src_col, n); return manage(res); } vec vec::neg() const { auto res = isl_vec_neg(copy()); return manage(res); } vec vec::set_element_si(int pos, int v) const { auto res = isl_vec_set_element_si(copy(), pos, v); return manage(res); } vec vec::set_element_val(int pos, val v) const { auto res = isl_vec_set_element_val(copy(), pos, v.release()); return manage(res); } vec vec::set_si(int v) const { auto res = isl_vec_set_si(copy(), v); return manage(res); } vec vec::set_val(val v) const { auto res = isl_vec_set_val(copy(), v.release()); return manage(res); } int vec::size() const { auto res = isl_vec_size(get()); return res; } vec vec::sort() const { auto res = isl_vec_sort(copy()); return manage(res); } vec vec::zero(ctx ctx, unsigned int size) { auto res = isl_vec_zero(ctx.release(), size); return manage(res); } vec vec::zero_extend(unsigned int size) const { auto res = isl_vec_zero_extend(copy(), size); return manage(res); } } // namespace noexceptions } // namespace isl #endif /* ISL_CPP_CHECKED */