/// These are automatically generated templated 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_TYPED_CPP #define ISL_TYPED_CPP #include #include namespace isl { namespace typed { template struct pair {}; struct Anonymous; template struct aff; template using aff_on = aff; template struct aff_list; template using aff_list_on = aff_list; template struct basic_map; template struct basic_set; template struct fixed_box; template struct id; template struct id_list; template struct map; template struct map_list; template struct multi_aff; template struct multi_id; template struct multi_pw_aff; template struct multi_union_pw_aff; template struct multi_val; template struct point; template struct pw_aff; template using pw_aff_on = pw_aff; template struct pw_aff_list; template using pw_aff_list_on = pw_aff_list; template struct pw_multi_aff; template struct pw_multi_aff_list; template struct set; template struct set_list; template struct space; template struct union_map; template struct union_pw_aff; template using union_pw_aff_on = union_pw_aff; template struct union_pw_aff_list; template using union_pw_aff_list_on = union_pw_aff_list; template struct union_pw_multi_aff; template struct union_set; template struct union_set_list; template struct val; template struct val_list; template <> struct aff : public isl::aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; aff() = default; aff(const isl::aff &obj) : isl::aff(obj) {} static aff from(const isl::aff &obj) { return aff(obj); } inline explicit aff(const isl::ctx &ctx, const std::string &str); inline typed::aff add(const typed::aff &aff2) const; inline typed::multi_aff add(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::aff add_constant(const typed::val &v) const; inline typed::aff add_constant(long v) const; inline typed::multi_aff add_constant(const typed::multi_val &mv) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::aff as_aff() const; inline typed::map as_map() const = delete; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::union_map as_union_map() const = delete; inline typed::aff at(int pos) const; inline typed::basic_set<> bind(const typed::id &id) const; inline typed::basic_set<> bind(const std::string &id) const; inline typed::basic_set<> bind(const typed::multi_id &tuple) const; inline typed::pw_aff bind_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::aff ceil() const; inline typed::pw_aff coalesce() const; inline typed::pw_aff cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const; inline typed::multi_val constant_multi_val() const; inline typed::val constant_val() const; inline typed::val get_constant_val() const = delete; inline typed::set<> domain() const; inline typed::aff domain_reverse() const = delete; inline typed::pw_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::aff floor() const; inline typed::set ge_set(const typed::aff<> &aff2) const = delete; inline typed::set ge_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::aff gist(const typed::set<> &context) const; inline typed::union_pw_aff gist(const typed::union_set<> &context) const; inline typed::aff gist(const typed::basic_set<> &context) const; inline typed::aff gist(const typed::point<> &context) const; inline typed::aff gist_params(const typed::set<> &context) const; inline typed::aff gist_params(const typed::basic_set<> &context) const; inline typed::aff gist_params(const typed::point<> &context) const; inline typed::set gt_set(const typed::aff<> &aff2) const = delete; inline typed::set gt_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::multi_aff identity() const; template inline typed::pw_aff insert_domain(const typed::space &domain) const; inline typed::pw_aff intersect_domain(const typed::set<> &set) const = delete; inline typed::union_pw_aff intersect_domain(const typed::space<> &space) const = delete; inline typed::union_pw_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_aff intersect_params(const typed::set<> &set) const; inline typed::set le_set(const typed::aff<> &aff2) const = delete; inline typed::set le_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::aff_list list() const; inline typed::set lt_set(const typed::aff<> &aff2) const = delete; inline typed::set lt_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff max(const typed::pw_aff &pwaff2) const; inline typed::multi_val max_multi_val() const; inline typed::val max_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff min(const typed::pw_aff &pwaff2) const; inline typed::multi_val min_multi_val() const; inline typed::val min_val() const; inline typed::aff mod(const typed::val &mod) const; inline typed::aff mod(long mod) const; inline typed::aff neg() const; inline typed::set<> params() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_aff> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff> product(const typed::pw_multi_aff &pma2) const; inline typed::aff pullback(const typed::multi_aff<> &ma) const = delete; inline typed::pw_aff pullback(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::pw_aff pullback(const typed::pw_multi_aff<> &pma) const = delete; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::aff pullback(const typed::aff<> &ma) const = delete; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; inline typed::multi_aff range_product(const typed::multi_aff<> &multi2) const = delete; inline typed::multi_pw_aff range_product(const typed::multi_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::pw_multi_aff range_product(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::aff scale(const typed::val &v) const; inline typed::aff scale(long v) const; inline typed::multi_aff scale(const typed::multi_val &mv) const; inline typed::aff scale_down(const typed::val &v) const; inline typed::aff scale_down(long v) const; inline typed::multi_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_aff set_at(int pos, const typed::aff &el) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::aff sub(const typed::aff &aff2) const; inline typed::multi_aff sub(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff sub(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff sub(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff subtract_domain(const typed::set<> &set) const = delete; inline typed::union_pw_aff subtract_domain(const typed::space<> &space) const = delete; inline typed::union_pw_aff subtract_domain(const typed::union_set<> &uset) const = delete; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::multi_union_pw_aff to_multi_union_pw_aff() const; inline typed::pw_multi_aff to_pw_multi_aff() const; inline typed::union_pw_aff to_union_pw_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; template inline typed::aff unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_aff union_add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff union_add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; }; template struct aff : public isl::aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; aff() = default; template {}, bool>::type = true> aff(const aff &obj) : isl::aff(obj) {} private: template {}, bool>::type = true> aff(const base &obj) : isl::aff(obj) {} public: static aff from(const isl::aff &obj) { return aff(obj); } inline explicit aff(const isl::ctx &ctx, const std::string &str); inline typed::aff add(const typed::aff &aff2) const; inline typed::multi_aff add(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::aff add_constant(const typed::val &v) const; inline typed::aff add_constant(long v) const; inline typed::multi_aff add_constant(const typed::multi_val &mv) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::aff as_aff() const; inline typed::map as_map() const; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const = delete; inline typed::union_map as_union_map() const; inline typed::aff at(int pos) const; inline typed::basic_set bind(const typed::id &id) const; inline typed::basic_set bind(const std::string &id) const; inline typed::basic_set bind(const typed::multi_id &tuple) const; inline typed::pw_aff bind_domain(const typed::multi_id &tuple) const; inline typed::pw_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::aff ceil() const; inline typed::pw_aff coalesce() const; inline typed::pw_aff cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const; inline typed::multi_val constant_multi_val() const; inline typed::val constant_val() const; inline typed::val get_constant_val() const = delete; inline typed::set domain() const; inline typed::aff domain_reverse() const = delete; inline typed::pw_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::aff floor() const; inline typed::set ge_set(const typed::aff &aff2) const; inline typed::set ge_set(const typed::pw_aff &pwaff2) const; inline typed::aff gist(const typed::set &context) const; inline typed::union_pw_aff gist(const typed::union_set &context) const; inline typed::aff gist(const typed::basic_set &context) const; inline typed::aff gist(const typed::point &context) const; inline typed::aff gist_params(const typed::set<> &context) const; inline typed::aff gist_params(const typed::basic_set<> &context) const; inline typed::aff gist_params(const typed::point<> &context) const; inline typed::set gt_set(const typed::aff &aff2) const; inline typed::set gt_set(const typed::pw_aff &pwaff2) const; inline typed::multi_aff identity() const; inline typed::pw_aff insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_aff intersect_domain(const typed::set &set) const; inline typed::union_pw_aff intersect_domain(const typed::space &space) const; inline typed::union_pw_aff intersect_domain(const typed::union_set &uset) const; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_aff intersect_params(const typed::set<> &set) const; inline typed::set le_set(const typed::aff &aff2) const; inline typed::set le_set(const typed::pw_aff &pwaff2) const; inline typed::aff_list list() const; inline typed::set lt_set(const typed::aff &aff2) const; inline typed::set lt_set(const typed::pw_aff &pwaff2) const; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff max(const typed::pw_aff &pwaff2) const; inline typed::multi_val max_multi_val() const; inline typed::val max_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff min(const typed::pw_aff &pwaff2) const; inline typed::multi_val min_multi_val() const; inline typed::val min_val() const; inline typed::aff mod(const typed::val &mod) const; inline typed::aff mod(long mod) const; inline typed::aff neg() const; inline typed::set<> params() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_aff, pair> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::aff pullback(const typed::multi_aff &ma) const; inline typed::aff pullback(const typed::multi_aff &ma) const; template inline typed::pw_aff pullback(const typed::multi_pw_aff &mpa) const; inline typed::pw_aff pullback(const typed::multi_pw_aff &mpa) const; template inline typed::pw_aff pullback(const typed::pw_multi_aff &pma) const; inline typed::pw_aff pullback(const typed::pw_multi_aff &pma) const; template inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; template inline typed::aff pullback(const typed::aff &ma) const; inline typed::aff pullback(const typed::aff &ma) const; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; template inline typed::multi_aff> range_product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::pw_multi_aff> range_product(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff> range_product(const typed::union_pw_multi_aff &upma2) const; inline typed::aff scale(const typed::val &v) const; inline typed::aff scale(long v) const; inline typed::multi_aff scale(const typed::multi_val &mv) const; inline typed::aff scale_down(const typed::val &v) const; inline typed::aff scale_down(long v) const; inline typed::multi_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_aff set_at(int pos, const typed::aff &el) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::aff sub(const typed::aff &aff2) const; inline typed::multi_aff sub(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff sub(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff sub(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff subtract_domain(const typed::set &set) const; inline typed::union_pw_aff subtract_domain(const typed::space &space) const; inline typed::union_pw_aff subtract_domain(const typed::union_set &uset) const; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::multi_union_pw_aff to_multi_union_pw_aff() const; inline typed::pw_multi_aff to_pw_multi_aff() const; inline typed::union_pw_aff to_union_pw_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; inline typed::aff unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_aff union_add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff union_add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; }; template struct aff, Anonymous> : public isl::aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; aff() = default; template {} && std::is_base_of{}, bool>::type = true> aff(const aff, Anonymous> &obj) : isl::aff(obj) {} private: template {}, bool>::type = true> aff(const base &obj) : isl::aff(obj) {} public: static aff from(const isl::aff &obj) { return aff(obj); } inline explicit aff(const isl::ctx &ctx, const std::string &str); inline typed::aff, Anonymous> add(const typed::aff, Anonymous> &aff2) const; inline typed::multi_aff, Anonymous> add(const typed::multi_aff, Anonymous> &multi2) const; inline typed::multi_pw_aff, Anonymous> add(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::multi_union_pw_aff, Anonymous> add(const typed::multi_union_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> add(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_multi_aff, Anonymous> add(const typed::pw_multi_aff, Anonymous> &pma2) const; inline typed::union_pw_aff, Anonymous> add(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> add(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::aff, Anonymous> add_constant(const typed::val &v) const; inline typed::aff, Anonymous> add_constant(long v) const; inline typed::multi_aff, Anonymous> add_constant(const typed::multi_val &mv) const; template inline typed::union_pw_multi_aff, Arg1> apply(const typed::union_pw_multi_aff &upma2) const; inline typed::aff, Anonymous> as_aff() const; inline typed::map, Anonymous> as_map() const; inline typed::multi_aff, Anonymous> as_multi_aff() const; inline typed::multi_union_pw_aff, Anonymous> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Anonymous> as_pw_multi_aff() const; inline typed::set, Anonymous> as_set() const = delete; inline typed::union_map, Anonymous> as_union_map() const; inline typed::aff, Anonymous> at(int pos) const; inline typed::basic_set> bind(const typed::id &id) const; inline typed::basic_set> bind(const std::string &id) const; inline typed::basic_set> bind(const typed::multi_id &tuple) const; inline typed::pw_aff bind_domain(const typed::multi_id> &tuple) const; inline typed::pw_aff bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::aff, Anonymous> ceil() const; inline typed::pw_aff, Anonymous> coalesce() const; inline typed::pw_aff, Anonymous> cond(const typed::pw_aff, Anonymous> &pwaff_true, const typed::pw_aff, Anonymous> &pwaff_false) const; inline typed::multi_val constant_multi_val() const; inline typed::val constant_val() const; inline typed::val, Anonymous> get_constant_val() const = delete; inline typed::set> domain() const; inline typed::aff, Anonymous> domain_reverse() const; inline typed::pw_aff, Anonymous> drop_unused_params() const; inline typed::pw_multi_aff, Anonymous> extract_pw_multi_aff(const typed::space, Anonymous> &space) const; inline typed::aff, Anonymous> floor() const; inline typed::set> ge_set(const typed::aff, Anonymous> &aff2) const; inline typed::set> ge_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::aff, Anonymous> gist(const typed::set> &context) const; inline typed::union_pw_aff, Anonymous> gist(const typed::union_set> &context) const; inline typed::aff, Anonymous> gist(const typed::basic_set> &context) const; inline typed::aff, Anonymous> gist(const typed::point> &context) const; inline typed::aff, Anonymous> gist_params(const typed::set<> &context) const; inline typed::aff, Anonymous> gist_params(const typed::basic_set<> &context) const; inline typed::aff, Anonymous> gist_params(const typed::point<> &context) const; inline typed::set> gt_set(const typed::aff, Anonymous> &aff2) const; inline typed::set> gt_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::multi_aff, Anonymous> identity() const; inline typed::pw_aff, Anonymous> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_aff, Anonymous> intersect_domain(const typed::set> &set) const; inline typed::union_pw_aff, Anonymous> intersect_domain(const typed::space> &space) const; inline typed::union_pw_aff, Anonymous> intersect_domain(const typed::union_set> &uset) const; inline typed::union_pw_aff, Anonymous> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::pw_aff, Anonymous> intersect_params(const typed::set<> &set) const; inline typed::set> le_set(const typed::aff, Anonymous> &aff2) const; inline typed::set> le_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::aff_list, Anonymous> list() const; inline typed::set> lt_set(const typed::aff, Anonymous> &aff2) const; inline typed::set> lt_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::multi_pw_aff, Anonymous> max(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> max(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::multi_val max_multi_val() const; inline typed::val max_val() const; inline typed::multi_pw_aff, Anonymous> min(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> min(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::multi_val min_multi_val() const; inline typed::val min_val() const; inline typed::aff, Anonymous> mod(const typed::val &mod) const; inline typed::aff, Anonymous> mod(long mod) const; inline typed::aff, Anonymous> neg() const; inline typed::set<> params() const; template inline typed::pw_multi_aff, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::multi_aff, Arg1>, pair> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, Arg1>, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, Arg1>, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::aff pullback(const typed::multi_aff> &ma) const; inline typed::aff pullback(const typed::multi_aff> &ma) const; template inline typed::pw_aff pullback(const typed::multi_pw_aff> &mpa) const; inline typed::pw_aff pullback(const typed::multi_pw_aff> &mpa) const; template inline typed::pw_aff pullback(const typed::pw_multi_aff> &pma) const; inline typed::pw_aff pullback(const typed::pw_multi_aff> &pma) const; template inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; template inline typed::aff pullback(const typed::aff> &ma) const; inline typed::aff pullback(const typed::aff> &ma) const; inline typed::pw_multi_aff_list, Anonymous> pw_multi_aff_list() const; inline typed::pw_multi_aff, Anonymous> range_factor_domain() const = delete; inline typed::pw_multi_aff, Anonymous> range_factor_range() const = delete; template inline typed::multi_aff, pair> range_product(const typed::multi_aff, Arg1> &multi2) const; template inline typed::multi_pw_aff, pair> range_product(const typed::multi_pw_aff, Arg1> &multi2) const; template inline typed::multi_union_pw_aff, pair> range_product(const typed::multi_union_pw_aff, Arg1> &multi2) const; template inline typed::pw_multi_aff, pair> range_product(const typed::pw_multi_aff, Arg1> &pma2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_multi_aff, Arg1> &upma2) const; inline typed::aff, Anonymous> scale(const typed::val &v) const; inline typed::aff, Anonymous> scale(long v) const; inline typed::multi_aff, Anonymous> scale(const typed::multi_val &mv) const; inline typed::aff, Anonymous> scale_down(const typed::val &v) const; inline typed::aff, Anonymous> scale_down(long v) const; inline typed::multi_aff, Anonymous> scale_down(const typed::multi_val &mv) const; inline typed::multi_aff, Anonymous> set_at(int pos, const typed::aff, Anonymous> &el) const; inline typed::multi_pw_aff, Anonymous> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, Anonymous> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; template inline typed::multi_aff, Arg1> set_range_tuple(const typed::id &id) const; template inline typed::multi_aff, Arg1> set_range_tuple(const std::string &id) const; inline typed::space, Anonymous> space() const; inline typed::aff, Anonymous> sub(const typed::aff, Anonymous> &aff2) const; inline typed::multi_aff, Anonymous> sub(const typed::multi_aff, Anonymous> &multi2) const; inline typed::multi_pw_aff, Anonymous> sub(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::multi_union_pw_aff, Anonymous> sub(const typed::multi_union_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> sub(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_multi_aff, Anonymous> sub(const typed::pw_multi_aff, Anonymous> &pma2) const; inline typed::union_pw_aff, Anonymous> sub(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> sub(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::pw_aff, Anonymous> subtract_domain(const typed::set> &set) const; inline typed::union_pw_aff, Anonymous> subtract_domain(const typed::space> &space) const; inline typed::union_pw_aff, Anonymous> subtract_domain(const typed::union_set> &uset) const; inline typed::multi_pw_aff, Anonymous> to_multi_pw_aff() const; inline typed::multi_union_pw_aff, Anonymous> to_multi_union_pw_aff() const; inline typed::pw_multi_aff, Anonymous> to_pw_multi_aff() const; inline typed::union_pw_aff, Anonymous> to_union_pw_aff() const; inline typed::union_pw_multi_aff, Anonymous> to_union_pw_multi_aff() const; inline typed::aff, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, Anonymous> union_add(const typed::multi_pw_aff, Anonymous> &mpa2) const; inline typed::multi_union_pw_aff, Anonymous> union_add(const typed::multi_union_pw_aff, Anonymous> &mupa2) const; inline typed::pw_aff, Anonymous> union_add(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_multi_aff, Anonymous> union_add(const typed::pw_multi_aff, Anonymous> &pma2) const; inline typed::union_pw_aff, Anonymous> union_add(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> union_add(const typed::union_pw_multi_aff, Anonymous> &upma2) const; }; template <> struct aff_list : public isl::aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; aff_list() = default; aff_list(const isl::aff_list &obj) : isl::aff_list(obj) {} static aff_list from(const isl::aff_list &obj) { return aff_list(obj); } inline explicit aff_list(const isl::ctx &ctx, int n); inline explicit aff_list(const typed::aff &el); inline explicit aff_list(const isl::ctx &ctx, const std::string &str); inline typed::aff_list add(const typed::aff &el) const; inline typed::aff at(int index) const; inline typed::aff get_at(int index) const = delete; inline typed::aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::aff)> &follows, const std::function)> &fn) const; inline typed::aff_list set_at(int index, const typed::aff &el) const; }; template struct aff_list : public isl::aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; aff_list() = default; template {}, bool>::type = true> aff_list(const aff_list &obj) : isl::aff_list(obj) {} private: template {}, bool>::type = true> aff_list(const base &obj) : isl::aff_list(obj) {} public: static aff_list from(const isl::aff_list &obj) { return aff_list(obj); } inline explicit aff_list(const isl::ctx &ctx, int n); inline explicit aff_list(const typed::aff &el); inline explicit aff_list(const isl::ctx &ctx, const std::string &str); inline typed::aff_list add(const typed::aff &el) const; inline typed::aff at(int index) const; inline typed::aff get_at(int index) const = delete; inline typed::aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::aff)> &follows, const std::function)> &fn) const; inline typed::aff_list set_at(int index, const typed::aff &el) const; }; template struct basic_map : public isl::basic_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_map() = default; template {} && std::is_base_of{}, bool>::type = true> basic_map(const basic_map &obj) : isl::basic_map(obj) {} private: template {}, bool>::type = true> basic_map(const base &obj) : isl::basic_map(obj) {} public: static basic_map from(const isl::basic_map &obj) { return basic_map(obj); } inline explicit basic_map(const isl::ctx &ctx, const std::string &str); template inline typed::basic_map apply_domain(const typed::basic_map &bmap2) const; template inline typed::map apply_domain(const typed::map &map2) const; template inline typed::union_map apply_domain(const typed::union_map &umap2) const; template inline typed::basic_map apply_range(const typed::basic_map &bmap2) const; template inline typed::map apply_range(const typed::map &map2) const; template inline typed::union_map apply_range(const typed::union_map &umap2) const; inline typed::map as_map() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_pw_multi_aff as_union_pw_multi_aff() const; inline typed::set bind_domain(const typed::multi_id &tuple) const; inline typed::set bind_range(const typed::multi_id &tuple) const; inline typed::map coalesce() const; inline typed::map curry() const = delete; inline typed::basic_set deltas() const = delete; inline typed::basic_map detect_equalities() const; inline typed::set domain() const; inline typed::map domain_factor_domain() const = delete; inline typed::map domain_factor_range() const = delete; inline typed::union_map, Domain> domain_map() const; inline typed::union_pw_multi_aff, Domain> domain_map_union_pw_multi_aff() const; template inline typed::map, Range> domain_product(const typed::map &map2) const; template inline typed::union_map, Range> domain_product(const typed::union_map &umap2) const; inline typed::map domain_reverse() const = delete; inline typed::map drop_unused_params() const; inline typed::map eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function)> &test) const; inline typed::map extract_map(const typed::space &space) const; inline typed::basic_map flatten_domain() const = delete; inline typed::basic_map flatten_range() const = delete; inline void foreach_basic_map(const std::function)> &fn) const; inline void foreach_map(const std::function)> &fn) const; inline typed::basic_map gist(const typed::basic_map &context) const; inline typed::map gist(const typed::map &context) const; inline typed::union_map gist(const typed::union_map &context) const; inline typed::map gist_domain(const typed::set &context) const; inline typed::union_map gist_domain(const typed::union_set &uset) const; inline typed::map gist_params(const typed::set<> &context) const; inline typed::basic_map intersect(const typed::basic_map &bmap2) const; inline typed::map intersect(const typed::map &map2) const; inline typed::union_map intersect(const typed::union_map &umap2) const; inline typed::basic_map intersect_domain(const typed::basic_set &bset) const; inline typed::map intersect_domain(const typed::set &set) const; inline typed::union_map intersect_domain(const typed::space &space) const; inline typed::union_map intersect_domain(const typed::union_set &uset) const; inline typed::basic_map intersect_domain(const typed::point &bset) const; inline typed::map intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map intersect_params(const typed::set<> ¶ms) const; inline typed::basic_map intersect_range(const typed::basic_set &bset) const; inline typed::map intersect_range(const typed::set &set) const; inline typed::union_map intersect_range(const typed::space &space) const; inline typed::union_map intersect_range(const typed::union_set &uset) const; inline typed::basic_map intersect_range(const typed::point &bset) const; inline typed::map intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::map lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::map lower_bound(const typed::multi_pw_aff &lower) const; inline typed::map_list map_list() const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map preimage_domain(const typed::multi_aff &ma) const; template inline typed::map preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::map preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::map preimage_range(const typed::multi_aff &ma) const; template inline typed::map preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::map, pair> product(const typed::map &map2) const; template inline typed::union_map, pair> product(const typed::union_map &umap2) const; inline typed::map project_out_all_params() const; inline typed::map project_out_param(const typed::id &id) const; inline typed::map project_out_param(const std::string &id) const; inline typed::map project_out_param(const typed::id_list &list) const; inline typed::set range() const; inline typed::map range_factor_domain() const = delete; inline typed::map range_factor_range() const = delete; inline typed::fixed_box range_lattice_tile() const; inline typed::union_map, Range> range_map() const; template inline typed::map> range_product(const typed::map &map2) const; template inline typed::union_map> range_product(const typed::union_map &umap2) const; inline typed::map range_reverse() const = delete; inline typed::fixed_box range_simple_fixed_box_hull() const; inline typed::basic_map reverse() const; template inline typed::map set_domain_tuple(const typed::id &id) const; template inline typed::map set_domain_tuple(const std::string &id) const; template inline typed::map set_range_tuple(const typed::id &id) const; template inline typed::map set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::map subtract(const typed::map &map2) const; inline typed::union_map subtract(const typed::union_map &umap2) const; inline typed::union_map subtract_domain(const typed::union_set &dom) const; inline typed::union_map subtract_range(const typed::union_set &dom) const; inline typed::union_map to_union_map() const; inline typed::map uncurry() const = delete; inline typed::map unite(const typed::basic_map &bmap2) const; inline typed::map unite(const typed::map &map2) const; inline typed::union_map unite(const typed::union_map &umap2) const; inline typed::map upper_bound(const typed::multi_pw_aff &upper) const; inline typed::set> wrap() const; }; template struct basic_map, Range2> : public isl::basic_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_map() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> basic_map(const basic_map, Arg3> &obj) : isl::basic_map(obj) {} private: template {}, bool>::type = true> basic_map(const base &obj) : isl::basic_map(obj) {} public: static basic_map from(const isl::basic_map &obj) { return basic_map(obj); } inline explicit basic_map(const isl::ctx &ctx, const std::string &str); template inline typed::basic_map apply_domain(const typed::basic_map, Domain2> &bmap2) const; template inline typed::map apply_domain(const typed::map, Domain2> &map2) const; template inline typed::union_map apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::basic_map, Arg3> apply_range(const typed::basic_map &bmap2) const; template inline typed::map, Arg3> apply_range(const typed::map &map2) const; template inline typed::union_map, Arg3> apply_range(const typed::union_map &umap2) const; inline typed::map, Range2> as_map() const; inline typed::multi_union_pw_aff, Range2> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Range2> as_pw_multi_aff() const; inline typed::union_pw_multi_aff, Range2> as_union_pw_multi_aff() const; inline typed::set bind_domain(const typed::multi_id> &tuple) const; inline typed::set> bind_range(const typed::multi_id &tuple) const; inline typed::map, Range2> coalesce() const; inline typed::map> curry() const; inline typed::basic_set, Range2> deltas() const = delete; inline typed::basic_map, Range2> detect_equalities() const; inline typed::set> domain() const; inline typed::map domain_factor_domain() const; inline typed::map domain_factor_range() const; inline typed::union_map, Range2>, pair> domain_map() const; inline typed::union_pw_multi_aff, Range2>, pair> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain2>, Range2> domain_product(const typed::map &map2) const; template inline typed::union_map, Domain2>, Range2> domain_product(const typed::union_map &umap2) const; inline typed::map, Range2> domain_reverse() const; inline typed::map, Range2> drop_unused_params() const; inline typed::map, Range2> eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function, Range2>)> &test) const; inline typed::map, Range2> extract_map(const typed::space, Range2> &space) const; inline typed::basic_map flatten_domain() const; inline typed::basic_map, Range2> flatten_range() const = delete; inline void foreach_basic_map(const std::function, Range2>)> &fn) const; inline void foreach_map(const std::function, Range2>)> &fn) const; inline typed::basic_map, Range2> gist(const typed::basic_map, Range2> &context) const; inline typed::map, Range2> gist(const typed::map, Range2> &context) const; inline typed::union_map, Range2> gist(const typed::union_map, Range2> &context) const; inline typed::map, Range2> gist_domain(const typed::set> &context) const; inline typed::union_map, Range2> gist_domain(const typed::union_set> &uset) const; inline typed::map, Range2> gist_params(const typed::set<> &context) const; inline typed::basic_map, Range2> intersect(const typed::basic_map, Range2> &bmap2) const; inline typed::map, Range2> intersect(const typed::map, Range2> &map2) const; inline typed::union_map, Range2> intersect(const typed::union_map, Range2> &umap2) const; inline typed::basic_map, Range2> intersect_domain(const typed::basic_set> &bset) const; inline typed::map, Range2> intersect_domain(const typed::set> &set) const; inline typed::union_map, Range2> intersect_domain(const typed::space> &space) const; inline typed::union_map, Range2> intersect_domain(const typed::union_set> &uset) const; inline typed::basic_map, Range2> intersect_domain(const typed::point> &bset) const; inline typed::map, Range2> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, Range2> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::map, Range2> intersect_params(const typed::set<> ¶ms) const; inline typed::basic_map, Range2> intersect_range(const typed::basic_set &bset) const; inline typed::map, Range2> intersect_range(const typed::set &set) const; inline typed::union_map, Range2> intersect_range(const typed::space &space) const; inline typed::union_map, Range2> intersect_range(const typed::union_set &uset) const; inline typed::basic_map, Range2> intersect_range(const typed::point &bset) const; inline typed::map, Range2> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map, Range2> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map, Range2> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lexmax() const; inline typed::pw_multi_aff, Range2> lexmax_pw_multi_aff() const; inline typed::map, Range2> lexmin() const; inline typed::pw_multi_aff, Range2> lexmin_pw_multi_aff() const; inline typed::map, Range2> lower_bound(const typed::multi_pw_aff, Range2> &lower) const; inline typed::map_list, Range2> map_list() const; inline typed::multi_pw_aff, Range2> max_multi_pw_aff() const; inline typed::multi_pw_aff, Range2> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map preimage_domain(const typed::multi_aff> &ma) const; template inline typed::map preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::map preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Arg3> preimage_range(const typed::multi_aff &ma) const; template inline typed::map, Arg3> preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map, Arg3> preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::map, Domain2>, pair> product(const typed::map &map2) const; template inline typed::union_map, Domain2>, pair> product(const typed::union_map &umap2) const; inline typed::map, Range2> project_out_all_params() const; inline typed::map, Range2> project_out_param(const typed::id &id) const; inline typed::map, Range2> project_out_param(const std::string &id) const; inline typed::map, Range2> project_out_param(const typed::id_list &list) const; inline typed::set range() const; inline typed::map, Range2> range_factor_domain() const = delete; inline typed::map, Range2> range_factor_range() const = delete; inline typed::fixed_box, Range2> range_lattice_tile() const; inline typed::union_map, Range2>, Range2> range_map() const; template inline typed::map, pair> range_product(const typed::map, Arg3> &map2) const; template inline typed::union_map, pair> range_product(const typed::union_map, Arg3> &umap2) const; inline typed::map, Range2> range_reverse() const = delete; inline typed::fixed_box, Range2> range_simple_fixed_box_hull() const; inline typed::basic_map> reverse() const; inline typed::map, Range2> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::map, Range2> set_domain_tuple(const std::string &id) const = delete; template inline typed::map, Arg2> set_range_tuple(const typed::id &id) const; template inline typed::map, Arg2> set_range_tuple(const std::string &id) const; inline typed::space, Range2> space() const; inline typed::map, Range2> subtract(const typed::map, Range2> &map2) const; inline typed::union_map, Range2> subtract(const typed::union_map, Range2> &umap2) const; inline typed::union_map, Range2> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, Range2> subtract_range(const typed::union_set &dom) const; inline typed::union_map, Range2> to_union_map() const; inline typed::map, Range2> uncurry() const = delete; inline typed::map, Range2> unite(const typed::basic_map, Range2> &bmap2) const; inline typed::map, Range2> unite(const typed::map, Range2> &map2) const; inline typed::union_map, Range2> unite(const typed::union_map, Range2> &umap2) const; inline typed::map, Range2> upper_bound(const typed::multi_pw_aff, Range2> &upper) const; inline typed::set, Range2>> wrap() const; }; template struct basic_map : public isl::basic_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_map() = default; template {}, bool>::type = true> basic_map(const basic_map &obj) : isl::basic_map(obj) {} private: template {}, bool>::type = true> basic_map(const base &obj) : isl::basic_map(obj) {} public: static basic_map from(const isl::basic_map &obj) { return basic_map(obj); } inline explicit basic_map(const isl::ctx &ctx, const std::string &str); template inline typed::basic_map apply_domain(const typed::basic_map &bmap2) const; template inline typed::map apply_domain(const typed::map &map2) const; template inline typed::union_map apply_domain(const typed::union_map &umap2) const; template inline typed::basic_map apply_range(const typed::basic_map &bmap2) const; template inline typed::map apply_range(const typed::map &map2) const; template inline typed::union_map apply_range(const typed::union_map &umap2) const; inline typed::map as_map() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_pw_multi_aff as_union_pw_multi_aff() const; inline typed::set bind_domain(const typed::multi_id &tuple) const; inline typed::set bind_range(const typed::multi_id &tuple) const; inline typed::map coalesce() const; inline typed::map curry() const = delete; inline typed::basic_set deltas() const; inline typed::basic_map detect_equalities() const; inline typed::set domain() const; inline typed::map domain_factor_domain() const = delete; inline typed::map domain_factor_range() const = delete; inline typed::union_map, Domain> domain_map() const; inline typed::union_pw_multi_aff, Domain> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain> domain_product(const typed::map &map2) const; template inline typed::union_map, Domain> domain_product(const typed::union_map &umap2) const; inline typed::map domain_reverse() const = delete; inline typed::map drop_unused_params() const; template inline typed::map eq_at(const typed::multi_pw_aff &mpa) const; template inline typed::union_map eq_at(const typed::multi_union_pw_aff &mupa) const; inline bool every_map(const std::function)> &test) const; inline typed::map extract_map(const typed::space &space) const; inline typed::basic_map flatten_domain() const = delete; inline typed::basic_map flatten_range() const = delete; inline void foreach_basic_map(const std::function)> &fn) const; inline void foreach_map(const std::function)> &fn) const; inline typed::basic_map gist(const typed::basic_map &context) const; inline typed::map gist(const typed::map &context) const; inline typed::union_map gist(const typed::union_map &context) const; inline typed::map gist_domain(const typed::set &context) const; inline typed::union_map gist_domain(const typed::union_set &uset) const; inline typed::map gist_params(const typed::set<> &context) const; inline typed::basic_map intersect(const typed::basic_map &bmap2) const; inline typed::map intersect(const typed::map &map2) const; inline typed::union_map intersect(const typed::union_map &umap2) const; inline typed::basic_map intersect_domain(const typed::basic_set &bset) const; inline typed::map intersect_domain(const typed::set &set) const; inline typed::union_map intersect_domain(const typed::space &space) const; inline typed::union_map intersect_domain(const typed::union_set &uset) const; inline typed::basic_map intersect_domain(const typed::point &bset) const; inline typed::map intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map intersect_params(const typed::set<> ¶ms) const; inline typed::basic_map intersect_range(const typed::basic_set &bset) const; inline typed::map intersect_range(const typed::set &set) const; inline typed::union_map intersect_range(const typed::space &space) const; inline typed::union_map intersect_range(const typed::union_set &uset) const; inline typed::basic_map intersect_range(const typed::point &bset) const; inline typed::map intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; template inline typed::map lex_ge_at(const typed::multi_pw_aff &mpa) const; template inline typed::map lex_gt_at(const typed::multi_pw_aff &mpa) const; template inline typed::map lex_le_at(const typed::multi_pw_aff &mpa) const; template inline typed::map lex_lt_at(const typed::multi_pw_aff &mpa) const; inline typed::map lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::map lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::map lower_bound(const typed::multi_pw_aff &lower) const; inline typed::map_list map_list() const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map preimage_domain(const typed::multi_aff &ma) const; template inline typed::map preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::map preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::map preimage_range(const typed::multi_aff &ma) const; template inline typed::map preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::map, pair> product(const typed::map &map2) const; template inline typed::union_map, pair> product(const typed::union_map &umap2) const; inline typed::map project_out_all_params() const; inline typed::map project_out_param(const typed::id &id) const; inline typed::map project_out_param(const std::string &id) const; inline typed::map project_out_param(const typed::id_list &list) const; inline typed::set range() const; inline typed::map range_factor_domain() const = delete; inline typed::map range_factor_range() const = delete; inline typed::fixed_box range_lattice_tile() const; inline typed::union_map, Domain> range_map() const; template inline typed::map> range_product(const typed::map &map2) const; template inline typed::union_map> range_product(const typed::union_map &umap2) const; inline typed::map range_reverse() const = delete; inline typed::fixed_box range_simple_fixed_box_hull() const; inline typed::basic_map reverse() const; template inline typed::map set_domain_tuple(const typed::id &id) const; template inline typed::map set_domain_tuple(const std::string &id) const; template inline typed::map set_range_tuple(const typed::id &id) const; template inline typed::map set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::map subtract(const typed::map &map2) const; inline typed::union_map subtract(const typed::union_map &umap2) const; inline typed::union_map subtract_domain(const typed::union_set &dom) const; inline typed::union_map subtract_range(const typed::union_set &dom) const; inline typed::union_map to_union_map() const; inline typed::map uncurry() const = delete; inline typed::map unite(const typed::basic_map &bmap2) const; inline typed::map unite(const typed::map &map2) const; inline typed::union_map unite(const typed::union_map &umap2) const; inline typed::map upper_bound(const typed::multi_pw_aff &upper) const; inline typed::set> wrap() const; }; template struct basic_map> : public isl::basic_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_map() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> basic_map(const basic_map> &obj) : isl::basic_map(obj) {} private: template {}, bool>::type = true> basic_map(const base &obj) : isl::basic_map(obj) {} public: static basic_map from(const isl::basic_map &obj) { return basic_map(obj); } inline explicit basic_map(const isl::ctx &ctx, const std::string &str); template inline typed::basic_map> apply_domain(const typed::basic_map &bmap2) const; template inline typed::map> apply_domain(const typed::map &map2) const; template inline typed::union_map> apply_domain(const typed::union_map &umap2) const; template inline typed::basic_map apply_range(const typed::basic_map, Arg3> &bmap2) const; template inline typed::map apply_range(const typed::map, Arg3> &map2) const; template inline typed::union_map apply_range(const typed::union_map, Arg3> &umap2) const; inline typed::map> as_map() const; inline typed::multi_union_pw_aff> as_multi_union_pw_aff() const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::union_pw_multi_aff> as_union_pw_multi_aff() const; inline typed::set> bind_domain(const typed::multi_id &tuple) const; inline typed::set bind_range(const typed::multi_id> &tuple) const; inline typed::map> coalesce() const; inline typed::map> curry() const = delete; inline typed::basic_set> deltas() const = delete; inline typed::basic_map> detect_equalities() const; inline typed::set domain() const; inline typed::map> domain_factor_domain() const = delete; inline typed::map> domain_factor_range() const = delete; inline typed::union_map>, Domain> domain_map() const; inline typed::union_pw_multi_aff>, Domain> domain_map_union_pw_multi_aff() const; template inline typed::map, pair> domain_product(const typed::map> &map2) const; template inline typed::union_map, pair> domain_product(const typed::union_map> &umap2) const; inline typed::map> domain_reverse() const = delete; inline typed::map> drop_unused_params() const; inline typed::map> eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function>)> &test) const; inline typed::map> extract_map(const typed::space> &space) const; inline typed::basic_map> flatten_domain() const = delete; inline typed::basic_map flatten_range() const; inline void foreach_basic_map(const std::function>)> &fn) const; inline void foreach_map(const std::function>)> &fn) const; inline typed::basic_map> gist(const typed::basic_map> &context) const; inline typed::map> gist(const typed::map> &context) const; inline typed::union_map> gist(const typed::union_map> &context) const; inline typed::map> gist_domain(const typed::set &context) const; inline typed::union_map> gist_domain(const typed::union_set &uset) const; inline typed::map> gist_params(const typed::set<> &context) const; inline typed::basic_map> intersect(const typed::basic_map> &bmap2) const; inline typed::map> intersect(const typed::map> &map2) const; inline typed::union_map> intersect(const typed::union_map> &umap2) const; inline typed::basic_map> intersect_domain(const typed::basic_set &bset) const; inline typed::map> intersect_domain(const typed::set &set) const; inline typed::union_map> intersect_domain(const typed::space &space) const; inline typed::union_map> intersect_domain(const typed::union_set &uset) const; inline typed::basic_map> intersect_domain(const typed::point &bset) const; inline typed::map> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map> intersect_params(const typed::set<> ¶ms) const; inline typed::basic_map> intersect_range(const typed::basic_set> &bset) const; inline typed::map> intersect_range(const typed::set> &set) const; inline typed::union_map> intersect_range(const typed::space> &space) const; inline typed::union_map> intersect_range(const typed::union_set> &uset) const; inline typed::basic_map> intersect_range(const typed::point> &bset) const; inline typed::map> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::map> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lexmax() const; inline typed::pw_multi_aff> lexmax_pw_multi_aff() const; inline typed::map> lexmin() const; inline typed::pw_multi_aff> lexmin_pw_multi_aff() const; inline typed::map> lower_bound(const typed::multi_pw_aff> &lower) const; inline typed::map_list> map_list() const; inline typed::multi_pw_aff> max_multi_pw_aff() const; inline typed::multi_pw_aff> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map> preimage_domain(const typed::multi_aff &ma) const; template inline typed::map> preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::map> preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::map preimage_range(const typed::multi_aff> &ma) const; template inline typed::map preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, pair, Arg3>> product(const typed::map &map2) const; template inline typed::union_map, pair, Arg3>> product(const typed::union_map &umap2) const; inline typed::map> project_out_all_params() const; inline typed::map> project_out_param(const typed::id &id) const; inline typed::map> project_out_param(const std::string &id) const; inline typed::map> project_out_param(const typed::id_list &list) const; inline typed::set> range() const; inline typed::map range_factor_domain() const; inline typed::map range_factor_range() const; inline typed::fixed_box> range_lattice_tile() const; inline typed::union_map>, pair> range_map() const; template inline typed::map, Arg3>> range_product(const typed::map &map2) const; template inline typed::union_map, Arg3>> range_product(const typed::union_map &umap2) const; inline typed::map> range_reverse() const; inline typed::fixed_box> range_simple_fixed_box_hull() const; inline typed::basic_map, Domain> reverse() const; template inline typed::map> set_domain_tuple(const typed::id &id) const; template inline typed::map> set_domain_tuple(const std::string &id) const; inline typed::map> set_range_tuple(const typed::id<> &id) const = delete; inline typed::map> set_range_tuple(const std::string &id) const = delete; inline typed::space> space() const; inline typed::map> subtract(const typed::map> &map2) const; inline typed::union_map> subtract(const typed::union_map> &umap2) const; inline typed::union_map> subtract_domain(const typed::union_set &dom) const; inline typed::union_map> subtract_range(const typed::union_set> &dom) const; inline typed::union_map> to_union_map() const; inline typed::map, Range2> uncurry() const; inline typed::map> unite(const typed::basic_map> &bmap2) const; inline typed::map> unite(const typed::map> &map2) const; inline typed::union_map> unite(const typed::union_map> &umap2) const; inline typed::map> upper_bound(const typed::multi_pw_aff> &upper) const; inline typed::set>> wrap() const; }; template struct basic_map, pair> : public isl::basic_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_map() = default; template {} && std::is_base_of{}, bool>::type = true> basic_map(const basic_map, pair> &obj) : isl::basic_map(obj) {} private: template {}, bool>::type = true> basic_map(const base &obj) : isl::basic_map(obj) {} public: static basic_map from(const isl::basic_map &obj) { return basic_map(obj); } inline explicit basic_map(const isl::ctx &ctx, const std::string &str); template inline typed::basic_map> apply_domain(const typed::basic_map, Domain2> &bmap2) const; template inline typed::map> apply_domain(const typed::map, Domain2> &map2) const; template inline typed::union_map> apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::basic_map, Range2> apply_range(const typed::basic_map, Range2> &bmap2) const; template inline typed::map, Range2> apply_range(const typed::map, Range2> &map2) const; template inline typed::union_map, Range2> apply_range(const typed::union_map, Range2> &umap2) const; inline typed::map, pair> as_map() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::union_pw_multi_aff, pair> as_union_pw_multi_aff() const; inline typed::set> bind_domain(const typed::multi_id> &tuple) const; inline typed::set> bind_range(const typed::multi_id> &tuple) const; inline typed::map, pair> coalesce() const; inline typed::map>> curry() const; inline typed::basic_set> deltas() const; inline typed::basic_map, pair> detect_equalities() const; inline typed::set> domain() const; inline typed::map> domain_factor_domain() const; inline typed::map> domain_factor_range() const; inline typed::union_map, pair>, pair> domain_map() const; inline typed::union_pw_multi_aff, pair>, pair> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain2>, pair> domain_product(const typed::map> &map2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::union_map> &umap2) const; inline typed::map, pair> domain_reverse() const; inline typed::map, pair> drop_unused_params() const; template inline typed::map, pair> eq_at(const typed::multi_pw_aff, Range> &mpa) const; template inline typed::union_map, pair> eq_at(const typed::multi_union_pw_aff, Range> &mupa) const; inline bool every_map(const std::function, pair>)> &test) const; inline typed::map, pair> extract_map(const typed::space, pair> &space) const; inline typed::basic_map> flatten_domain() const; inline typed::basic_map, Anonymous> flatten_range() const; inline void foreach_basic_map(const std::function, pair>)> &fn) const; inline void foreach_map(const std::function, pair>)> &fn) const; inline typed::basic_map, pair> gist(const typed::basic_map, pair> &context) const; inline typed::map, pair> gist(const typed::map, pair> &context) const; inline typed::union_map, pair> gist(const typed::union_map, pair> &context) const; inline typed::map, pair> gist_domain(const typed::set> &context) const; inline typed::union_map, pair> gist_domain(const typed::union_set> &uset) const; inline typed::map, pair> gist_params(const typed::set<> &context) const; inline typed::basic_map, pair> intersect(const typed::basic_map, pair> &bmap2) const; inline typed::map, pair> intersect(const typed::map, pair> &map2) const; inline typed::union_map, pair> intersect(const typed::union_map, pair> &umap2) const; inline typed::basic_map, pair> intersect_domain(const typed::basic_set> &bset) const; inline typed::map, pair> intersect_domain(const typed::set> &set) const; inline typed::union_map, pair> intersect_domain(const typed::space> &space) const; inline typed::union_map, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::basic_map, pair> intersect_domain(const typed::point> &bset) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> intersect_params(const typed::set<> ¶ms) const; inline typed::basic_map, pair> intersect_range(const typed::basic_set> &bset) const; inline typed::map, pair> intersect_range(const typed::set> &set) const; inline typed::union_map, pair> intersect_range(const typed::space> &space) const; inline typed::union_map, pair> intersect_range(const typed::union_set> &uset) const; inline typed::basic_map, pair> intersect_range(const typed::point> &bset) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::union_set &domain) const; template inline typed::map, pair> lex_ge_at(const typed::multi_pw_aff, Range> &mpa) const; template inline typed::map, pair> lex_gt_at(const typed::multi_pw_aff, Range> &mpa) const; template inline typed::map, pair> lex_le_at(const typed::multi_pw_aff, Range> &mpa) const; template inline typed::map, pair> lex_lt_at(const typed::multi_pw_aff, Range> &mpa) const; inline typed::map, pair> lexmax() const; inline typed::pw_multi_aff, pair> lexmax_pw_multi_aff() const; inline typed::map, pair> lexmin() const; inline typed::pw_multi_aff, pair> lexmin_pw_multi_aff() const; inline typed::map, pair> lower_bound(const typed::multi_pw_aff, pair> &lower) const; inline typed::map_list, pair> map_list() const; inline typed::multi_pw_aff, pair> max_multi_pw_aff() const; inline typed::multi_pw_aff, pair> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map> preimage_domain(const typed::multi_aff> &ma) const; template inline typed::map> preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::map> preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Range2> preimage_range(const typed::multi_aff> &ma) const; template inline typed::map, Range2> preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map, Range2> preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Domain2>, pair, Range2>> product(const typed::map &map2) const; template inline typed::union_map, Domain2>, pair, Range2>> product(const typed::union_map &umap2) const; inline typed::map, pair> project_out_all_params() const; inline typed::map, pair> project_out_param(const typed::id &id) const; inline typed::map, pair> project_out_param(const std::string &id) const; inline typed::map, pair> project_out_param(const typed::id_list &list) const; inline typed::set> range() const; inline typed::map, T1> range_factor_domain() const; inline typed::map, T2> range_factor_range() const; inline typed::fixed_box, pair> range_lattice_tile() const; inline typed::union_map, pair>, pair> range_map() const; template inline typed::map, pair, Range2>> range_product(const typed::map, Range2> &map2) const; template inline typed::union_map, pair, Range2>> range_product(const typed::union_map, Range2> &umap2) const; inline typed::map, pair> range_reverse() const; inline typed::fixed_box, pair> range_simple_fixed_box_hull() const; inline typed::basic_map, pair> reverse() const; inline typed::map, pair> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_domain_tuple(const std::string &id) const = delete; inline typed::map, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, pair> space() const; inline typed::map, pair> subtract(const typed::map, pair> &map2) const; inline typed::union_map, pair> subtract(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::union_set> &dom) const; inline typed::union_map, pair> to_union_map() const; inline typed::map, T1>, T2> uncurry() const; inline typed::map, pair> unite(const typed::basic_map, pair> &bmap2) const; inline typed::map, pair> unite(const typed::map, pair> &map2) const; inline typed::union_map, pair> unite(const typed::union_map, pair> &umap2) const; inline typed::map, pair> upper_bound(const typed::multi_pw_aff, pair> &upper) const; inline typed::set, pair>> wrap() const; }; template struct basic_map, pair> : public isl::basic_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_map() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> basic_map(const basic_map, pair> &obj) : isl::basic_map(obj) {} private: template {}, bool>::type = true> basic_map(const base &obj) : isl::basic_map(obj) {} public: static basic_map from(const isl::basic_map &obj) { return basic_map(obj); } inline explicit basic_map(const isl::ctx &ctx, const std::string &str); template inline typed::basic_map> apply_domain(const typed::basic_map, Domain2> &bmap2) const; template inline typed::map> apply_domain(const typed::map, Domain2> &map2) const; template inline typed::union_map> apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::basic_map, Arg2> apply_range(const typed::basic_map, Arg2> &bmap2) const; template inline typed::map, Arg2> apply_range(const typed::map, Arg2> &map2) const; template inline typed::union_map, Arg2> apply_range(const typed::union_map, Arg2> &umap2) const; inline typed::map, pair> as_map() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::union_pw_multi_aff, pair> as_union_pw_multi_aff() const; inline typed::set> bind_domain(const typed::multi_id> &tuple) const; inline typed::set> bind_range(const typed::multi_id> &tuple) const; inline typed::map, pair> coalesce() const; inline typed::map>> curry() const; inline typed::basic_set, pair> deltas() const = delete; inline typed::basic_map, pair> detect_equalities() const; inline typed::set> domain() const; inline typed::map> domain_factor_domain() const; inline typed::map> domain_factor_range() const; inline typed::union_map, pair>, pair> domain_map() const; inline typed::union_pw_multi_aff, pair>, pair> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain2>, pair> domain_product(const typed::map> &map2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::union_map> &umap2) const; inline typed::map, pair> domain_reverse() const; inline typed::map, pair> drop_unused_params() const; inline typed::map, pair> eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map, pair> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function, pair>)> &test) const; inline typed::map, pair> extract_map(const typed::space, pair> &space) const; inline typed::basic_map> flatten_domain() const; inline typed::basic_map, Anonymous> flatten_range() const; inline void foreach_basic_map(const std::function, pair>)> &fn) const; inline void foreach_map(const std::function, pair>)> &fn) const; inline typed::basic_map, pair> gist(const typed::basic_map, pair> &context) const; inline typed::map, pair> gist(const typed::map, pair> &context) const; inline typed::union_map, pair> gist(const typed::union_map, pair> &context) const; inline typed::map, pair> gist_domain(const typed::set> &context) const; inline typed::union_map, pair> gist_domain(const typed::union_set> &uset) const; inline typed::map, pair> gist_params(const typed::set<> &context) const; inline typed::basic_map, pair> intersect(const typed::basic_map, pair> &bmap2) const; inline typed::map, pair> intersect(const typed::map, pair> &map2) const; inline typed::union_map, pair> intersect(const typed::union_map, pair> &umap2) const; inline typed::basic_map, pair> intersect_domain(const typed::basic_set> &bset) const; inline typed::map, pair> intersect_domain(const typed::set> &set) const; inline typed::union_map, pair> intersect_domain(const typed::space> &space) const; inline typed::union_map, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::basic_map, pair> intersect_domain(const typed::point> &bset) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> intersect_params(const typed::set<> ¶ms) const; inline typed::basic_map, pair> intersect_range(const typed::basic_set> &bset) const; inline typed::map, pair> intersect_range(const typed::set> &set) const; inline typed::union_map, pair> intersect_range(const typed::space> &space) const; inline typed::union_map, pair> intersect_range(const typed::union_set> &uset) const; inline typed::basic_map, pair> intersect_range(const typed::point> &bset) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lexmax() const; inline typed::pw_multi_aff, pair> lexmax_pw_multi_aff() const; inline typed::map, pair> lexmin() const; inline typed::pw_multi_aff, pair> lexmin_pw_multi_aff() const; inline typed::map, pair> lower_bound(const typed::multi_pw_aff, pair> &lower) const; inline typed::map_list, pair> map_list() const; inline typed::multi_pw_aff, pair> max_multi_pw_aff() const; inline typed::multi_pw_aff, pair> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map> preimage_domain(const typed::multi_aff> &ma) const; template inline typed::map> preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::map> preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Arg2> preimage_range(const typed::multi_aff> &ma) const; template inline typed::map, Arg2> preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map, Arg2> preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Domain2>, pair, Arg2>> product(const typed::map &map2) const; template inline typed::union_map, Domain2>, pair, Arg2>> product(const typed::union_map &umap2) const; inline typed::map, pair> project_out_all_params() const; inline typed::map, pair> project_out_param(const typed::id &id) const; inline typed::map, pair> project_out_param(const std::string &id) const; inline typed::map, pair> project_out_param(const typed::id_list &list) const; inline typed::set> range() const; inline typed::map, Range> range_factor_domain() const; inline typed::map, Range2> range_factor_range() const; inline typed::fixed_box, pair> range_lattice_tile() const; inline typed::union_map, pair>, pair> range_map() const; template inline typed::map, pair, Arg2>> range_product(const typed::map, Arg2> &map2) const; template inline typed::union_map, pair, Arg2>> range_product(const typed::union_map, Arg2> &umap2) const; inline typed::map, pair> range_reverse() const; inline typed::fixed_box, pair> range_simple_fixed_box_hull() const; inline typed::basic_map, pair> reverse() const; inline typed::map, pair> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_domain_tuple(const std::string &id) const = delete; inline typed::map, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, pair> space() const; inline typed::map, pair> subtract(const typed::map, pair> &map2) const; inline typed::union_map, pair> subtract(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::union_set> &dom) const; inline typed::union_map, pair> to_union_map() const; inline typed::map, Range>, Range2> uncurry() const; inline typed::map, pair> unite(const typed::basic_map, pair> &bmap2) const; inline typed::map, pair> unite(const typed::map, pair> &map2) const; inline typed::union_map, pair> unite(const typed::union_map, pair> &umap2) const; inline typed::map, pair> upper_bound(const typed::multi_pw_aff, pair> &upper) const; inline typed::set, pair>> wrap() const; }; template <> struct basic_set<> : public isl::basic_set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_set() = default; private: template {}, bool>::type = true> basic_set(const base &obj) : isl::basic_set(obj) {} public: static basic_set from(const isl::basic_set &obj) { return basic_set(obj); } inline /* implicit */ basic_set(const typed::point<> &pnt); inline explicit basic_set(const isl::ctx &ctx, const std::string &str); inline typed::basic_set<> apply(const typed::basic_map<> &bmap) const = delete; inline typed::set<> apply(const typed::map<> &map) const = delete; inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete; inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete; inline typed::set<> as_set() const = delete; inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete; inline typed::set<> coalesce() const; inline typed::basic_set<> detect_equalities() const; inline typed::set<> drop_unused_params() const; inline bool every_set(const std::function)> &test) const; inline typed::set<> extract_set(const typed::space<> &space) const; inline void foreach_basic_set(const std::function)> &fn) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::basic_set<> gist(const typed::basic_set<> &context) const; inline typed::set<> gist(const typed::set<> &context) const; inline typed::union_set<> gist(const typed::union_set<> &context) const; inline typed::basic_set<> gist(const typed::point<> &context) const; inline typed::set<> gist_params(const typed::set<> &context) const = delete; inline typed::map<> identity() const = delete; inline typed::pw_aff indicator_function() const; inline typed::map<> insert_domain(const typed::space<> &domain) const = delete; inline typed::basic_set<> intersect(const typed::basic_set<> &bset2) const; inline typed::set<> intersect(const typed::set<> &set2) const; inline typed::union_set<> intersect(const typed::union_set<> &uset2) const; inline typed::basic_set<> intersect(const typed::point<> &bset2) const; inline typed::basic_set<> intersect_params(const typed::basic_set<> &bset2) const = delete; inline typed::set<> intersect_params(const typed::set<> ¶ms) const = delete; inline typed::basic_set<> intersect_params(const typed::point<> &bset2) const = delete; inline typed::fixed_box<> lattice_tile() const = delete; inline typed::set<> lexmax() const = delete; inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete; inline typed::set<> lexmin() const = delete; inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete; inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete; inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete; inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete; inline typed::val<> max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete; inline typed::val<> min_val(const typed::aff<> &obj) const = delete; inline typed::pw_aff param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff param_pw_aff_on_domain(const std::string &id) const; inline typed::basic_set<> params() const = delete; inline typed::multi_val<> plain_multi_val_if_fixed() const = delete; inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete; inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete; inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::set<> product(const typed::set<> &set2) const = delete; inline typed::set<> project_out_all_params() const; inline typed::set<> project_out_param(const typed::id &id) const; inline typed::set<> project_out_param(const std::string &id) const; inline typed::set<> project_out_param(const typed::id_list &list) const; inline typed::pw_aff pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list<> set_list() const; inline typed::fixed_box<> simple_fixed_box_hull() const = delete; inline typed::space<> space() const; inline typed::set<> subtract(const typed::set<> &set2) const; inline typed::union_set<> subtract(const typed::union_set<> &uset2) const; inline typed::set<> to_set() const; inline typed::union_set<> to_union_set() const; inline typed::map<> translation() const = delete; template inline typed::set unbind_params(const typed::multi_id &tuple) const; inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::set<> unite(const typed::basic_set<> &bset2) const; inline typed::set<> unite(const typed::set<> &set2) const; inline typed::union_set<> unite(const typed::union_set<> &uset2) const; inline typed::set<> unite(const typed::point<> &bset2) const; inline typed::map<> unwrap() const = delete; inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete; inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete; inline typed::set<> wrapped_reverse() const = delete; }; template struct basic_set : public isl::basic_set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_set() = default; template {}, bool>::type = true> basic_set(const basic_set &obj) : isl::basic_set(obj) {} private: template {}, bool>::type = true> basic_set(const base &obj) : isl::basic_set(obj) {} public: static basic_set from(const isl::basic_set &obj) { return basic_set(obj); } inline /* implicit */ basic_set(const typed::point &pnt); inline explicit basic_set(const isl::ctx &ctx, const std::string &str); template inline typed::basic_set apply(const typed::basic_map &bmap) const; template inline typed::set apply(const typed::map &map) const; template inline typed::union_set apply(const typed::union_map &umap) const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::set<> bind(const typed::multi_id &tuple) const; inline typed::set coalesce() const; inline typed::basic_set detect_equalities() const; inline typed::set drop_unused_params() const; inline bool every_set(const std::function)> &test) const; inline typed::set extract_set(const typed::space &space) const; inline void foreach_basic_set(const std::function)> &fn) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::basic_set gist(const typed::basic_set &context) const; inline typed::set gist(const typed::set &context) const; inline typed::union_set gist(const typed::union_set &context) const; inline typed::basic_set gist(const typed::point &context) const; inline typed::set gist_params(const typed::set<> &context) const; inline typed::map identity() const; inline typed::pw_aff indicator_function() const; template inline typed::map insert_domain(const typed::space &domain) const; inline typed::basic_set intersect(const typed::basic_set &bset2) const; inline typed::set intersect(const typed::set &set2) const; inline typed::union_set intersect(const typed::union_set &uset2) const; inline typed::basic_set intersect(const typed::point &bset2) const; inline typed::basic_set intersect_params(const typed::basic_set<> &bset2) const; inline typed::set intersect_params(const typed::set<> ¶ms) const; inline typed::basic_set intersect_params(const typed::point<> &bset2) const; inline typed::fixed_box lattice_tile() const; inline typed::set lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::set lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::set lower_bound(const typed::multi_pw_aff &lower) const; inline typed::set lower_bound(const typed::multi_val &lower) const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::val max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::val min_val(const typed::aff<> &obj) const = delete; inline typed::pw_aff param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff param_pw_aff_on_domain(const std::string &id) const; inline typed::basic_set<> params() const; inline typed::multi_val plain_multi_val_if_fixed() const; template inline typed::set preimage(const typed::multi_aff &ma) const; template inline typed::set preimage(const typed::multi_pw_aff &mpa) const; template inline typed::set preimage(const typed::pw_multi_aff &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff &upma) const; template inline typed::set> product(const typed::set &set2) const; inline typed::set project_out_all_params() const; inline typed::set project_out_param(const typed::id &id) const; inline typed::set project_out_param(const std::string &id) const; inline typed::set project_out_param(const typed::id_list &list) const; inline typed::pw_aff pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list set_list() const; inline typed::fixed_box simple_fixed_box_hull() const; inline typed::space space() const; inline typed::set subtract(const typed::set &set2) const; inline typed::union_set subtract(const typed::union_set &uset2) const; inline typed::set to_set() const; inline typed::union_set to_union_set() const; inline typed::map translation() const; inline typed::set unbind_params(const typed::multi_id<> &tuple) const = delete; template inline typed::map unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::set unite(const typed::basic_set &bset2) const; inline typed::set unite(const typed::set &set2) const; inline typed::union_set unite(const typed::union_set &uset2) const; inline typed::set unite(const typed::point &bset2) const; inline typed::map unwrap() const = delete; inline typed::set upper_bound(const typed::multi_pw_aff &upper) const; inline typed::set upper_bound(const typed::multi_val &upper) const; inline typed::set wrapped_reverse() const = delete; }; template struct basic_set> : public isl::basic_set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; basic_set() = default; template {} && std::is_base_of{}, bool>::type = true> basic_set(const basic_set> &obj) : isl::basic_set(obj) {} private: template {}, bool>::type = true> basic_set(const base &obj) : isl::basic_set(obj) {} public: static basic_set from(const isl::basic_set &obj) { return basic_set(obj); } inline /* implicit */ basic_set(const typed::point> &pnt); inline explicit basic_set(const isl::ctx &ctx, const std::string &str); template inline typed::basic_set apply(const typed::basic_map, Arg2> &bmap) const; template inline typed::set apply(const typed::map, Arg2> &map) const; template inline typed::union_set apply(const typed::union_map, Arg2> &umap) const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::set> as_set() const; inline typed::set<> bind(const typed::multi_id> &tuple) const; inline typed::set> coalesce() const; inline typed::basic_set> detect_equalities() const; inline typed::set> drop_unused_params() const; inline bool every_set(const std::function>)> &test) const; inline typed::set> extract_set(const typed::space> &space) const; inline void foreach_basic_set(const std::function>)> &fn) const; inline void foreach_point(const std::function>)> &fn) const; inline void foreach_set(const std::function>)> &fn) const; inline typed::basic_set> gist(const typed::basic_set> &context) const; inline typed::set> gist(const typed::set> &context) const; inline typed::union_set> gist(const typed::union_set> &context) const; inline typed::basic_set> gist(const typed::point> &context) const; inline typed::set> gist_params(const typed::set<> &context) const; inline typed::map, pair> identity() const; inline typed::pw_aff, Anonymous> indicator_function() const; template inline typed::map> insert_domain(const typed::space &domain) const; inline typed::basic_set> intersect(const typed::basic_set> &bset2) const; inline typed::set> intersect(const typed::set> &set2) const; inline typed::union_set> intersect(const typed::union_set> &uset2) const; inline typed::basic_set> intersect(const typed::point> &bset2) const; inline typed::basic_set> intersect_params(const typed::basic_set<> &bset2) const; inline typed::set> intersect_params(const typed::set<> ¶ms) const; inline typed::basic_set> intersect_params(const typed::point<> &bset2) const; inline typed::fixed_box> lattice_tile() const; inline typed::set> lexmax() const; inline typed::pw_multi_aff> lexmax_pw_multi_aff() const; inline typed::set> lexmin() const; inline typed::pw_multi_aff> lexmin_pw_multi_aff() const; inline typed::set> lower_bound(const typed::multi_pw_aff> &lower) const; inline typed::set> lower_bound(const typed::multi_val> &lower) const; inline typed::multi_pw_aff> max_multi_pw_aff() const; inline typed::val> max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff> min_multi_pw_aff() const; inline typed::val> min_val(const typed::aff<> &obj) const = delete; inline typed::pw_aff, Anonymous> param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff, Anonymous> param_pw_aff_on_domain(const std::string &id) const; inline typed::basic_set<> params() const; inline typed::multi_val> plain_multi_val_if_fixed() const; template inline typed::set preimage(const typed::multi_aff> &ma) const; template inline typed::set preimage(const typed::multi_pw_aff> &mpa) const; template inline typed::set preimage(const typed::pw_multi_aff> &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff> &upma) const; template inline typed::set, Arg2>> product(const typed::set &set2) const; inline typed::set> project_out_all_params() const; inline typed::set> project_out_param(const typed::id &id) const; inline typed::set> project_out_param(const std::string &id) const; inline typed::set> project_out_param(const typed::id_list &list) const; inline typed::pw_aff, Anonymous> pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff, Anonymous> pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff, Arg2> pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list> set_list() const; inline typed::fixed_box> simple_fixed_box_hull() const; inline typed::space> space() const; inline typed::set> subtract(const typed::set> &set2) const; inline typed::union_set> subtract(const typed::union_set> &uset2) const; inline typed::set> to_set() const; inline typed::union_set> to_union_set() const; inline typed::map, pair> translation() const; inline typed::set> unbind_params(const typed::multi_id<> &tuple) const = delete; template inline typed::map> unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::set> unite(const typed::basic_set> &bset2) const; inline typed::set> unite(const typed::set> &set2) const; inline typed::union_set> unite(const typed::union_set> &uset2) const; inline typed::set> unite(const typed::point> &bset2) const; inline typed::map unwrap() const; inline typed::set> upper_bound(const typed::multi_pw_aff> &upper) const; inline typed::set> upper_bound(const typed::multi_val> &upper) const; inline typed::set> wrapped_reverse() const; }; template struct fixed_box : public isl::fixed_box { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; fixed_box() = default; template {}, bool>::type = true> fixed_box(const fixed_box &obj) : isl::fixed_box(obj) {} private: template {}, bool>::type = true> fixed_box(const base &obj) : isl::fixed_box(obj) {} public: static fixed_box from(const isl::fixed_box &obj) { return fixed_box(obj); } inline explicit fixed_box(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff offset() const; inline typed::multi_aff get_offset() const = delete; inline typed::multi_val size() const; inline typed::multi_val get_size() const = delete; inline typed::space space() const; inline typed::space get_space() const = delete; }; template struct fixed_box : public isl::fixed_box { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; fixed_box() = default; template {} && std::is_base_of{}, bool>::type = true> fixed_box(const fixed_box &obj) : isl::fixed_box(obj) {} private: template {}, bool>::type = true> fixed_box(const base &obj) : isl::fixed_box(obj) {} public: static fixed_box from(const isl::fixed_box &obj) { return fixed_box(obj); } inline explicit fixed_box(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff offset() const; inline typed::multi_aff get_offset() const = delete; inline typed::multi_val size() const; inline typed::multi_val get_size() const = delete; inline typed::space space() const; inline typed::space get_space() const = delete; }; template <> struct id : public isl::id { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; id() = default; id(const isl::id &obj) : isl::id(obj) {} static id from(const isl::id &obj) { return id(obj); } inline explicit id(const isl::ctx &ctx, const std::string &str); inline std::string get_name() const = delete; }; template <> struct id_list : public isl::id_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; id_list() = default; id_list(const isl::id_list &obj) : isl::id_list(obj) {} static id_list from(const isl::id_list &obj) { return id_list(obj); } inline explicit id_list(const isl::ctx &ctx, int n); inline explicit id_list(const typed::id &el); inline explicit id_list(const isl::ctx &ctx, const std::string &str); inline typed::id_list add(const typed::id &el) const; inline typed::id_list add(const std::string &el) const; inline typed::id at(int index) const; inline typed::id get_at(int index) const = delete; inline typed::id_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::id)> &follows, const std::function)> &fn) const; inline typed::id_list set_at(int index, const typed::id &el) const; inline typed::id_list set_at(int index, const std::string &el) const; }; template struct map : public isl::map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map() = default; template {} && std::is_base_of{}, bool>::type = true> map(const map &obj) : isl::map(obj) {} private: template {}, bool>::type = true> map(const base &obj) : isl::map(obj) {} public: static map from(const isl::map &obj) { return map(obj); } inline /* implicit */ map(const typed::basic_map &bmap); inline explicit map(const isl::ctx &ctx, const std::string &str); template inline typed::map apply_domain(const typed::map &map2) const; template inline typed::union_map apply_domain(const typed::union_map &umap2) const; template inline typed::map apply_domain(const typed::basic_map &map2) const; template inline typed::map apply_range(const typed::map &map2) const; template inline typed::union_map apply_range(const typed::union_map &umap2) const; template inline typed::map apply_range(const typed::basic_map &map2) const; inline typed::map as_map() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_pw_multi_aff as_union_pw_multi_aff() const; inline typed::set bind_domain(const typed::multi_id &tuple) const; inline typed::set bind_range(const typed::multi_id &tuple) const; inline typed::map coalesce() const; inline typed::map curry() const = delete; inline typed::set deltas() const = delete; inline typed::map detect_equalities() const; inline typed::set domain() const; inline typed::map domain_factor_domain() const = delete; inline typed::map domain_factor_range() const = delete; inline typed::union_map, Domain> domain_map() const; inline typed::union_pw_multi_aff, Domain> domain_map_union_pw_multi_aff() const; template inline typed::map, Range> domain_product(const typed::map &map2) const; template inline typed::union_map, Range> domain_product(const typed::union_map &umap2) const; template inline typed::map, Range> domain_product(const typed::basic_map &map2) const; inline typed::map domain_reverse() const = delete; inline typed::id get_domain_tuple_id() const = delete; inline typed::map drop_unused_params() const; inline typed::map eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::map eq_at(const typed::aff<> &mpa) const = delete; inline typed::map eq_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map eq_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map eq_at(const typed::pw_multi_aff<> &mpa) const = delete; inline bool every_map(const std::function)> &test) const; inline typed::map extract_map(const typed::space &space) const; inline typed::map flatten_domain() const = delete; inline typed::map flatten_range() const = delete; inline void foreach_basic_map(const std::function)> &fn) const; inline void foreach_map(const std::function)> &fn) const; inline typed::map gist(const typed::map &context) const; inline typed::union_map gist(const typed::union_map &context) const; inline typed::map gist(const typed::basic_map &context) const; inline typed::map gist_domain(const typed::set &context) const; inline typed::union_map gist_domain(const typed::union_set &uset) const; inline typed::map gist_domain(const typed::basic_set &context) const; inline typed::map gist_domain(const typed::point &context) const; inline typed::map gist_params(const typed::set<> &context) const; inline typed::map gist_params(const typed::basic_set<> &context) const; inline typed::map gist_params(const typed::point<> &context) const; inline typed::map intersect(const typed::map &map2) const; inline typed::union_map intersect(const typed::union_map &umap2) const; inline typed::map intersect(const typed::basic_map &map2) const; inline typed::map intersect_domain(const typed::set &set) const; inline typed::union_map intersect_domain(const typed::space &space) const; inline typed::union_map intersect_domain(const typed::union_set &uset) const; inline typed::map intersect_domain(const typed::basic_set &set) const; inline typed::map intersect_domain(const typed::point &set) const; inline typed::map intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::map intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::map intersect_params(const typed::set<> ¶ms) const; inline typed::map intersect_params(const typed::basic_set<> ¶ms) const; inline typed::map intersect_params(const typed::point<> ¶ms) const; inline typed::map intersect_range(const typed::set &set) const; inline typed::union_map intersect_range(const typed::space &space) const; inline typed::union_map intersect_range(const typed::union_set &uset) const; inline typed::map intersect_range(const typed::basic_set &set) const; inline typed::map intersect_range(const typed::point &set) const; inline typed::map intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::map intersect_range_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::map lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_ge_at(const typed::aff<> &mpa) const = delete; inline typed::map lex_ge_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map lex_ge_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_gt_at(const typed::aff<> &mpa) const = delete; inline typed::map lex_gt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map lex_gt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_le_at(const typed::aff<> &mpa) const = delete; inline typed::map lex_le_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map lex_le_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map lex_lt_at(const typed::aff<> &mpa) const = delete; inline typed::map lex_lt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map lex_lt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::map lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::map lower_bound(const typed::multi_pw_aff &lower) const; inline typed::map lower_bound(const typed::aff &lower) const; inline typed::map lower_bound(const typed::multi_aff &lower) const; inline typed::map lower_bound(const typed::pw_aff &lower) const; inline typed::map lower_bound(const typed::pw_multi_aff &lower) const; inline typed::map_list map_list() const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map preimage_domain(const typed::multi_aff &ma) const; template inline typed::map preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::map preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::map preimage_range(const typed::multi_aff &ma) const; template inline typed::map preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::map, pair> product(const typed::map &map2) const; template inline typed::union_map, pair> product(const typed::union_map &umap2) const; template inline typed::map, pair> product(const typed::basic_map &map2) const; inline typed::map project_out_all_params() const; inline typed::map project_out_param(const typed::id &id) const; inline typed::map project_out_param(const std::string &id) const; inline typed::map project_out_param(const typed::id_list &list) const; inline typed::set range() const; inline typed::map range_factor_domain() const = delete; inline typed::map range_factor_range() const = delete; inline typed::fixed_box range_lattice_tile() const; inline typed::fixed_box get_range_lattice_tile() const = delete; inline typed::union_map, Range> range_map() const; template inline typed::map> range_product(const typed::map &map2) const; template inline typed::union_map> range_product(const typed::union_map &umap2) const; template inline typed::map> range_product(const typed::basic_map &map2) const; inline typed::map range_reverse() const = delete; inline typed::fixed_box range_simple_fixed_box_hull() const; inline typed::fixed_box get_range_simple_fixed_box_hull() const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::map reverse() const; template inline typed::map set_domain_tuple(const typed::id &id) const; template inline typed::map set_domain_tuple(const std::string &id) const; template inline typed::map set_range_tuple(const typed::id &id) const; template inline typed::map set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::map subtract(const typed::map &map2) const; inline typed::union_map subtract(const typed::union_map &umap2) const; inline typed::map subtract(const typed::basic_map &map2) const; inline typed::union_map subtract_domain(const typed::union_set &dom) const; inline typed::union_map subtract_range(const typed::union_set &dom) const; inline typed::union_map to_union_map() const; inline typed::map uncurry() const = delete; inline typed::map unite(const typed::map &map2) const; inline typed::union_map unite(const typed::union_map &umap2) const; inline typed::map unite(const typed::basic_map &map2) const; static inline typed::map universe(const typed::space &space); inline typed::map upper_bound(const typed::multi_pw_aff &upper) const; inline typed::map upper_bound(const typed::aff &upper) const; inline typed::map upper_bound(const typed::multi_aff &upper) const; inline typed::map upper_bound(const typed::pw_aff &upper) const; inline typed::map upper_bound(const typed::pw_multi_aff &upper) const; inline typed::set> wrap() const; }; template struct map, Range2> : public isl::map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> map(const map, Arg3> &obj) : isl::map(obj) {} private: template {}, bool>::type = true> map(const base &obj) : isl::map(obj) {} public: static map from(const isl::map &obj) { return map(obj); } inline /* implicit */ map(const typed::basic_map, Range2> &bmap); inline explicit map(const isl::ctx &ctx, const std::string &str); template inline typed::map apply_domain(const typed::map, Domain2> &map2) const; template inline typed::union_map apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::map apply_domain(const typed::basic_map, Domain2> &map2) const; template inline typed::map, Arg3> apply_range(const typed::map &map2) const; template inline typed::union_map, Arg3> apply_range(const typed::union_map &umap2) const; template inline typed::map, Arg3> apply_range(const typed::basic_map &map2) const; inline typed::map, Range2> as_map() const; inline typed::multi_union_pw_aff, Range2> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Range2> as_pw_multi_aff() const; inline typed::union_pw_multi_aff, Range2> as_union_pw_multi_aff() const; inline typed::set bind_domain(const typed::multi_id> &tuple) const; inline typed::set> bind_range(const typed::multi_id &tuple) const; inline typed::map, Range2> coalesce() const; inline typed::map> curry() const; inline typed::set, Range2> deltas() const = delete; inline typed::map, Range2> detect_equalities() const; inline typed::set> domain() const; inline typed::map domain_factor_domain() const; inline typed::map domain_factor_range() const; inline typed::union_map, Range2>, pair> domain_map() const; inline typed::union_pw_multi_aff, Range2>, pair> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain2>, Range2> domain_product(const typed::map &map2) const; template inline typed::union_map, Domain2>, Range2> domain_product(const typed::union_map &umap2) const; template inline typed::map, Domain2>, Range2> domain_product(const typed::basic_map &map2) const; inline typed::map, Range2> domain_reverse() const; inline typed::id, Range2> get_domain_tuple_id() const = delete; inline typed::map, Range2> drop_unused_params() const; inline typed::map, Range2> eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::map, Range2> eq_at(const typed::aff<> &mpa) const = delete; inline typed::map, Range2> eq_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, Range2> eq_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, Range2> eq_at(const typed::pw_multi_aff<> &mpa) const = delete; inline bool every_map(const std::function, Range2>)> &test) const; inline typed::map, Range2> extract_map(const typed::space, Range2> &space) const; inline typed::map flatten_domain() const; inline typed::map, Range2> flatten_range() const = delete; inline void foreach_basic_map(const std::function, Range2>)> &fn) const; inline void foreach_map(const std::function, Range2>)> &fn) const; inline typed::map, Range2> gist(const typed::map, Range2> &context) const; inline typed::union_map, Range2> gist(const typed::union_map, Range2> &context) const; inline typed::map, Range2> gist(const typed::basic_map, Range2> &context) const; inline typed::map, Range2> gist_domain(const typed::set> &context) const; inline typed::union_map, Range2> gist_domain(const typed::union_set> &uset) const; inline typed::map, Range2> gist_domain(const typed::basic_set> &context) const; inline typed::map, Range2> gist_domain(const typed::point> &context) const; inline typed::map, Range2> gist_params(const typed::set<> &context) const; inline typed::map, Range2> gist_params(const typed::basic_set<> &context) const; inline typed::map, Range2> gist_params(const typed::point<> &context) const; inline typed::map, Range2> intersect(const typed::map, Range2> &map2) const; inline typed::union_map, Range2> intersect(const typed::union_map, Range2> &umap2) const; inline typed::map, Range2> intersect(const typed::basic_map, Range2> &map2) const; inline typed::map, Range2> intersect_domain(const typed::set> &set) const; inline typed::union_map, Range2> intersect_domain(const typed::space> &space) const; inline typed::union_map, Range2> intersect_domain(const typed::union_set> &uset) const; inline typed::map, Range2> intersect_domain(const typed::basic_set> &set) const; inline typed::map, Range2> intersect_domain(const typed::point> &set) const; inline typed::map, Range2> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, Range2> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::map, Range2> intersect_domain_wrapped_domain(const typed::basic_set &domain) const; inline typed::map, Range2> intersect_domain_wrapped_domain(const typed::point &domain) const; inline typed::map, Range2> intersect_params(const typed::set<> ¶ms) const; inline typed::map, Range2> intersect_params(const typed::basic_set<> ¶ms) const; inline typed::map, Range2> intersect_params(const typed::point<> ¶ms) const; inline typed::map, Range2> intersect_range(const typed::set &set) const; inline typed::union_map, Range2> intersect_range(const typed::space &space) const; inline typed::union_map, Range2> intersect_range(const typed::union_set &uset) const; inline typed::map, Range2> intersect_range(const typed::basic_set &set) const; inline typed::map, Range2> intersect_range(const typed::point &set) const; inline typed::map, Range2> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map, Range2> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map, Range2> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::map, Range2> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::map, Range2> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_ge_at(const typed::aff<> &mpa) const = delete; inline typed::map, Range2> lex_ge_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_ge_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_gt_at(const typed::aff<> &mpa) const = delete; inline typed::map, Range2> lex_gt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_gt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_le_at(const typed::aff<> &mpa) const = delete; inline typed::map, Range2> lex_le_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_le_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_lt_at(const typed::aff<> &mpa) const = delete; inline typed::map, Range2> lex_lt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, Range2> lex_lt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, Range2> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, Range2> lexmax() const; inline typed::pw_multi_aff, Range2> lexmax_pw_multi_aff() const; inline typed::map, Range2> lexmin() const; inline typed::pw_multi_aff, Range2> lexmin_pw_multi_aff() const; inline typed::map, Range2> lower_bound(const typed::multi_pw_aff, Range2> &lower) const; inline typed::map, Range2> lower_bound(const typed::aff, Range2> &lower) const; inline typed::map, Range2> lower_bound(const typed::multi_aff, Range2> &lower) const; inline typed::map, Range2> lower_bound(const typed::pw_aff, Range2> &lower) const; inline typed::map, Range2> lower_bound(const typed::pw_multi_aff, Range2> &lower) const; inline typed::map_list, Range2> map_list() const; inline typed::multi_pw_aff, Range2> max_multi_pw_aff() const; inline typed::multi_pw_aff, Range2> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map preimage_domain(const typed::multi_aff> &ma) const; template inline typed::map preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::map preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Arg3> preimage_range(const typed::multi_aff &ma) const; template inline typed::map, Arg3> preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map, Arg3> preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::map, Domain2>, pair> product(const typed::map &map2) const; template inline typed::union_map, Domain2>, pair> product(const typed::union_map &umap2) const; template inline typed::map, Domain2>, pair> product(const typed::basic_map &map2) const; inline typed::map, Range2> project_out_all_params() const; inline typed::map, Range2> project_out_param(const typed::id &id) const; inline typed::map, Range2> project_out_param(const std::string &id) const; inline typed::map, Range2> project_out_param(const typed::id_list &list) const; inline typed::set range() const; inline typed::map, Range2> range_factor_domain() const = delete; inline typed::map, Range2> range_factor_range() const = delete; inline typed::fixed_box, Range2> range_lattice_tile() const; inline typed::fixed_box, Range2> get_range_lattice_tile() const = delete; inline typed::union_map, Range2>, Range2> range_map() const; template inline typed::map, pair> range_product(const typed::map, Arg3> &map2) const; template inline typed::union_map, pair> range_product(const typed::union_map, Arg3> &umap2) const; template inline typed::map, pair> range_product(const typed::basic_map, Arg3> &map2) const; inline typed::map, Range2> range_reverse() const = delete; inline typed::fixed_box, Range2> range_simple_fixed_box_hull() const; inline typed::fixed_box, Range2> get_range_simple_fixed_box_hull() const = delete; inline typed::id, Range2> get_range_tuple_id() const = delete; inline typed::map> reverse() const; inline typed::map, Range2> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::map, Range2> set_domain_tuple(const std::string &id) const = delete; template inline typed::map, Arg2> set_range_tuple(const typed::id &id) const; template inline typed::map, Arg2> set_range_tuple(const std::string &id) const; inline typed::space, Range2> space() const; inline typed::space, Range2> get_space() const = delete; inline typed::map, Range2> subtract(const typed::map, Range2> &map2) const; inline typed::union_map, Range2> subtract(const typed::union_map, Range2> &umap2) const; inline typed::map, Range2> subtract(const typed::basic_map, Range2> &map2) const; inline typed::union_map, Range2> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, Range2> subtract_range(const typed::union_set &dom) const; inline typed::union_map, Range2> to_union_map() const; inline typed::map, Range2> uncurry() const = delete; inline typed::map, Range2> unite(const typed::map, Range2> &map2) const; inline typed::union_map, Range2> unite(const typed::union_map, Range2> &umap2) const; inline typed::map, Range2> unite(const typed::basic_map, Range2> &map2) const; static inline typed::map, Range2> universe(const typed::space, Range2> &space); inline typed::map, Range2> upper_bound(const typed::multi_pw_aff, Range2> &upper) const; inline typed::map, Range2> upper_bound(const typed::aff, Range2> &upper) const; inline typed::map, Range2> upper_bound(const typed::multi_aff, Range2> &upper) const; inline typed::map, Range2> upper_bound(const typed::pw_aff, Range2> &upper) const; inline typed::map, Range2> upper_bound(const typed::pw_multi_aff, Range2> &upper) const; inline typed::set, Range2>> wrap() const; }; template struct map : public isl::map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map() = default; template {}, bool>::type = true> map(const map &obj) : isl::map(obj) {} private: template {}, bool>::type = true> map(const base &obj) : isl::map(obj) {} public: static map from(const isl::map &obj) { return map(obj); } inline /* implicit */ map(const typed::basic_map &bmap); inline explicit map(const isl::ctx &ctx, const std::string &str); template inline typed::map apply_domain(const typed::map &map2) const; template inline typed::union_map apply_domain(const typed::union_map &umap2) const; template inline typed::map apply_domain(const typed::basic_map &map2) const; template inline typed::map apply_range(const typed::map &map2) const; template inline typed::union_map apply_range(const typed::union_map &umap2) const; template inline typed::map apply_range(const typed::basic_map &map2) const; inline typed::map as_map() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_pw_multi_aff as_union_pw_multi_aff() const; inline typed::set bind_domain(const typed::multi_id &tuple) const; inline typed::set bind_range(const typed::multi_id &tuple) const; inline typed::map coalesce() const; inline typed::map curry() const = delete; inline typed::set deltas() const; inline typed::map detect_equalities() const; inline typed::set domain() const; inline typed::map domain_factor_domain() const = delete; inline typed::map domain_factor_range() const = delete; inline typed::union_map, Domain> domain_map() const; inline typed::union_pw_multi_aff, Domain> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain> domain_product(const typed::map &map2) const; template inline typed::union_map, Domain> domain_product(const typed::union_map &umap2) const; template inline typed::map, Domain> domain_product(const typed::basic_map &map2) const; inline typed::map domain_reverse() const = delete; inline typed::id get_domain_tuple_id() const = delete; inline typed::map drop_unused_params() const; template inline typed::map eq_at(const typed::multi_pw_aff &mpa) const; template inline typed::union_map eq_at(const typed::multi_union_pw_aff &mupa) const; inline typed::map eq_at(const typed::aff &mpa) const; template inline typed::map eq_at(const typed::multi_aff &mpa) const; inline typed::map eq_at(const typed::pw_aff &mpa) const; template inline typed::map eq_at(const typed::pw_multi_aff &mpa) const; inline bool every_map(const std::function)> &test) const; inline typed::map extract_map(const typed::space &space) const; inline typed::map flatten_domain() const = delete; inline typed::map flatten_range() const = delete; inline void foreach_basic_map(const std::function)> &fn) const; inline void foreach_map(const std::function)> &fn) const; inline typed::map gist(const typed::map &context) const; inline typed::union_map gist(const typed::union_map &context) const; inline typed::map gist(const typed::basic_map &context) const; inline typed::map gist_domain(const typed::set &context) const; inline typed::union_map gist_domain(const typed::union_set &uset) const; inline typed::map gist_domain(const typed::basic_set &context) const; inline typed::map gist_domain(const typed::point &context) const; inline typed::map gist_params(const typed::set<> &context) const; inline typed::map gist_params(const typed::basic_set<> &context) const; inline typed::map gist_params(const typed::point<> &context) const; inline typed::map intersect(const typed::map &map2) const; inline typed::union_map intersect(const typed::union_map &umap2) const; inline typed::map intersect(const typed::basic_map &map2) const; inline typed::map intersect_domain(const typed::set &set) const; inline typed::union_map intersect_domain(const typed::space &space) const; inline typed::union_map intersect_domain(const typed::union_set &uset) const; inline typed::map intersect_domain(const typed::basic_set &set) const; inline typed::map intersect_domain(const typed::point &set) const; inline typed::map intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::map intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::map intersect_params(const typed::set<> ¶ms) const; inline typed::map intersect_params(const typed::basic_set<> ¶ms) const; inline typed::map intersect_params(const typed::point<> ¶ms) const; inline typed::map intersect_range(const typed::set &set) const; inline typed::union_map intersect_range(const typed::space &space) const; inline typed::union_map intersect_range(const typed::union_set &uset) const; inline typed::map intersect_range(const typed::basic_set &set) const; inline typed::map intersect_range(const typed::point &set) const; inline typed::map intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::map intersect_range_wrapped_domain(const typed::point<> &domain) const = delete; template inline typed::map lex_ge_at(const typed::multi_pw_aff &mpa) const; inline typed::map lex_ge_at(const typed::aff &mpa) const; template inline typed::map lex_ge_at(const typed::multi_aff &mpa) const; inline typed::map lex_ge_at(const typed::pw_aff &mpa) const; template inline typed::map lex_ge_at(const typed::pw_multi_aff &mpa) const; template inline typed::map lex_gt_at(const typed::multi_pw_aff &mpa) const; inline typed::map lex_gt_at(const typed::aff &mpa) const; template inline typed::map lex_gt_at(const typed::multi_aff &mpa) const; inline typed::map lex_gt_at(const typed::pw_aff &mpa) const; template inline typed::map lex_gt_at(const typed::pw_multi_aff &mpa) const; template inline typed::map lex_le_at(const typed::multi_pw_aff &mpa) const; inline typed::map lex_le_at(const typed::aff &mpa) const; template inline typed::map lex_le_at(const typed::multi_aff &mpa) const; inline typed::map lex_le_at(const typed::pw_aff &mpa) const; template inline typed::map lex_le_at(const typed::pw_multi_aff &mpa) const; template inline typed::map lex_lt_at(const typed::multi_pw_aff &mpa) const; inline typed::map lex_lt_at(const typed::aff &mpa) const; template inline typed::map lex_lt_at(const typed::multi_aff &mpa) const; inline typed::map lex_lt_at(const typed::pw_aff &mpa) const; template inline typed::map lex_lt_at(const typed::pw_multi_aff &mpa) const; inline typed::map lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::map lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::map lower_bound(const typed::multi_pw_aff &lower) const; inline typed::map lower_bound(const typed::aff &lower) const; inline typed::map lower_bound(const typed::multi_aff &lower) const; inline typed::map lower_bound(const typed::pw_aff &lower) const; inline typed::map lower_bound(const typed::pw_multi_aff &lower) const; inline typed::map_list map_list() const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map preimage_domain(const typed::multi_aff &ma) const; template inline typed::map preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::map preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::map preimage_range(const typed::multi_aff &ma) const; template inline typed::map preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::map, pair> product(const typed::map &map2) const; template inline typed::union_map, pair> product(const typed::union_map &umap2) const; template inline typed::map, pair> product(const typed::basic_map &map2) const; inline typed::map project_out_all_params() const; inline typed::map project_out_param(const typed::id &id) const; inline typed::map project_out_param(const std::string &id) const; inline typed::map project_out_param(const typed::id_list &list) const; inline typed::set range() const; inline typed::map range_factor_domain() const = delete; inline typed::map range_factor_range() const = delete; inline typed::fixed_box range_lattice_tile() const; inline typed::fixed_box get_range_lattice_tile() const = delete; inline typed::union_map, Domain> range_map() const; template inline typed::map> range_product(const typed::map &map2) const; template inline typed::union_map> range_product(const typed::union_map &umap2) const; template inline typed::map> range_product(const typed::basic_map &map2) const; inline typed::map range_reverse() const = delete; inline typed::fixed_box range_simple_fixed_box_hull() const; inline typed::fixed_box get_range_simple_fixed_box_hull() const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::map reverse() const; template inline typed::map set_domain_tuple(const typed::id &id) const; template inline typed::map set_domain_tuple(const std::string &id) const; template inline typed::map set_range_tuple(const typed::id &id) const; template inline typed::map set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::map subtract(const typed::map &map2) const; inline typed::union_map subtract(const typed::union_map &umap2) const; inline typed::map subtract(const typed::basic_map &map2) const; inline typed::union_map subtract_domain(const typed::union_set &dom) const; inline typed::union_map subtract_range(const typed::union_set &dom) const; inline typed::union_map to_union_map() const; inline typed::map uncurry() const = delete; inline typed::map unite(const typed::map &map2) const; inline typed::union_map unite(const typed::union_map &umap2) const; inline typed::map unite(const typed::basic_map &map2) const; static inline typed::map universe(const typed::space &space); inline typed::map upper_bound(const typed::multi_pw_aff &upper) const; inline typed::map upper_bound(const typed::aff &upper) const; inline typed::map upper_bound(const typed::multi_aff &upper) const; inline typed::map upper_bound(const typed::pw_aff &upper) const; inline typed::map upper_bound(const typed::pw_multi_aff &upper) const; inline typed::set> wrap() const; }; template struct map> : public isl::map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> map(const map> &obj) : isl::map(obj) {} private: template {}, bool>::type = true> map(const base &obj) : isl::map(obj) {} public: static map from(const isl::map &obj) { return map(obj); } inline /* implicit */ map(const typed::basic_map> &bmap); inline explicit map(const isl::ctx &ctx, const std::string &str); template inline typed::map> apply_domain(const typed::map &map2) const; template inline typed::union_map> apply_domain(const typed::union_map &umap2) const; template inline typed::map> apply_domain(const typed::basic_map &map2) const; template inline typed::map apply_range(const typed::map, Arg3> &map2) const; template inline typed::union_map apply_range(const typed::union_map, Arg3> &umap2) const; template inline typed::map apply_range(const typed::basic_map, Arg3> &map2) const; inline typed::map> as_map() const; inline typed::multi_union_pw_aff> as_multi_union_pw_aff() const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::union_pw_multi_aff> as_union_pw_multi_aff() const; inline typed::set> bind_domain(const typed::multi_id &tuple) const; inline typed::set bind_range(const typed::multi_id> &tuple) const; inline typed::map> coalesce() const; inline typed::map> curry() const = delete; inline typed::set> deltas() const = delete; inline typed::map> detect_equalities() const; inline typed::set domain() const; inline typed::map> domain_factor_domain() const = delete; inline typed::map> domain_factor_range() const = delete; inline typed::union_map>, Domain> domain_map() const; inline typed::union_pw_multi_aff>, Domain> domain_map_union_pw_multi_aff() const; template inline typed::map, pair> domain_product(const typed::map> &map2) const; template inline typed::union_map, pair> domain_product(const typed::union_map> &umap2) const; template inline typed::map, pair> domain_product(const typed::basic_map> &map2) const; inline typed::map> domain_reverse() const = delete; inline typed::id> get_domain_tuple_id() const = delete; inline typed::map> drop_unused_params() const; inline typed::map> eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::map> eq_at(const typed::aff<> &mpa) const = delete; inline typed::map> eq_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map> eq_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map> eq_at(const typed::pw_multi_aff<> &mpa) const = delete; inline bool every_map(const std::function>)> &test) const; inline typed::map> extract_map(const typed::space> &space) const; inline typed::map> flatten_domain() const = delete; inline typed::map flatten_range() const; inline void foreach_basic_map(const std::function>)> &fn) const; inline void foreach_map(const std::function>)> &fn) const; inline typed::map> gist(const typed::map> &context) const; inline typed::union_map> gist(const typed::union_map> &context) const; inline typed::map> gist(const typed::basic_map> &context) const; inline typed::map> gist_domain(const typed::set &context) const; inline typed::union_map> gist_domain(const typed::union_set &uset) const; inline typed::map> gist_domain(const typed::basic_set &context) const; inline typed::map> gist_domain(const typed::point &context) const; inline typed::map> gist_params(const typed::set<> &context) const; inline typed::map> gist_params(const typed::basic_set<> &context) const; inline typed::map> gist_params(const typed::point<> &context) const; inline typed::map> intersect(const typed::map> &map2) const; inline typed::union_map> intersect(const typed::union_map> &umap2) const; inline typed::map> intersect(const typed::basic_map> &map2) const; inline typed::map> intersect_domain(const typed::set &set) const; inline typed::union_map> intersect_domain(const typed::space &space) const; inline typed::union_map> intersect_domain(const typed::union_set &uset) const; inline typed::map> intersect_domain(const typed::basic_set &set) const; inline typed::map> intersect_domain(const typed::point &set) const; inline typed::map> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::map> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::map> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::map> intersect_params(const typed::set<> ¶ms) const; inline typed::map> intersect_params(const typed::basic_set<> ¶ms) const; inline typed::map> intersect_params(const typed::point<> ¶ms) const; inline typed::map> intersect_range(const typed::set> &set) const; inline typed::union_map> intersect_range(const typed::space> &space) const; inline typed::union_map> intersect_range(const typed::union_set> &uset) const; inline typed::map> intersect_range(const typed::basic_set> &set) const; inline typed::map> intersect_range(const typed::point> &set) const; inline typed::map> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::map> intersect_range_wrapped_domain(const typed::basic_set &domain) const; inline typed::map> intersect_range_wrapped_domain(const typed::point &domain) const; inline typed::map> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_ge_at(const typed::aff<> &mpa) const = delete; inline typed::map> lex_ge_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map> lex_ge_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_gt_at(const typed::aff<> &mpa) const = delete; inline typed::map> lex_gt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map> lex_gt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_le_at(const typed::aff<> &mpa) const = delete; inline typed::map> lex_le_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map> lex_le_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map> lex_lt_at(const typed::aff<> &mpa) const = delete; inline typed::map> lex_lt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map> lex_lt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map> lexmax() const; inline typed::pw_multi_aff> lexmax_pw_multi_aff() const; inline typed::map> lexmin() const; inline typed::pw_multi_aff> lexmin_pw_multi_aff() const; inline typed::map> lower_bound(const typed::multi_pw_aff> &lower) const; inline typed::map> lower_bound(const typed::aff> &lower) const; inline typed::map> lower_bound(const typed::multi_aff> &lower) const; inline typed::map> lower_bound(const typed::pw_aff> &lower) const; inline typed::map> lower_bound(const typed::pw_multi_aff> &lower) const; inline typed::map_list> map_list() const; inline typed::multi_pw_aff> max_multi_pw_aff() const; inline typed::multi_pw_aff> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map> preimage_domain(const typed::multi_aff &ma) const; template inline typed::map> preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::map> preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::map preimage_range(const typed::multi_aff> &ma) const; template inline typed::map preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, pair, Arg3>> product(const typed::map &map2) const; template inline typed::union_map, pair, Arg3>> product(const typed::union_map &umap2) const; template inline typed::map, pair, Arg3>> product(const typed::basic_map &map2) const; inline typed::map> project_out_all_params() const; inline typed::map> project_out_param(const typed::id &id) const; inline typed::map> project_out_param(const std::string &id) const; inline typed::map> project_out_param(const typed::id_list &list) const; inline typed::set> range() const; inline typed::map range_factor_domain() const; inline typed::map range_factor_range() const; inline typed::fixed_box> range_lattice_tile() const; inline typed::fixed_box> get_range_lattice_tile() const = delete; inline typed::union_map>, pair> range_map() const; template inline typed::map, Arg3>> range_product(const typed::map &map2) const; template inline typed::union_map, Arg3>> range_product(const typed::union_map &umap2) const; template inline typed::map, Arg3>> range_product(const typed::basic_map &map2) const; inline typed::map> range_reverse() const; inline typed::fixed_box> range_simple_fixed_box_hull() const; inline typed::fixed_box> get_range_simple_fixed_box_hull() const = delete; inline typed::id> get_range_tuple_id() const = delete; inline typed::map, Domain> reverse() const; template inline typed::map> set_domain_tuple(const typed::id &id) const; template inline typed::map> set_domain_tuple(const std::string &id) const; inline typed::map> set_range_tuple(const typed::id<> &id) const = delete; inline typed::map> set_range_tuple(const std::string &id) const = delete; inline typed::space> space() const; inline typed::space> get_space() const = delete; inline typed::map> subtract(const typed::map> &map2) const; inline typed::union_map> subtract(const typed::union_map> &umap2) const; inline typed::map> subtract(const typed::basic_map> &map2) const; inline typed::union_map> subtract_domain(const typed::union_set &dom) const; inline typed::union_map> subtract_range(const typed::union_set> &dom) const; inline typed::union_map> to_union_map() const; inline typed::map, Range2> uncurry() const; inline typed::map> unite(const typed::map> &map2) const; inline typed::union_map> unite(const typed::union_map> &umap2) const; inline typed::map> unite(const typed::basic_map> &map2) const; static inline typed::map> universe(const typed::space> &space); inline typed::map> upper_bound(const typed::multi_pw_aff> &upper) const; inline typed::map> upper_bound(const typed::aff> &upper) const; inline typed::map> upper_bound(const typed::multi_aff> &upper) const; inline typed::map> upper_bound(const typed::pw_aff> &upper) const; inline typed::map> upper_bound(const typed::pw_multi_aff> &upper) const; inline typed::set>> wrap() const; }; template struct map, pair> : public isl::map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map() = default; template {} && std::is_base_of{}, bool>::type = true> map(const map, pair> &obj) : isl::map(obj) {} private: template {}, bool>::type = true> map(const base &obj) : isl::map(obj) {} public: static map from(const isl::map &obj) { return map(obj); } inline /* implicit */ map(const typed::basic_map, pair> &bmap); inline explicit map(const isl::ctx &ctx, const std::string &str); template inline typed::map> apply_domain(const typed::map, Domain2> &map2) const; template inline typed::union_map> apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::map> apply_domain(const typed::basic_map, Domain2> &map2) const; template inline typed::map, Range2> apply_range(const typed::map, Range2> &map2) const; template inline typed::union_map, Range2> apply_range(const typed::union_map, Range2> &umap2) const; template inline typed::map, Range2> apply_range(const typed::basic_map, Range2> &map2) const; inline typed::map, pair> as_map() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::union_pw_multi_aff, pair> as_union_pw_multi_aff() const; inline typed::set> bind_domain(const typed::multi_id> &tuple) const; inline typed::set> bind_range(const typed::multi_id> &tuple) const; inline typed::map, pair> coalesce() const; inline typed::map>> curry() const; inline typed::set> deltas() const; inline typed::map, pair> detect_equalities() const; inline typed::set> domain() const; inline typed::map> domain_factor_domain() const; inline typed::map> domain_factor_range() const; inline typed::union_map, pair>, pair> domain_map() const; inline typed::union_pw_multi_aff, pair>, pair> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain2>, pair> domain_product(const typed::map> &map2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::union_map> &umap2) const; template inline typed::map, Domain2>, pair> domain_product(const typed::basic_map> &map2) const; inline typed::map, pair> domain_reverse() const; inline typed::id, pair> get_domain_tuple_id() const = delete; inline typed::map, pair> drop_unused_params() const; template inline typed::map, pair> eq_at(const typed::multi_pw_aff, Range> &mpa) const; template inline typed::union_map, pair> eq_at(const typed::multi_union_pw_aff, Range> &mupa) const; inline typed::map, pair> eq_at(const typed::aff, Anonymous> &mpa) const; template inline typed::map, pair> eq_at(const typed::multi_aff, Range> &mpa) const; inline typed::map, pair> eq_at(const typed::pw_aff, Anonymous> &mpa) const; template inline typed::map, pair> eq_at(const typed::pw_multi_aff, Range> &mpa) const; inline bool every_map(const std::function, pair>)> &test) const; inline typed::map, pair> extract_map(const typed::space, pair> &space) const; inline typed::map> flatten_domain() const; inline typed::map, Anonymous> flatten_range() const; inline void foreach_basic_map(const std::function, pair>)> &fn) const; inline void foreach_map(const std::function, pair>)> &fn) const; inline typed::map, pair> gist(const typed::map, pair> &context) const; inline typed::union_map, pair> gist(const typed::union_map, pair> &context) const; inline typed::map, pair> gist(const typed::basic_map, pair> &context) const; inline typed::map, pair> gist_domain(const typed::set> &context) const; inline typed::union_map, pair> gist_domain(const typed::union_set> &uset) const; inline typed::map, pair> gist_domain(const typed::basic_set> &context) const; inline typed::map, pair> gist_domain(const typed::point> &context) const; inline typed::map, pair> gist_params(const typed::set<> &context) const; inline typed::map, pair> gist_params(const typed::basic_set<> &context) const; inline typed::map, pair> gist_params(const typed::point<> &context) const; inline typed::map, pair> intersect(const typed::map, pair> &map2) const; inline typed::union_map, pair> intersect(const typed::union_map, pair> &umap2) const; inline typed::map, pair> intersect(const typed::basic_map, pair> &map2) const; inline typed::map, pair> intersect_domain(const typed::set> &set) const; inline typed::union_map, pair> intersect_domain(const typed::space> &space) const; inline typed::union_map, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::map, pair> intersect_domain(const typed::basic_set> &set) const; inline typed::map, pair> intersect_domain(const typed::point> &set) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::basic_set &domain) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::point &domain) const; inline typed::map, pair> intersect_params(const typed::set<> ¶ms) const; inline typed::map, pair> intersect_params(const typed::basic_set<> ¶ms) const; inline typed::map, pair> intersect_params(const typed::point<> ¶ms) const; inline typed::map, pair> intersect_range(const typed::set> &set) const; inline typed::union_map, pair> intersect_range(const typed::space> &space) const; inline typed::union_map, pair> intersect_range(const typed::union_set> &uset) const; inline typed::map, pair> intersect_range(const typed::basic_set> &set) const; inline typed::map, pair> intersect_range(const typed::point> &set) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::basic_set &domain) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::point &domain) const; template inline typed::map, pair> lex_ge_at(const typed::multi_pw_aff, Range> &mpa) const; inline typed::map, pair> lex_ge_at(const typed::aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_ge_at(const typed::multi_aff, Range> &mpa) const; inline typed::map, pair> lex_ge_at(const typed::pw_aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_ge_at(const typed::pw_multi_aff, Range> &mpa) const; template inline typed::map, pair> lex_gt_at(const typed::multi_pw_aff, Range> &mpa) const; inline typed::map, pair> lex_gt_at(const typed::aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_gt_at(const typed::multi_aff, Range> &mpa) const; inline typed::map, pair> lex_gt_at(const typed::pw_aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_gt_at(const typed::pw_multi_aff, Range> &mpa) const; template inline typed::map, pair> lex_le_at(const typed::multi_pw_aff, Range> &mpa) const; inline typed::map, pair> lex_le_at(const typed::aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_le_at(const typed::multi_aff, Range> &mpa) const; inline typed::map, pair> lex_le_at(const typed::pw_aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_le_at(const typed::pw_multi_aff, Range> &mpa) const; template inline typed::map, pair> lex_lt_at(const typed::multi_pw_aff, Range> &mpa) const; inline typed::map, pair> lex_lt_at(const typed::aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_lt_at(const typed::multi_aff, Range> &mpa) const; inline typed::map, pair> lex_lt_at(const typed::pw_aff, Anonymous> &mpa) const; template inline typed::map, pair> lex_lt_at(const typed::pw_multi_aff, Range> &mpa) const; inline typed::map, pair> lexmax() const; inline typed::pw_multi_aff, pair> lexmax_pw_multi_aff() const; inline typed::map, pair> lexmin() const; inline typed::pw_multi_aff, pair> lexmin_pw_multi_aff() const; inline typed::map, pair> lower_bound(const typed::multi_pw_aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::multi_aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::pw_aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::pw_multi_aff, pair> &lower) const; inline typed::map_list, pair> map_list() const; inline typed::multi_pw_aff, pair> max_multi_pw_aff() const; inline typed::multi_pw_aff, pair> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map> preimage_domain(const typed::multi_aff> &ma) const; template inline typed::map> preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::map> preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Range2> preimage_range(const typed::multi_aff> &ma) const; template inline typed::map, Range2> preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map, Range2> preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Domain2>, pair, Range2>> product(const typed::map &map2) const; template inline typed::union_map, Domain2>, pair, Range2>> product(const typed::union_map &umap2) const; template inline typed::map, Domain2>, pair, Range2>> product(const typed::basic_map &map2) const; inline typed::map, pair> project_out_all_params() const; inline typed::map, pair> project_out_param(const typed::id &id) const; inline typed::map, pair> project_out_param(const std::string &id) const; inline typed::map, pair> project_out_param(const typed::id_list &list) const; inline typed::set> range() const; inline typed::map, T1> range_factor_domain() const; inline typed::map, T2> range_factor_range() const; inline typed::fixed_box, pair> range_lattice_tile() const; inline typed::fixed_box, pair> get_range_lattice_tile() const = delete; inline typed::union_map, pair>, pair> range_map() const; template inline typed::map, pair, Range2>> range_product(const typed::map, Range2> &map2) const; template inline typed::union_map, pair, Range2>> range_product(const typed::union_map, Range2> &umap2) const; template inline typed::map, pair, Range2>> range_product(const typed::basic_map, Range2> &map2) const; inline typed::map, pair> range_reverse() const; inline typed::fixed_box, pair> range_simple_fixed_box_hull() const; inline typed::fixed_box, pair> get_range_simple_fixed_box_hull() const = delete; inline typed::id, pair> get_range_tuple_id() const = delete; inline typed::map, pair> reverse() const; inline typed::map, pair> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_domain_tuple(const std::string &id) const = delete; inline typed::map, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, pair> space() const; inline typed::space, pair> get_space() const = delete; inline typed::map, pair> subtract(const typed::map, pair> &map2) const; inline typed::union_map, pair> subtract(const typed::union_map, pair> &umap2) const; inline typed::map, pair> subtract(const typed::basic_map, pair> &map2) const; inline typed::union_map, pair> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::union_set> &dom) const; inline typed::union_map, pair> to_union_map() const; inline typed::map, T1>, T2> uncurry() const; inline typed::map, pair> unite(const typed::map, pair> &map2) const; inline typed::union_map, pair> unite(const typed::union_map, pair> &umap2) const; inline typed::map, pair> unite(const typed::basic_map, pair> &map2) const; static inline typed::map, pair> universe(const typed::space, pair> &space); inline typed::map, pair> upper_bound(const typed::multi_pw_aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::multi_aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::pw_aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::pw_multi_aff, pair> &upper) const; inline typed::set, pair>> wrap() const; }; template struct map, pair> : public isl::map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> map(const map, pair> &obj) : isl::map(obj) {} private: template {}, bool>::type = true> map(const base &obj) : isl::map(obj) {} public: static map from(const isl::map &obj) { return map(obj); } inline /* implicit */ map(const typed::basic_map, pair> &bmap); inline explicit map(const isl::ctx &ctx, const std::string &str); template inline typed::map> apply_domain(const typed::map, Domain2> &map2) const; template inline typed::union_map> apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::map> apply_domain(const typed::basic_map, Domain2> &map2) const; template inline typed::map, Arg2> apply_range(const typed::map, Arg2> &map2) const; template inline typed::union_map, Arg2> apply_range(const typed::union_map, Arg2> &umap2) const; template inline typed::map, Arg2> apply_range(const typed::basic_map, Arg2> &map2) const; inline typed::map, pair> as_map() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::union_pw_multi_aff, pair> as_union_pw_multi_aff() const; inline typed::set> bind_domain(const typed::multi_id> &tuple) const; inline typed::set> bind_range(const typed::multi_id> &tuple) const; inline typed::map, pair> coalesce() const; inline typed::map>> curry() const; inline typed::set, pair> deltas() const = delete; inline typed::map, pair> detect_equalities() const; inline typed::set> domain() const; inline typed::map> domain_factor_domain() const; inline typed::map> domain_factor_range() const; inline typed::union_map, pair>, pair> domain_map() const; inline typed::union_pw_multi_aff, pair>, pair> domain_map_union_pw_multi_aff() const; template inline typed::map, Domain2>, pair> domain_product(const typed::map> &map2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::union_map> &umap2) const; template inline typed::map, Domain2>, pair> domain_product(const typed::basic_map> &map2) const; inline typed::map, pair> domain_reverse() const; inline typed::id, pair> get_domain_tuple_id() const = delete; inline typed::map, pair> drop_unused_params() const; inline typed::map, pair> eq_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::union_map, pair> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::map, pair> eq_at(const typed::aff<> &mpa) const = delete; inline typed::map, pair> eq_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, pair> eq_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, pair> eq_at(const typed::pw_multi_aff<> &mpa) const = delete; inline bool every_map(const std::function, pair>)> &test) const; inline typed::map, pair> extract_map(const typed::space, pair> &space) const; inline typed::map> flatten_domain() const; inline typed::map, Anonymous> flatten_range() const; inline void foreach_basic_map(const std::function, pair>)> &fn) const; inline void foreach_map(const std::function, pair>)> &fn) const; inline typed::map, pair> gist(const typed::map, pair> &context) const; inline typed::union_map, pair> gist(const typed::union_map, pair> &context) const; inline typed::map, pair> gist(const typed::basic_map, pair> &context) const; inline typed::map, pair> gist_domain(const typed::set> &context) const; inline typed::union_map, pair> gist_domain(const typed::union_set> &uset) const; inline typed::map, pair> gist_domain(const typed::basic_set> &context) const; inline typed::map, pair> gist_domain(const typed::point> &context) const; inline typed::map, pair> gist_params(const typed::set<> &context) const; inline typed::map, pair> gist_params(const typed::basic_set<> &context) const; inline typed::map, pair> gist_params(const typed::point<> &context) const; inline typed::map, pair> intersect(const typed::map, pair> &map2) const; inline typed::union_map, pair> intersect(const typed::union_map, pair> &umap2) const; inline typed::map, pair> intersect(const typed::basic_map, pair> &map2) const; inline typed::map, pair> intersect_domain(const typed::set> &set) const; inline typed::union_map, pair> intersect_domain(const typed::space> &space) const; inline typed::union_map, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::map, pair> intersect_domain(const typed::basic_set> &set) const; inline typed::map, pair> intersect_domain(const typed::point> &set) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::basic_set &domain) const; inline typed::map, pair> intersect_domain_wrapped_domain(const typed::point &domain) const; inline typed::map, pair> intersect_params(const typed::set<> ¶ms) const; inline typed::map, pair> intersect_params(const typed::basic_set<> ¶ms) const; inline typed::map, pair> intersect_params(const typed::point<> ¶ms) const; inline typed::map, pair> intersect_range(const typed::set> &set) const; inline typed::union_map, pair> intersect_range(const typed::space> &space) const; inline typed::union_map, pair> intersect_range(const typed::union_set> &uset) const; inline typed::map, pair> intersect_range(const typed::basic_set> &set) const; inline typed::map, pair> intersect_range(const typed::point> &set) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::basic_set &domain) const; inline typed::map, pair> intersect_range_wrapped_domain(const typed::point &domain) const; inline typed::map, pair> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_ge_at(const typed::aff<> &mpa) const = delete; inline typed::map, pair> lex_ge_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_ge_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_gt_at(const typed::aff<> &mpa) const = delete; inline typed::map, pair> lex_gt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_gt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_le_at(const typed::aff<> &mpa) const = delete; inline typed::map, pair> lex_le_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_le_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_lt_at(const typed::aff<> &mpa) const = delete; inline typed::map, pair> lex_lt_at(const typed::multi_aff<> &mpa) const = delete; inline typed::map, pair> lex_lt_at(const typed::pw_aff<> &mpa) const = delete; inline typed::map, pair> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete; inline typed::map, pair> lexmax() const; inline typed::pw_multi_aff, pair> lexmax_pw_multi_aff() const; inline typed::map, pair> lexmin() const; inline typed::pw_multi_aff, pair> lexmin_pw_multi_aff() const; inline typed::map, pair> lower_bound(const typed::multi_pw_aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::multi_aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::pw_aff, pair> &lower) const; inline typed::map, pair> lower_bound(const typed::pw_multi_aff, pair> &lower) const; inline typed::map_list, pair> map_list() const; inline typed::multi_pw_aff, pair> max_multi_pw_aff() const; inline typed::multi_pw_aff, pair> min_multi_pw_aff() const; inline typed::set<> params() const; template inline typed::map> preimage_domain(const typed::multi_aff> &ma) const; template inline typed::map> preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::map> preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Arg2> preimage_range(const typed::multi_aff> &ma) const; template inline typed::map, Arg2> preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map, Arg2> preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::map, Domain2>, pair, Arg2>> product(const typed::map &map2) const; template inline typed::union_map, Domain2>, pair, Arg2>> product(const typed::union_map &umap2) const; template inline typed::map, Domain2>, pair, Arg2>> product(const typed::basic_map &map2) const; inline typed::map, pair> project_out_all_params() const; inline typed::map, pair> project_out_param(const typed::id &id) const; inline typed::map, pair> project_out_param(const std::string &id) const; inline typed::map, pair> project_out_param(const typed::id_list &list) const; inline typed::set> range() const; inline typed::map, Range> range_factor_domain() const; inline typed::map, Range2> range_factor_range() const; inline typed::fixed_box, pair> range_lattice_tile() const; inline typed::fixed_box, pair> get_range_lattice_tile() const = delete; inline typed::union_map, pair>, pair> range_map() const; template inline typed::map, pair, Arg2>> range_product(const typed::map, Arg2> &map2) const; template inline typed::union_map, pair, Arg2>> range_product(const typed::union_map, Arg2> &umap2) const; template inline typed::map, pair, Arg2>> range_product(const typed::basic_map, Arg2> &map2) const; inline typed::map, pair> range_reverse() const; inline typed::fixed_box, pair> range_simple_fixed_box_hull() const; inline typed::fixed_box, pair> get_range_simple_fixed_box_hull() const = delete; inline typed::id, pair> get_range_tuple_id() const = delete; inline typed::map, pair> reverse() const; inline typed::map, pair> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_domain_tuple(const std::string &id) const = delete; inline typed::map, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::map, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, pair> space() const; inline typed::space, pair> get_space() const = delete; inline typed::map, pair> subtract(const typed::map, pair> &map2) const; inline typed::union_map, pair> subtract(const typed::union_map, pair> &umap2) const; inline typed::map, pair> subtract(const typed::basic_map, pair> &map2) const; inline typed::union_map, pair> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::union_set> &dom) const; inline typed::union_map, pair> to_union_map() const; inline typed::map, Range>, Range2> uncurry() const; inline typed::map, pair> unite(const typed::map, pair> &map2) const; inline typed::union_map, pair> unite(const typed::union_map, pair> &umap2) const; inline typed::map, pair> unite(const typed::basic_map, pair> &map2) const; static inline typed::map, pair> universe(const typed::space, pair> &space); inline typed::map, pair> upper_bound(const typed::multi_pw_aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::multi_aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::pw_aff, pair> &upper) const; inline typed::map, pair> upper_bound(const typed::pw_multi_aff, pair> &upper) const; inline typed::set, pair>> wrap() const; }; template struct map_list : public isl::map_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; map_list() = default; template {} && std::is_base_of{}, bool>::type = true> map_list(const map_list &obj) : isl::map_list(obj) {} private: template {}, bool>::type = true> map_list(const base &obj) : isl::map_list(obj) {} public: static map_list from(const isl::map_list &obj) { return map_list(obj); } inline explicit map_list(const isl::ctx &ctx, int n); inline explicit map_list(const typed::map &el); inline explicit map_list(const isl::ctx &ctx, const std::string &str); inline typed::map_list add(const typed::map &el) const; inline typed::map_list add(const typed::basic_map &el) const; inline typed::map at(int index) const; inline typed::map get_at(int index) const = delete; inline typed::map_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::map)> &follows, const std::function)> &fn) const; inline typed::map_list set_at(int index, const typed::map &el) const; }; template struct multi_aff : public isl::multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_aff() = default; template {}, bool>::type = true> multi_aff(const multi_aff &obj) : isl::multi_aff(obj) {} private: template {}, bool>::type = true> multi_aff(const base &obj) : isl::multi_aff(obj) {} public: static multi_aff from(const isl::multi_aff &obj) { return multi_aff(obj); } inline /* implicit */ multi_aff(const typed::aff &aff); inline explicit multi_aff(const typed::space &space, const typed::aff_list &list); inline explicit multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff add(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_aff add(const typed::aff &multi2) const; inline typed::multi_aff add_constant(const typed::multi_val &mv) const; inline typed::multi_aff add_constant(const typed::val &v) const; inline typed::multi_aff add_constant(long v) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::map as_map() const = delete; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::union_map as_union_map() const = delete; inline typed::aff at(int pos) const; inline typed::aff get_at(int pos) const = delete; inline typed::basic_set<> bind(const typed::multi_id &tuple) const; inline typed::multi_aff bind_domain(const typed::multi_id<> &tuple) const = delete; inline typed::multi_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff coalesce() const; inline typed::multi_val constant_multi_val() const; inline typed::multi_val get_constant_multi_val() const = delete; inline typed::set<> domain() const; inline typed::multi_aff domain_reverse() const = delete; inline typed::pw_multi_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::multi_aff floor() const; inline typed::multi_aff gist(const typed::set<> &context) const; inline typed::union_pw_multi_aff gist(const typed::union_set<> &context) const; inline typed::multi_aff gist(const typed::basic_set<> &context) const; inline typed::multi_aff gist(const typed::point<> &context) const; inline typed::multi_aff gist_params(const typed::set<> &context) const; inline typed::multi_aff gist_params(const typed::basic_set<> &context) const; inline typed::multi_aff gist_params(const typed::point<> &context) const; inline typed::multi_aff identity() const; template inline typed::multi_aff insert_domain(const typed::space &domain) const; inline typed::pw_multi_aff intersect_domain(const typed::set<> &set) const = delete; inline typed::union_pw_multi_aff intersect_domain(const typed::space<> &space) const = delete; inline typed::union_pw_multi_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff intersect_params(const typed::set<> &set) const; inline typed::aff_list list() const; inline typed::aff_list get_list() const = delete; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_aff neg() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_aff> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff> product(const typed::pw_multi_aff &pma2) const; inline typed::multi_aff> product(const typed::aff &multi2) const; inline typed::multi_aff pullback(const typed::multi_aff<> &ma2) const = delete; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff<> &mpa2) const = delete; inline typed::pw_multi_aff pullback(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::multi_aff pullback(const typed::aff<> &ma2) const = delete; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; inline typed::multi_aff range_product(const typed::multi_aff<> &multi2) const = delete; inline typed::multi_pw_aff range_product(const typed::multi_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::pw_multi_aff range_product(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::multi_aff range_product(const typed::aff<> &multi2) const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_aff scale(const typed::multi_val &mv) const; inline typed::multi_aff scale(const typed::val &v) const; inline typed::multi_aff scale(long v) const; inline typed::multi_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_aff scale_down(const typed::val &v) const; inline typed::multi_aff scale_down(long v) const; inline typed::multi_aff set_at(int pos, const typed::aff &el) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_aff sub(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_aff sub(const typed::aff &multi2) const; inline typed::pw_multi_aff subtract_domain(const typed::set<> &set) const = delete; inline typed::union_pw_multi_aff subtract_domain(const typed::space<> &space) const = delete; inline typed::union_pw_multi_aff subtract_domain(const typed::union_set<> &uset) const = delete; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::multi_union_pw_aff to_multi_union_pw_aff() const; inline typed::pw_multi_aff to_pw_multi_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; template inline typed::multi_aff unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; }; template struct multi_aff : public isl::multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_aff() = default; template {} && std::is_base_of{}, bool>::type = true> multi_aff(const multi_aff &obj) : isl::multi_aff(obj) {} private: template {}, bool>::type = true> multi_aff(const base &obj) : isl::multi_aff(obj) {} public: static multi_aff from(const isl::multi_aff &obj) { return multi_aff(obj); } inline /* implicit */ multi_aff(const typed::aff &aff); inline explicit multi_aff(const typed::space &space, const typed::aff_list &list); inline explicit multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff add(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_aff add(const typed::aff &multi2) const; inline typed::multi_aff add_constant(const typed::multi_val &mv) const; inline typed::multi_aff add_constant(const typed::val &v) const; inline typed::multi_aff add_constant(long v) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::map as_map() const; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const = delete; inline typed::union_map as_union_map() const; inline typed::aff at(int pos) const; inline typed::aff get_at(int pos) const = delete; inline typed::basic_set bind(const typed::multi_id &tuple) const; inline typed::multi_aff bind_domain(const typed::multi_id &tuple) const; inline typed::multi_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff coalesce() const; inline typed::multi_val constant_multi_val() const; inline typed::multi_val get_constant_multi_val() const = delete; inline typed::set domain() const; inline typed::multi_aff domain_reverse() const = delete; inline typed::pw_multi_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::multi_aff floor() const; inline typed::multi_aff gist(const typed::set &context) const; inline typed::union_pw_multi_aff gist(const typed::union_set &context) const; inline typed::multi_aff gist(const typed::basic_set &context) const; inline typed::multi_aff gist(const typed::point &context) const; inline typed::multi_aff gist_params(const typed::set<> &context) const; inline typed::multi_aff gist_params(const typed::basic_set<> &context) const; inline typed::multi_aff gist_params(const typed::point<> &context) const; inline typed::multi_aff identity() const; inline typed::multi_aff insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff intersect_domain(const typed::set &set) const; inline typed::union_pw_multi_aff intersect_domain(const typed::space &space) const; inline typed::union_pw_multi_aff intersect_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff intersect_params(const typed::set<> &set) const; inline typed::aff_list list() const; inline typed::aff_list get_list() const = delete; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_aff neg() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_aff, pair> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::multi_aff, pair> product(const typed::aff &multi2) const; template inline typed::multi_aff pullback(const typed::multi_aff &ma2) const; inline typed::multi_aff pullback(const typed::multi_aff &ma2) const; template inline typed::multi_pw_aff pullback(const typed::multi_pw_aff &mpa2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff &mpa2) const; template inline typed::pw_multi_aff pullback(const typed::pw_multi_aff &pma2) const; inline typed::pw_multi_aff pullback(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff &upma2) const; template inline typed::multi_aff pullback(const typed::aff &ma2) const; inline typed::multi_aff pullback(const typed::aff &ma2) const; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; template inline typed::multi_aff> range_product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::pw_multi_aff> range_product(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff> range_product(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_aff> range_product(const typed::aff &multi2) const; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_aff scale(const typed::multi_val &mv) const; inline typed::multi_aff scale(const typed::val &v) const; inline typed::multi_aff scale(long v) const; inline typed::multi_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_aff scale_down(const typed::val &v) const; inline typed::multi_aff scale_down(long v) const; inline typed::multi_aff set_at(int pos, const typed::aff &el) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_aff sub(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_aff sub(const typed::aff &multi2) const; inline typed::pw_multi_aff subtract_domain(const typed::set &set) const; inline typed::union_pw_multi_aff subtract_domain(const typed::space &space) const; inline typed::union_pw_multi_aff subtract_domain(const typed::union_set &uset) const; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::multi_union_pw_aff to_multi_union_pw_aff() const; inline typed::pw_multi_aff to_pw_multi_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; inline typed::multi_aff unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; }; template struct multi_aff, Range> : public isl::multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> multi_aff(const multi_aff, Arg3> &obj) : isl::multi_aff(obj) {} private: template {}, bool>::type = true> multi_aff(const base &obj) : isl::multi_aff(obj) {} public: static multi_aff from(const isl::multi_aff &obj) { return multi_aff(obj); } inline /* implicit */ multi_aff(const typed::aff, Range> &aff); inline explicit multi_aff(const typed::space, Range> &space, const typed::aff_list, Anonymous> &list); inline explicit multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff, Range> add(const typed::multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> add(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_union_pw_aff, Range> add(const typed::multi_union_pw_aff, Range> &multi2) const; inline typed::pw_multi_aff, Range> add(const typed::pw_multi_aff, Range> &pma2) const; inline typed::union_pw_multi_aff, Range> add(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::multi_aff, Range> add(const typed::aff, Range> &multi2) const; inline typed::multi_aff, Range> add_constant(const typed::multi_val &mv) const; inline typed::multi_aff, Range> add_constant(const typed::val &v) const; inline typed::multi_aff, Range> add_constant(long v) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::union_pw_multi_aff &upma2) const; inline typed::map, Range> as_map() const; inline typed::multi_aff, Range> as_multi_aff() const; inline typed::multi_union_pw_aff, Range> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Range> as_pw_multi_aff() const; inline typed::set, Range> as_set() const = delete; inline typed::union_map, Range> as_union_map() const; inline typed::aff, Anonymous> at(int pos) const; inline typed::aff, Range> get_at(int pos) const = delete; inline typed::basic_set> bind(const typed::multi_id &tuple) const; inline typed::multi_aff bind_domain(const typed::multi_id> &tuple) const; inline typed::multi_aff bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::pw_multi_aff, Range> coalesce() const; inline typed::multi_val constant_multi_val() const; inline typed::multi_val, Range> get_constant_multi_val() const = delete; inline typed::set> domain() const; inline typed::multi_aff, Range> domain_reverse() const; inline typed::pw_multi_aff, Range> drop_unused_params() const; inline typed::pw_multi_aff, Range> extract_pw_multi_aff(const typed::space, Range> &space) const; inline typed::multi_aff, Range> floor() const; inline typed::multi_aff, Range> gist(const typed::set> &context) const; inline typed::union_pw_multi_aff, Range> gist(const typed::union_set> &context) const; inline typed::multi_aff, Range> gist(const typed::basic_set> &context) const; inline typed::multi_aff, Range> gist(const typed::point> &context) const; inline typed::multi_aff, Range> gist_params(const typed::set<> &context) const; inline typed::multi_aff, Range> gist_params(const typed::basic_set<> &context) const; inline typed::multi_aff, Range> gist_params(const typed::point<> &context) const; inline typed::multi_aff, Range> identity() const; inline typed::multi_aff, Range> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff, Range> intersect_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, Range> intersect_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, Range> intersect_domain(const typed::union_set> &uset) const; inline typed::union_pw_multi_aff, Range> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff, Range> intersect_params(const typed::set<> &set) const; inline typed::aff_list, Anonymous> list() const; inline typed::aff_list, Range> get_list() const = delete; inline typed::multi_pw_aff, Range> max(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff, Range> min(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_aff, Range> neg() const; template inline typed::pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::multi_aff, Arg2>, pair> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, Arg2>, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::multi_aff, Arg2>, pair> product(const typed::aff &multi2) const; template inline typed::multi_aff pullback(const typed::multi_aff> &ma2) const; inline typed::multi_aff pullback(const typed::multi_aff> &ma2) const; template inline typed::multi_pw_aff pullback(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff> &mpa2) const; template inline typed::pw_multi_aff pullback(const typed::pw_multi_aff> &pma2) const; inline typed::pw_multi_aff pullback(const typed::pw_multi_aff> &pma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff> &upma2) const; template inline typed::multi_aff pullback(const typed::aff> &ma2) const; inline typed::multi_aff pullback(const typed::aff> &ma2) const; inline typed::pw_multi_aff_list, Range> pw_multi_aff_list() const; inline typed::pw_multi_aff, Range> range_factor_domain() const = delete; inline typed::pw_multi_aff, Range> range_factor_range() const = delete; template inline typed::multi_aff, pair> range_product(const typed::multi_aff, Arg2> &multi2) const; template inline typed::multi_pw_aff, pair> range_product(const typed::multi_pw_aff, Arg2> &multi2) const; template inline typed::multi_union_pw_aff, pair> range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const; template inline typed::pw_multi_aff, pair> range_product(const typed::pw_multi_aff, Arg2> &pma2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const; inline typed::multi_aff, pair> range_product(const typed::aff, Anonymous> &multi2) const; inline typed::id, Range> get_range_tuple_id() const = delete; inline typed::multi_aff, Range> scale(const typed::multi_val &mv) const; inline typed::multi_aff, Range> scale(const typed::val &v) const; inline typed::multi_aff, Range> scale(long v) const; inline typed::multi_aff, Range> scale_down(const typed::multi_val &mv) const; inline typed::multi_aff, Range> scale_down(const typed::val &v) const; inline typed::multi_aff, Range> scale_down(long v) const; inline typed::multi_aff, Range> set_at(int pos, const typed::aff, Anonymous> &el) const; inline typed::multi_pw_aff, Range> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, Range> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; template inline typed::multi_aff, Arg1> set_range_tuple(const typed::id &id) const; template inline typed::multi_aff, Arg1> set_range_tuple(const std::string &id) const; inline typed::space, Range> space() const; inline typed::space, Range> get_space() const = delete; inline typed::multi_aff, Range> sub(const typed::multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> sub(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_union_pw_aff, Range> sub(const typed::multi_union_pw_aff, Range> &multi2) const; inline typed::pw_multi_aff, Range> sub(const typed::pw_multi_aff, Range> &pma2) const; inline typed::union_pw_multi_aff, Range> sub(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::multi_aff, Range> sub(const typed::aff, Range> &multi2) const; inline typed::pw_multi_aff, Range> subtract_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, Range> subtract_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, Range> subtract_domain(const typed::union_set> &uset) const; inline typed::multi_pw_aff, Range> to_multi_pw_aff() const; inline typed::multi_union_pw_aff, Range> to_multi_union_pw_aff() const; inline typed::pw_multi_aff, Range> to_pw_multi_aff() const; inline typed::union_pw_multi_aff, Range> to_union_pw_multi_aff() const; inline typed::multi_aff, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, Range> union_add(const typed::multi_pw_aff, Range> &mpa2) const; inline typed::multi_union_pw_aff, Range> union_add(const typed::multi_union_pw_aff, Range> &mupa2) const; inline typed::pw_multi_aff, Range> union_add(const typed::pw_multi_aff, Range> &pma2) const; inline typed::union_pw_multi_aff, Range> union_add(const typed::union_pw_multi_aff, Range> &upma2) const; }; template struct multi_aff> : public isl::multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> multi_aff(const multi_aff> &obj) : isl::multi_aff(obj) {} private: template {}, bool>::type = true> multi_aff(const base &obj) : isl::multi_aff(obj) {} public: static multi_aff from(const isl::multi_aff &obj) { return multi_aff(obj); } inline /* implicit */ multi_aff(const typed::aff> &aff); inline explicit multi_aff(const typed::space> &space, const typed::aff_list &list); inline explicit multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff> add(const typed::multi_aff> &multi2) const; inline typed::multi_pw_aff> add(const typed::multi_pw_aff> &multi2) const; inline typed::multi_union_pw_aff> add(const typed::multi_union_pw_aff> &multi2) const; inline typed::pw_multi_aff> add(const typed::pw_multi_aff> &pma2) const; inline typed::union_pw_multi_aff> add(const typed::union_pw_multi_aff> &upma2) const; inline typed::multi_aff> add(const typed::aff> &multi2) const; inline typed::multi_aff> add_constant(const typed::multi_val> &mv) const; inline typed::multi_aff> add_constant(const typed::val> &v) const; inline typed::multi_aff> add_constant(long v) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff, Arg3> &upma2) const; inline typed::map> as_map() const; inline typed::multi_aff> as_multi_aff() const; inline typed::multi_union_pw_aff> as_multi_union_pw_aff() const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::set> as_set() const = delete; inline typed::union_map> as_union_map() const; inline typed::aff at(int pos) const; inline typed::aff> get_at(int pos) const = delete; inline typed::basic_set bind(const typed::multi_id> &tuple) const; inline typed::multi_aff> bind_domain(const typed::multi_id &tuple) const; inline typed::multi_aff> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff> coalesce() const; inline typed::multi_val> constant_multi_val() const; inline typed::multi_val> get_constant_multi_val() const = delete; inline typed::set domain() const; inline typed::multi_aff> domain_reverse() const = delete; inline typed::pw_multi_aff> drop_unused_params() const; inline typed::pw_multi_aff> extract_pw_multi_aff(const typed::space> &space) const; inline typed::multi_aff> floor() const; inline typed::multi_aff> gist(const typed::set &context) const; inline typed::union_pw_multi_aff> gist(const typed::union_set &context) const; inline typed::multi_aff> gist(const typed::basic_set &context) const; inline typed::multi_aff> gist(const typed::point &context) const; inline typed::multi_aff> gist_params(const typed::set<> &context) const; inline typed::multi_aff> gist_params(const typed::basic_set<> &context) const; inline typed::multi_aff> gist_params(const typed::point<> &context) const; inline typed::multi_aff> identity() const; inline typed::multi_aff> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff> intersect_domain(const typed::set &set) const; inline typed::union_pw_multi_aff> intersect_domain(const typed::space &space) const; inline typed::union_pw_multi_aff> intersect_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff> intersect_params(const typed::set<> &set) const; inline typed::aff_list list() const; inline typed::aff_list> get_list() const = delete; inline typed::multi_pw_aff> max(const typed::multi_pw_aff> &multi2) const; inline typed::multi_val> max_multi_val() const; inline typed::multi_pw_aff> min(const typed::multi_pw_aff> &multi2) const; inline typed::multi_val> min_multi_val() const; inline typed::multi_aff> neg() const; inline typed::pw_multi_aff> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_aff, pair, Arg3>> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, pair, Arg3>> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, pair, Arg3>> product(const typed::pw_multi_aff &pma2) const; template inline typed::multi_aff, pair, Anonymous>> product(const typed::aff &multi2) const; template inline typed::multi_aff> pullback(const typed::multi_aff &ma2) const; inline typed::multi_aff> pullback(const typed::multi_aff &ma2) const; template inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff &mpa2) const; inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff &mpa2) const; template inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff &pma2) const; inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff &upma2) const; template inline typed::multi_aff> pullback(const typed::aff &ma2) const; inline typed::multi_aff> pullback(const typed::aff &ma2) const; inline typed::pw_multi_aff_list> pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const; inline typed::pw_multi_aff range_factor_range() const; template inline typed::multi_aff, Arg3>> range_product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, Arg3>> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff, Arg3>> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::pw_multi_aff, Arg3>> range_product(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, Arg3>> range_product(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_aff, Anonymous>> range_product(const typed::aff &multi2) const; inline typed::id> get_range_tuple_id() const = delete; inline typed::multi_aff> scale(const typed::multi_val> &mv) const; inline typed::multi_aff> scale(const typed::val> &v) const; inline typed::multi_aff> scale(long v) const; inline typed::multi_aff> scale_down(const typed::multi_val> &mv) const; inline typed::multi_aff> scale_down(const typed::val> &v) const; inline typed::multi_aff> scale_down(long v) const; inline typed::multi_aff> set_at(int pos, const typed::aff &el) const; inline typed::multi_pw_aff> set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff> set_at(int pos, const typed::union_pw_aff &el) const; inline typed::multi_aff> set_range_tuple(const typed::id<> &id) const = delete; inline typed::multi_aff> set_range_tuple(const std::string &id) const = delete; inline typed::space> space() const; inline typed::space> get_space() const = delete; inline typed::multi_aff> sub(const typed::multi_aff> &multi2) const; inline typed::multi_pw_aff> sub(const typed::multi_pw_aff> &multi2) const; inline typed::multi_union_pw_aff> sub(const typed::multi_union_pw_aff> &multi2) const; inline typed::pw_multi_aff> sub(const typed::pw_multi_aff> &pma2) const; inline typed::union_pw_multi_aff> sub(const typed::union_pw_multi_aff> &upma2) const; inline typed::multi_aff> sub(const typed::aff> &multi2) const; inline typed::pw_multi_aff> subtract_domain(const typed::set &set) const; inline typed::union_pw_multi_aff> subtract_domain(const typed::space &space) const; inline typed::union_pw_multi_aff> subtract_domain(const typed::union_set &uset) const; inline typed::multi_pw_aff> to_multi_pw_aff() const; inline typed::multi_union_pw_aff> to_multi_union_pw_aff() const; inline typed::pw_multi_aff> to_pw_multi_aff() const; inline typed::union_pw_multi_aff> to_union_pw_multi_aff() const; inline typed::multi_aff> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff> union_add(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_union_pw_aff> union_add(const typed::multi_union_pw_aff> &mupa2) const; inline typed::pw_multi_aff> union_add(const typed::pw_multi_aff> &pma2) const; inline typed::union_pw_multi_aff> union_add(const typed::union_pw_multi_aff> &upma2) const; }; template struct multi_aff, pair> : public isl::multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> multi_aff(const multi_aff, pair> &obj) : isl::multi_aff(obj) {} private: template {}, bool>::type = true> multi_aff(const base &obj) : isl::multi_aff(obj) {} public: static multi_aff from(const isl::multi_aff &obj) { return multi_aff(obj); } inline /* implicit */ multi_aff(const typed::aff, pair> &aff); inline explicit multi_aff(const typed::space, pair> &space, const typed::aff_list, Anonymous> &list); inline explicit multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_aff, pair> add(const typed::multi_aff, pair> &multi2) const; inline typed::multi_pw_aff, pair> add(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_union_pw_aff, pair> add(const typed::multi_union_pw_aff, pair> &multi2) const; inline typed::pw_multi_aff, pair> add(const typed::pw_multi_aff, pair> &pma2) const; inline typed::union_pw_multi_aff, pair> add(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::multi_aff, pair> add(const typed::aff, pair> &multi2) const; inline typed::multi_aff, pair> add_constant(const typed::multi_val> &mv) const; inline typed::multi_aff, pair> add_constant(const typed::val> &v) const; inline typed::multi_aff, pair> add_constant(long v) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::union_pw_multi_aff, Arg2> &upma2) const; inline typed::map, pair> as_map() const; inline typed::multi_aff, pair> as_multi_aff() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::set, pair> as_set() const = delete; inline typed::union_map, pair> as_union_map() const; inline typed::aff, Anonymous> at(int pos) const; inline typed::aff, pair> get_at(int pos) const = delete; inline typed::basic_set> bind(const typed::multi_id> &tuple) const; inline typed::multi_aff> bind_domain(const typed::multi_id> &tuple) const; inline typed::multi_aff> bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::pw_multi_aff, pair> coalesce() const; inline typed::multi_val> constant_multi_val() const; inline typed::multi_val, pair> get_constant_multi_val() const = delete; inline typed::set> domain() const; inline typed::multi_aff, pair> domain_reverse() const; inline typed::pw_multi_aff, pair> drop_unused_params() const; inline typed::pw_multi_aff, pair> extract_pw_multi_aff(const typed::space, pair> &space) const; inline typed::multi_aff, pair> floor() const; inline typed::multi_aff, pair> gist(const typed::set> &context) const; inline typed::union_pw_multi_aff, pair> gist(const typed::union_set> &context) const; inline typed::multi_aff, pair> gist(const typed::basic_set> &context) const; inline typed::multi_aff, pair> gist(const typed::point> &context) const; inline typed::multi_aff, pair> gist_params(const typed::set<> &context) const; inline typed::multi_aff, pair> gist_params(const typed::basic_set<> &context) const; inline typed::multi_aff, pair> gist_params(const typed::point<> &context) const; inline typed::multi_aff, pair> identity() const; inline typed::multi_aff, pair> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff, pair> intersect_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, pair> intersect_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::union_pw_multi_aff, pair> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff, pair> intersect_params(const typed::set<> &set) const; inline typed::aff_list, Anonymous> list() const; inline typed::aff_list, pair> get_list() const = delete; inline typed::multi_pw_aff, pair> max(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_val> max_multi_val() const; inline typed::multi_pw_aff, pair> min(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_val> min_multi_val() const; inline typed::multi_aff, pair> neg() const; template inline typed::pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::multi_aff, Domain2>, pair, Arg2>> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, Domain2>, pair, Arg2>> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, Domain2>, pair, Arg2>> product(const typed::pw_multi_aff &pma2) const; template inline typed::multi_aff, Domain2>, pair, Anonymous>> product(const typed::aff &multi2) const; template inline typed::multi_aff> pullback(const typed::multi_aff> &ma2) const; inline typed::multi_aff> pullback(const typed::multi_aff> &ma2) const; template inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff> &mpa2) const; template inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff> &pma2) const; inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff> &pma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff> &upma2) const; template inline typed::multi_aff> pullback(const typed::aff> &ma2) const; inline typed::multi_aff> pullback(const typed::aff> &ma2) const; inline typed::pw_multi_aff_list, pair> pw_multi_aff_list() const; inline typed::pw_multi_aff, Range> range_factor_domain() const; inline typed::pw_multi_aff, Range2> range_factor_range() const; template inline typed::multi_aff, pair, Arg2>> range_product(const typed::multi_aff, Arg2> &multi2) const; template inline typed::multi_pw_aff, pair, Arg2>> range_product(const typed::multi_pw_aff, Arg2> &multi2) const; template inline typed::multi_union_pw_aff, pair, Arg2>> range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const; template inline typed::pw_multi_aff, pair, Arg2>> range_product(const typed::pw_multi_aff, Arg2> &pma2) const; template inline typed::union_pw_multi_aff, pair, Arg2>> range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const; inline typed::multi_aff, pair, Anonymous>> range_product(const typed::aff, Anonymous> &multi2) const; inline typed::id, pair> get_range_tuple_id() const = delete; inline typed::multi_aff, pair> scale(const typed::multi_val> &mv) const; inline typed::multi_aff, pair> scale(const typed::val> &v) const; inline typed::multi_aff, pair> scale(long v) const; inline typed::multi_aff, pair> scale_down(const typed::multi_val> &mv) const; inline typed::multi_aff, pair> scale_down(const typed::val> &v) const; inline typed::multi_aff, pair> scale_down(long v) const; inline typed::multi_aff, pair> set_at(int pos, const typed::aff, Anonymous> &el) const; inline typed::multi_pw_aff, pair> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, pair> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; inline typed::multi_aff, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::multi_aff, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, pair> space() const; inline typed::space, pair> get_space() const = delete; inline typed::multi_aff, pair> sub(const typed::multi_aff, pair> &multi2) const; inline typed::multi_pw_aff, pair> sub(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_union_pw_aff, pair> sub(const typed::multi_union_pw_aff, pair> &multi2) const; inline typed::pw_multi_aff, pair> sub(const typed::pw_multi_aff, pair> &pma2) const; inline typed::union_pw_multi_aff, pair> sub(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::multi_aff, pair> sub(const typed::aff, pair> &multi2) const; inline typed::pw_multi_aff, pair> subtract_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, pair> subtract_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, pair> subtract_domain(const typed::union_set> &uset) const; inline typed::multi_pw_aff, pair> to_multi_pw_aff() const; inline typed::multi_union_pw_aff, pair> to_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> to_pw_multi_aff() const; inline typed::union_pw_multi_aff, pair> to_union_pw_multi_aff() const; inline typed::multi_aff, pair> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, pair> union_add(const typed::multi_pw_aff, pair> &mpa2) const; inline typed::multi_union_pw_aff, pair> union_add(const typed::multi_union_pw_aff, pair> &mupa2) const; inline typed::pw_multi_aff, pair> union_add(const typed::pw_multi_aff, pair> &pma2) const; inline typed::union_pw_multi_aff, pair> union_add(const typed::union_pw_multi_aff, pair> &upma2) const; }; template struct multi_id : public isl::multi_id { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_id() = default; template {}, bool>::type = true> multi_id(const multi_id &obj) : isl::multi_id(obj) {} private: template {}, bool>::type = true> multi_id(const base &obj) : isl::multi_id(obj) {} public: static multi_id from(const isl::multi_id &obj) { return multi_id(obj); } inline explicit multi_id(const typed::space &space, const typed::id_list &list); inline explicit multi_id(const isl::ctx &ctx, const std::string &str); inline typed::id at(int pos) const; inline typed::id get_at(int pos) const = delete; inline typed::id_list list() const; inline typed::id_list get_list() const = delete; inline typed::multi_id range_product(const typed::multi_id<> &multi2) const = delete; inline typed::multi_id set_at(int pos, const typed::id &el) const; inline typed::multi_id set_at(int pos, const std::string &el) const; inline typed::space space() const; inline typed::space get_space() const = delete; }; template struct multi_pw_aff : public isl::multi_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_pw_aff() = default; template {}, bool>::type = true> multi_pw_aff(const multi_pw_aff &obj) : isl::multi_pw_aff(obj) {} private: template {}, bool>::type = true> multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {} public: static multi_pw_aff from(const isl::multi_pw_aff &obj) { return multi_pw_aff(obj); } inline /* implicit */ multi_pw_aff(const typed::aff &aff); inline /* implicit */ multi_pw_aff(const typed::multi_aff &ma); inline /* implicit */ multi_pw_aff(const typed::pw_aff &pa); inline explicit multi_pw_aff(const typed::space &space, const typed::pw_aff_list &list); inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff &pma); inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_pw_aff add(const typed::aff &multi2) const; inline typed::multi_pw_aff add(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff add(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff add(const typed::pw_multi_aff &multi2) const; inline typed::multi_pw_aff add_constant(const typed::multi_val &mv) const; inline typed::multi_pw_aff add_constant(const typed::val &v) const; inline typed::multi_pw_aff add_constant(long v) const; inline typed::map as_map() const = delete; inline typed::multi_aff as_multi_aff() const; inline typed::set as_set() const; inline typed::pw_aff at(int pos) const; inline typed::pw_aff get_at(int pos) const = delete; inline typed::set<> bind(const typed::multi_id &tuple) const; inline typed::multi_pw_aff bind_domain(const typed::multi_id<> &tuple) const = delete; inline typed::multi_pw_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::multi_pw_aff coalesce() const; inline typed::set<> domain() const; inline typed::multi_pw_aff domain_reverse() const = delete; inline typed::multi_pw_aff gist(const typed::set<> &set) const; inline typed::multi_union_pw_aff gist(const typed::union_set<> &context) const; inline typed::multi_pw_aff gist(const typed::basic_set<> &set) const; inline typed::multi_pw_aff gist(const typed::point<> &set) const; inline typed::multi_pw_aff gist_params(const typed::set<> &set) const; inline typed::multi_pw_aff gist_params(const typed::basic_set<> &set) const; inline typed::multi_pw_aff gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff identity() const; template inline typed::multi_pw_aff insert_domain(const typed::space &domain) const; inline typed::multi_pw_aff intersect_domain(const typed::set<> &domain) const = delete; inline typed::multi_union_pw_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::multi_pw_aff intersect_domain(const typed::basic_set<> &domain) const = delete; inline typed::multi_pw_aff intersect_domain(const typed::point<> &domain) const = delete; inline typed::multi_pw_aff intersect_params(const typed::set<> &set) const; inline typed::multi_pw_aff intersect_params(const typed::basic_set<> &set) const; inline typed::multi_pw_aff intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list list() const; inline typed::pw_aff_list get_list() const = delete; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::multi_pw_aff max(const typed::aff &multi2) const; inline typed::multi_pw_aff max(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff max(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff max(const typed::pw_multi_aff &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::multi_pw_aff min(const typed::aff &multi2) const; inline typed::multi_pw_aff min(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff min(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff min(const typed::pw_multi_aff &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_pw_aff neg() const; template inline typed::multi_pw_aff> product(const typed::multi_pw_aff &multi2) const; inline typed::multi_pw_aff> product(const typed::aff &multi2) const; template inline typed::multi_pw_aff> product(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff> product(const typed::pw_aff &multi2) const; template inline typed::multi_pw_aff> product(const typed::pw_multi_aff &multi2) const; inline typed::multi_pw_aff pullback(const typed::multi_aff<> &ma) const = delete; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff<> &mpa2) const = delete; inline typed::multi_pw_aff pullback(const typed::pw_multi_aff<> &pma) const = delete; inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::multi_pw_aff range_product(const typed::multi_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::multi_pw_aff range_product(const typed::aff<> &multi2) const = delete; inline typed::multi_pw_aff range_product(const typed::multi_aff<> &multi2) const = delete; inline typed::multi_pw_aff range_product(const typed::pw_aff<> &multi2) const = delete; inline typed::multi_pw_aff range_product(const typed::pw_multi_aff<> &multi2) const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_pw_aff scale(const typed::multi_val &mv) const; inline typed::multi_pw_aff scale(const typed::val &v) const; inline typed::multi_pw_aff scale(long v) const; inline typed::multi_pw_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_pw_aff scale_down(const typed::val &v) const; inline typed::multi_pw_aff scale_down(long v) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_pw_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_pw_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::aff &multi2) const; inline typed::multi_pw_aff sub(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::pw_multi_aff &multi2) const; template inline typed::multi_pw_aff unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::multi_pw_aff union_add(const typed::aff &mpa2) const; inline typed::multi_pw_aff union_add(const typed::multi_aff &mpa2) const; inline typed::multi_pw_aff union_add(const typed::pw_aff &mpa2) const; inline typed::multi_pw_aff union_add(const typed::pw_multi_aff &mpa2) const; }; template struct multi_pw_aff : public isl::multi_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_pw_aff() = default; template {} && std::is_base_of{}, bool>::type = true> multi_pw_aff(const multi_pw_aff &obj) : isl::multi_pw_aff(obj) {} private: template {}, bool>::type = true> multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {} public: static multi_pw_aff from(const isl::multi_pw_aff &obj) { return multi_pw_aff(obj); } inline /* implicit */ multi_pw_aff(const typed::aff &aff); inline /* implicit */ multi_pw_aff(const typed::multi_aff &ma); inline /* implicit */ multi_pw_aff(const typed::pw_aff &pa); inline explicit multi_pw_aff(const typed::space &space, const typed::pw_aff_list &list); inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff &pma); inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_pw_aff add(const typed::aff &multi2) const; inline typed::multi_pw_aff add(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff add(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff add(const typed::pw_multi_aff &multi2) const; inline typed::multi_pw_aff add_constant(const typed::multi_val &mv) const; inline typed::multi_pw_aff add_constant(const typed::val &v) const; inline typed::multi_pw_aff add_constant(long v) const; inline typed::map as_map() const; inline typed::multi_aff as_multi_aff() const; inline typed::set as_set() const = delete; inline typed::pw_aff at(int pos) const; inline typed::pw_aff get_at(int pos) const = delete; inline typed::set bind(const typed::multi_id &tuple) const; inline typed::multi_pw_aff bind_domain(const typed::multi_id &tuple) const; inline typed::multi_pw_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::multi_pw_aff coalesce() const; inline typed::set domain() const; inline typed::multi_pw_aff domain_reverse() const = delete; inline typed::multi_pw_aff gist(const typed::set &set) const; inline typed::multi_union_pw_aff gist(const typed::union_set &context) const; inline typed::multi_pw_aff gist(const typed::basic_set &set) const; inline typed::multi_pw_aff gist(const typed::point &set) const; inline typed::multi_pw_aff gist_params(const typed::set<> &set) const; inline typed::multi_pw_aff gist_params(const typed::basic_set<> &set) const; inline typed::multi_pw_aff gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff identity() const; inline typed::multi_pw_aff insert_domain(const typed::space<> &domain) const = delete; inline typed::multi_pw_aff intersect_domain(const typed::set &domain) const; inline typed::multi_union_pw_aff intersect_domain(const typed::union_set &uset) const; inline typed::multi_pw_aff intersect_domain(const typed::basic_set &domain) const; inline typed::multi_pw_aff intersect_domain(const typed::point &domain) const; inline typed::multi_pw_aff intersect_params(const typed::set<> &set) const; inline typed::multi_pw_aff intersect_params(const typed::basic_set<> &set) const; inline typed::multi_pw_aff intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list list() const; inline typed::pw_aff_list get_list() const = delete; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::multi_pw_aff max(const typed::aff &multi2) const; inline typed::multi_pw_aff max(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff max(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff max(const typed::pw_multi_aff &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::multi_pw_aff min(const typed::aff &multi2) const; inline typed::multi_pw_aff min(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff min(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff min(const typed::pw_multi_aff &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_pw_aff neg() const; template inline typed::multi_pw_aff, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_pw_aff, pair> product(const typed::aff &multi2) const; template inline typed::multi_pw_aff, pair> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, pair> product(const typed::pw_aff &multi2) const; template inline typed::multi_pw_aff, pair> product(const typed::pw_multi_aff &multi2) const; template inline typed::multi_pw_aff pullback(const typed::multi_aff &ma) const; inline typed::multi_pw_aff pullback(const typed::multi_aff &ma) const; template inline typed::multi_pw_aff pullback(const typed::multi_pw_aff &mpa2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff &mpa2) const; template inline typed::multi_pw_aff pullback(const typed::pw_multi_aff &pma) const; inline typed::multi_pw_aff pullback(const typed::pw_multi_aff &pma) const; template inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; template inline typed::multi_pw_aff> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_pw_aff> range_product(const typed::aff &multi2) const; template inline typed::multi_pw_aff> range_product(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff> range_product(const typed::pw_aff &multi2) const; template inline typed::multi_pw_aff> range_product(const typed::pw_multi_aff &multi2) const; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_pw_aff scale(const typed::multi_val &mv) const; inline typed::multi_pw_aff scale(const typed::val &v) const; inline typed::multi_pw_aff scale(long v) const; inline typed::multi_pw_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_pw_aff scale_down(const typed::val &v) const; inline typed::multi_pw_aff scale_down(long v) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_pw_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_pw_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::aff &multi2) const; inline typed::multi_pw_aff sub(const typed::multi_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::pw_aff &multi2) const; inline typed::multi_pw_aff sub(const typed::pw_multi_aff &multi2) const; inline typed::multi_pw_aff unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::multi_pw_aff union_add(const typed::aff &mpa2) const; inline typed::multi_pw_aff union_add(const typed::multi_aff &mpa2) const; inline typed::multi_pw_aff union_add(const typed::pw_aff &mpa2) const; inline typed::multi_pw_aff union_add(const typed::pw_multi_aff &mpa2) const; }; template struct multi_pw_aff, Range> : public isl::multi_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_pw_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> multi_pw_aff(const multi_pw_aff, Arg3> &obj) : isl::multi_pw_aff(obj) {} private: template {}, bool>::type = true> multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {} public: static multi_pw_aff from(const isl::multi_pw_aff &obj) { return multi_pw_aff(obj); } inline /* implicit */ multi_pw_aff(const typed::aff, Range> &aff); inline /* implicit */ multi_pw_aff(const typed::multi_aff, Range> &ma); inline /* implicit */ multi_pw_aff(const typed::pw_aff, Range> &pa); inline explicit multi_pw_aff(const typed::space, Range> &space, const typed::pw_aff_list, Anonymous> &list); inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff, Range> &pma); inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff, Range> add(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_union_pw_aff, Range> add(const typed::multi_union_pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> add(const typed::aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> add(const typed::multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> add(const typed::pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> add(const typed::pw_multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> add_constant(const typed::multi_val &mv) const; inline typed::multi_pw_aff, Range> add_constant(const typed::val &v) const; inline typed::multi_pw_aff, Range> add_constant(long v) const; inline typed::map, Range> as_map() const; inline typed::multi_aff, Range> as_multi_aff() const; inline typed::set, Range> as_set() const = delete; inline typed::pw_aff, Anonymous> at(int pos) const; inline typed::pw_aff, Range> get_at(int pos) const = delete; inline typed::set> bind(const typed::multi_id &tuple) const; inline typed::multi_pw_aff bind_domain(const typed::multi_id> &tuple) const; inline typed::multi_pw_aff bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::multi_pw_aff, Range> coalesce() const; inline typed::set> domain() const; inline typed::multi_pw_aff, Range> domain_reverse() const; inline typed::multi_pw_aff, Range> gist(const typed::set> &set) const; inline typed::multi_union_pw_aff, Range> gist(const typed::union_set> &context) const; inline typed::multi_pw_aff, Range> gist(const typed::basic_set> &set) const; inline typed::multi_pw_aff, Range> gist(const typed::point> &set) const; inline typed::multi_pw_aff, Range> gist_params(const typed::set<> &set) const; inline typed::multi_pw_aff, Range> gist_params(const typed::basic_set<> &set) const; inline typed::multi_pw_aff, Range> gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff, Range> identity() const; inline typed::multi_pw_aff, Range> insert_domain(const typed::space<> &domain) const = delete; inline typed::multi_pw_aff, Range> intersect_domain(const typed::set> &domain) const; inline typed::multi_union_pw_aff, Range> intersect_domain(const typed::union_set> &uset) const; inline typed::multi_pw_aff, Range> intersect_domain(const typed::basic_set> &domain) const; inline typed::multi_pw_aff, Range> intersect_domain(const typed::point> &domain) const; inline typed::multi_pw_aff, Range> intersect_params(const typed::set<> &set) const; inline typed::multi_pw_aff, Range> intersect_params(const typed::basic_set<> &set) const; inline typed::multi_pw_aff, Range> intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list, Anonymous> list() const; inline typed::pw_aff_list, Range> get_list() const = delete; inline typed::multi_pw_aff, Range> max(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> max(const typed::aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> max(const typed::multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> max(const typed::pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> max(const typed::pw_multi_aff, Range> &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff, Range> min(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> min(const typed::aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> min(const typed::multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> min(const typed::pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> min(const typed::pw_multi_aff, Range> &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_pw_aff, Range> neg() const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::aff &multi2) const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::multi_aff &multi2) const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::pw_aff &multi2) const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::pw_multi_aff &multi2) const; template inline typed::multi_pw_aff pullback(const typed::multi_aff> &ma) const; inline typed::multi_pw_aff pullback(const typed::multi_aff> &ma) const; template inline typed::multi_pw_aff pullback(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff> &mpa2) const; template inline typed::multi_pw_aff pullback(const typed::pw_multi_aff> &pma) const; inline typed::multi_pw_aff pullback(const typed::pw_multi_aff> &pma) const; template inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; template inline typed::multi_pw_aff, pair> range_product(const typed::multi_pw_aff, Arg2> &multi2) const; template inline typed::multi_union_pw_aff, pair> range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const; inline typed::multi_pw_aff, pair> range_product(const typed::aff, Anonymous> &multi2) const; template inline typed::multi_pw_aff, pair> range_product(const typed::multi_aff, Arg2> &multi2) const; inline typed::multi_pw_aff, pair> range_product(const typed::pw_aff, Anonymous> &multi2) const; template inline typed::multi_pw_aff, pair> range_product(const typed::pw_multi_aff, Arg2> &multi2) const; inline typed::id, Range> get_range_tuple_id() const = delete; inline typed::multi_pw_aff, Range> scale(const typed::multi_val &mv) const; inline typed::multi_pw_aff, Range> scale(const typed::val &v) const; inline typed::multi_pw_aff, Range> scale(long v) const; inline typed::multi_pw_aff, Range> scale_down(const typed::multi_val &mv) const; inline typed::multi_pw_aff, Range> scale_down(const typed::val &v) const; inline typed::multi_pw_aff, Range> scale_down(long v) const; inline typed::multi_pw_aff, Range> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, Range> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; template inline typed::multi_pw_aff, Arg1> set_range_tuple(const typed::id &id) const; template inline typed::multi_pw_aff, Arg1> set_range_tuple(const std::string &id) const; inline typed::space, Range> space() const; inline typed::space, Range> get_space() const = delete; inline typed::multi_pw_aff, Range> sub(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_union_pw_aff, Range> sub(const typed::multi_union_pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> sub(const typed::aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> sub(const typed::multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> sub(const typed::pw_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> sub(const typed::pw_multi_aff, Range> &multi2) const; inline typed::multi_pw_aff, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, Range> union_add(const typed::multi_pw_aff, Range> &mpa2) const; inline typed::multi_union_pw_aff, Range> union_add(const typed::multi_union_pw_aff, Range> &mupa2) const; inline typed::multi_pw_aff, Range> union_add(const typed::aff, Range> &mpa2) const; inline typed::multi_pw_aff, Range> union_add(const typed::multi_aff, Range> &mpa2) const; inline typed::multi_pw_aff, Range> union_add(const typed::pw_aff, Range> &mpa2) const; inline typed::multi_pw_aff, Range> union_add(const typed::pw_multi_aff, Range> &mpa2) const; }; template struct multi_union_pw_aff : public isl::multi_union_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_union_pw_aff() = default; template {}, bool>::type = true> multi_union_pw_aff(const multi_union_pw_aff &obj) : isl::multi_union_pw_aff(obj) {} private: template {}, bool>::type = true> multi_union_pw_aff(const base &obj) : isl::multi_union_pw_aff(obj) {} public: static multi_union_pw_aff from(const isl::multi_union_pw_aff &obj) { return multi_union_pw_aff(obj); } inline /* implicit */ multi_union_pw_aff(const typed::multi_pw_aff &mpa); inline /* implicit */ multi_union_pw_aff(const typed::union_pw_aff &upa); inline explicit multi_union_pw_aff(const typed::space &space, const typed::union_pw_aff_list &list); inline explicit multi_union_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::union_pw_aff &multi2) const; inline typed::union_pw_aff at(int pos) const; inline typed::union_pw_aff get_at(int pos) const = delete; inline typed::union_set<> bind(const typed::multi_id &tuple) const; inline typed::multi_union_pw_aff coalesce() const; inline typed::union_set<> domain() const; inline typed::multi_union_pw_aff gist(const typed::union_set<> &context) const; inline typed::multi_union_pw_aff gist(const typed::basic_set<> &context) const; inline typed::multi_union_pw_aff gist(const typed::point<> &context) const; inline typed::multi_union_pw_aff gist(const typed::set<> &context) const; inline typed::multi_union_pw_aff gist_params(const typed::set<> &context) const; inline typed::multi_union_pw_aff gist_params(const typed::basic_set<> &context) const; inline typed::multi_union_pw_aff gist_params(const typed::point<> &context) const; inline typed::multi_union_pw_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::multi_union_pw_aff intersect_domain(const typed::basic_set<> &uset) const = delete; inline typed::multi_union_pw_aff intersect_domain(const typed::point<> &uset) const = delete; inline typed::multi_union_pw_aff intersect_domain(const typed::set<> &uset) const = delete; inline typed::multi_union_pw_aff intersect_params(const typed::set<> ¶ms) const; inline typed::multi_union_pw_aff intersect_params(const typed::basic_set<> ¶ms) const; inline typed::multi_union_pw_aff intersect_params(const typed::point<> ¶ms) const; inline typed::union_pw_aff_list list() const; inline typed::union_pw_aff_list get_list() const = delete; inline typed::multi_union_pw_aff neg() const; inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::multi_union_pw_aff pullback(const typed::multi_aff<> &upma) const = delete; inline typed::multi_union_pw_aff pullback(const typed::pw_multi_aff<> &upma) const = delete; inline typed::multi_union_pw_aff pullback(const typed::union_pw_aff<> &upma) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::union_pw_aff<> &multi2) const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_union_pw_aff scale(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale(const typed::val &v) const; inline typed::multi_union_pw_aff scale(long v) const; inline typed::multi_union_pw_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale_down(const typed::val &v) const; inline typed::multi_union_pw_aff scale_down(long v) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_union_pw_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_union_pw_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::union_pw_aff &multi2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_pw_aff &mupa2) const; inline typed::multi_union_pw_aff union_add(const typed::union_pw_aff &mupa2) const; }; template struct multi_union_pw_aff : public isl::multi_union_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_union_pw_aff() = default; template {} && std::is_base_of{}, bool>::type = true> multi_union_pw_aff(const multi_union_pw_aff &obj) : isl::multi_union_pw_aff(obj) {} private: template {}, bool>::type = true> multi_union_pw_aff(const base &obj) : isl::multi_union_pw_aff(obj) {} public: static multi_union_pw_aff from(const isl::multi_union_pw_aff &obj) { return multi_union_pw_aff(obj); } inline /* implicit */ multi_union_pw_aff(const typed::multi_pw_aff &mpa); inline /* implicit */ multi_union_pw_aff(const typed::union_pw_aff &upa); inline explicit multi_union_pw_aff(const typed::space &space, const typed::union_pw_aff_list &list); inline explicit multi_union_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::union_pw_aff &multi2) const; inline typed::union_pw_aff at(int pos) const; inline typed::union_pw_aff get_at(int pos) const = delete; inline typed::union_set bind(const typed::multi_id &tuple) const; inline typed::multi_union_pw_aff coalesce() const; inline typed::union_set domain() const; inline typed::multi_union_pw_aff gist(const typed::union_set &context) const; inline typed::multi_union_pw_aff gist(const typed::basic_set &context) const; inline typed::multi_union_pw_aff gist(const typed::point &context) const; inline typed::multi_union_pw_aff gist(const typed::set &context) const; inline typed::multi_union_pw_aff gist_params(const typed::set<> &context) const; inline typed::multi_union_pw_aff gist_params(const typed::basic_set<> &context) const; inline typed::multi_union_pw_aff gist_params(const typed::point<> &context) const; inline typed::multi_union_pw_aff intersect_domain(const typed::union_set &uset) const; inline typed::multi_union_pw_aff intersect_domain(const typed::basic_set &uset) const; inline typed::multi_union_pw_aff intersect_domain(const typed::point &uset) const; inline typed::multi_union_pw_aff intersect_domain(const typed::set &uset) const; inline typed::multi_union_pw_aff intersect_params(const typed::set<> ¶ms) const; inline typed::multi_union_pw_aff intersect_params(const typed::basic_set<> ¶ms) const; inline typed::multi_union_pw_aff intersect_params(const typed::point<> ¶ms) const; inline typed::union_pw_aff_list list() const; inline typed::union_pw_aff_list get_list() const = delete; inline typed::multi_union_pw_aff neg() const; template inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; inline typed::multi_union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; template inline typed::multi_union_pw_aff pullback(const typed::multi_aff &upma) const; inline typed::multi_union_pw_aff pullback(const typed::multi_aff &upma) const; template inline typed::multi_union_pw_aff pullback(const typed::pw_multi_aff &upma) const; inline typed::multi_union_pw_aff pullback(const typed::pw_multi_aff &upma) const; template inline typed::multi_union_pw_aff pullback(const typed::union_pw_aff &upma) const; inline typed::multi_union_pw_aff pullback(const typed::union_pw_aff &upma) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff> range_product(const typed::union_pw_aff &multi2) const; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_union_pw_aff scale(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale(const typed::val &v) const; inline typed::multi_union_pw_aff scale(long v) const; inline typed::multi_union_pw_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale_down(const typed::val &v) const; inline typed::multi_union_pw_aff scale_down(long v) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_union_pw_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_union_pw_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::union_pw_aff &multi2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_pw_aff &mupa2) const; inline typed::multi_union_pw_aff union_add(const typed::union_pw_aff &mupa2) const; }; template struct multi_val : public isl::multi_val { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; multi_val() = default; template {}, bool>::type = true> multi_val(const multi_val &obj) : isl::multi_val(obj) {} private: template {}, bool>::type = true> multi_val(const base &obj) : isl::multi_val(obj) {} public: static multi_val from(const isl::multi_val &obj) { return multi_val(obj); } inline explicit multi_val(const typed::space &space, const typed::val_list &list); inline explicit multi_val(const isl::ctx &ctx, const std::string &str); inline typed::multi_val add(const typed::multi_val &multi2) const; inline typed::multi_val add(const typed::val &v) const; inline typed::multi_val add(long v) const; inline typed::val at(int pos) const; inline typed::val get_at(int pos) const = delete; inline typed::val_list list() const; inline typed::val_list get_list() const = delete; inline typed::multi_val max(const typed::multi_val &multi2) const; inline typed::multi_val min(const typed::multi_val &multi2) const; inline typed::multi_val neg() const; template inline typed::multi_val> product(const typed::multi_val &multi2) const; inline typed::multi_val range_product(const typed::multi_val<> &multi2) const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::multi_val scale(const typed::multi_val &mv) const; inline typed::multi_val scale(const typed::val &v) const; inline typed::multi_val scale(long v) const; inline typed::multi_val scale_down(const typed::multi_val &mv) const; inline typed::multi_val scale_down(const typed::val &v) const; inline typed::multi_val scale_down(long v) const; inline typed::multi_val set_at(int pos, const typed::val &el) const; inline typed::multi_val set_at(int pos, long el) const; template inline typed::multi_val set_range_tuple(const typed::id &id) const; template inline typed::multi_val set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_val sub(const typed::multi_val &multi2) const; }; template <> struct point<> : public isl::point { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; point() = default; private: template {}, bool>::type = true> point(const base &obj) : isl::point(obj) {} public: static point from(const isl::point &obj) { return point(obj); } inline typed::basic_set<> apply(const typed::basic_map<> &bmap) const = delete; inline typed::set<> apply(const typed::map<> &map) const = delete; inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete; inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete; inline typed::set<> as_set() const = delete; inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete; inline typed::set<> coalesce() const; inline typed::basic_set<> detect_equalities() const; inline typed::set<> drop_unused_params() const; inline bool every_set(const std::function)> &test) const; inline typed::set<> extract_set(const typed::space<> &space) const; inline void foreach_basic_set(const std::function)> &fn) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::basic_set<> gist(const typed::basic_set<> &context) const; inline typed::set<> gist(const typed::set<> &context) const; inline typed::union_set<> gist(const typed::union_set<> &context) const; inline typed::set<> gist_params(const typed::set<> &context) const = delete; inline typed::map<> identity() const = delete; inline typed::pw_aff indicator_function() const; inline typed::map<> insert_domain(const typed::space<> &domain) const = delete; inline typed::basic_set<> intersect(const typed::basic_set<> &bset2) const; inline typed::set<> intersect(const typed::set<> &set2) const; inline typed::union_set<> intersect(const typed::union_set<> &uset2) const; inline typed::basic_set<> intersect_params(const typed::basic_set<> &bset2) const = delete; inline typed::set<> intersect_params(const typed::set<> ¶ms) const = delete; inline typed::fixed_box<> lattice_tile() const = delete; inline typed::set<> lexmax() const = delete; inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete; inline typed::set<> lexmin() const = delete; inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete; inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete; inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete; inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete; inline typed::val<> max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete; inline typed::val<> min_val(const typed::aff<> &obj) const = delete; inline typed::multi_val<> multi_val() const = delete; inline typed::multi_val<> get_multi_val() const = delete; inline typed::pw_aff param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff param_pw_aff_on_domain(const std::string &id) const; inline typed::basic_set<> params() const = delete; inline typed::multi_val<> plain_multi_val_if_fixed() const = delete; inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete; inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete; inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::set<> product(const typed::set<> &set2) const = delete; inline typed::set<> project_out_all_params() const; inline typed::set<> project_out_param(const typed::id &id) const; inline typed::set<> project_out_param(const std::string &id) const; inline typed::set<> project_out_param(const typed::id_list &list) const; inline typed::pw_aff pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list<> set_list() const; inline typed::fixed_box<> simple_fixed_box_hull() const = delete; inline typed::space<> space() const; inline typed::set<> subtract(const typed::set<> &set2) const; inline typed::union_set<> subtract(const typed::union_set<> &uset2) const; inline typed::set<> to_set() const; inline typed::union_set<> to_union_set() const; inline typed::map<> translation() const = delete; template inline typed::set unbind_params(const typed::multi_id &tuple) const; inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::set<> unite(const typed::basic_set<> &bset2) const; inline typed::set<> unite(const typed::set<> &set2) const; inline typed::union_set<> unite(const typed::union_set<> &uset2) const; inline typed::map<> unwrap() const = delete; inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete; inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete; inline typed::set<> wrapped_reverse() const = delete; }; template struct point : public isl::point { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; point() = default; template {}, bool>::type = true> point(const point &obj) : isl::point(obj) {} private: template {}, bool>::type = true> point(const base &obj) : isl::point(obj) {} public: static point from(const isl::point &obj) { return point(obj); } template inline typed::basic_set apply(const typed::basic_map &bmap) const; template inline typed::set apply(const typed::map &map) const; template inline typed::union_set apply(const typed::union_map &umap) const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::set<> bind(const typed::multi_id &tuple) const; inline typed::set coalesce() const; inline typed::basic_set detect_equalities() const; inline typed::set drop_unused_params() const; inline bool every_set(const std::function)> &test) const; inline typed::set extract_set(const typed::space &space) const; inline void foreach_basic_set(const std::function)> &fn) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::basic_set gist(const typed::basic_set &context) const; inline typed::set gist(const typed::set &context) const; inline typed::union_set gist(const typed::union_set &context) const; inline typed::set gist_params(const typed::set<> &context) const; inline typed::map identity() const; inline typed::pw_aff indicator_function() const; template inline typed::map insert_domain(const typed::space &domain) const; inline typed::basic_set intersect(const typed::basic_set &bset2) const; inline typed::set intersect(const typed::set &set2) const; inline typed::union_set intersect(const typed::union_set &uset2) const; inline typed::basic_set intersect_params(const typed::basic_set<> &bset2) const; inline typed::set intersect_params(const typed::set<> ¶ms) const; inline typed::fixed_box lattice_tile() const; inline typed::set lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::set lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::set lower_bound(const typed::multi_pw_aff &lower) const; inline typed::set lower_bound(const typed::multi_val &lower) const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::val max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::val min_val(const typed::aff<> &obj) const = delete; inline typed::multi_val multi_val() const; inline typed::multi_val get_multi_val() const = delete; inline typed::pw_aff param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff param_pw_aff_on_domain(const std::string &id) const; inline typed::basic_set<> params() const; inline typed::multi_val plain_multi_val_if_fixed() const; template inline typed::set preimage(const typed::multi_aff &ma) const; template inline typed::set preimage(const typed::multi_pw_aff &mpa) const; template inline typed::set preimage(const typed::pw_multi_aff &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff &upma) const; template inline typed::set> product(const typed::set &set2) const; inline typed::set project_out_all_params() const; inline typed::set project_out_param(const typed::id &id) const; inline typed::set project_out_param(const std::string &id) const; inline typed::set project_out_param(const typed::id_list &list) const; inline typed::pw_aff pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list set_list() const; inline typed::fixed_box simple_fixed_box_hull() const; inline typed::space space() const; inline typed::set subtract(const typed::set &set2) const; inline typed::union_set subtract(const typed::union_set &uset2) const; inline typed::set to_set() const; inline typed::union_set to_union_set() const; inline typed::map translation() const; inline typed::set unbind_params(const typed::multi_id<> &tuple) const = delete; template inline typed::map unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::set unite(const typed::basic_set &bset2) const; inline typed::set unite(const typed::set &set2) const; inline typed::union_set unite(const typed::union_set &uset2) const; inline typed::map unwrap() const = delete; inline typed::set upper_bound(const typed::multi_pw_aff &upper) const; inline typed::set upper_bound(const typed::multi_val &upper) const; inline typed::set wrapped_reverse() const = delete; }; template struct point> : public isl::point { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; point() = default; template {} && std::is_base_of{}, bool>::type = true> point(const point> &obj) : isl::point(obj) {} private: template {}, bool>::type = true> point(const base &obj) : isl::point(obj) {} public: static point from(const isl::point &obj) { return point(obj); } template inline typed::basic_set apply(const typed::basic_map, Arg2> &bmap) const; template inline typed::set apply(const typed::map, Arg2> &map) const; template inline typed::union_set apply(const typed::union_map, Arg2> &umap) const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::set> as_set() const; inline typed::set<> bind(const typed::multi_id> &tuple) const; inline typed::set> coalesce() const; inline typed::basic_set> detect_equalities() const; inline typed::set> drop_unused_params() const; inline bool every_set(const std::function>)> &test) const; inline typed::set> extract_set(const typed::space> &space) const; inline void foreach_basic_set(const std::function>)> &fn) const; inline void foreach_point(const std::function>)> &fn) const; inline void foreach_set(const std::function>)> &fn) const; inline typed::basic_set> gist(const typed::basic_set> &context) const; inline typed::set> gist(const typed::set> &context) const; inline typed::union_set> gist(const typed::union_set> &context) const; inline typed::set> gist_params(const typed::set<> &context) const; inline typed::map, pair> identity() const; inline typed::pw_aff, Anonymous> indicator_function() const; template inline typed::map> insert_domain(const typed::space &domain) const; inline typed::basic_set> intersect(const typed::basic_set> &bset2) const; inline typed::set> intersect(const typed::set> &set2) const; inline typed::union_set> intersect(const typed::union_set> &uset2) const; inline typed::basic_set> intersect_params(const typed::basic_set<> &bset2) const; inline typed::set> intersect_params(const typed::set<> ¶ms) const; inline typed::fixed_box> lattice_tile() const; inline typed::set> lexmax() const; inline typed::pw_multi_aff> lexmax_pw_multi_aff() const; inline typed::set> lexmin() const; inline typed::pw_multi_aff> lexmin_pw_multi_aff() const; inline typed::set> lower_bound(const typed::multi_pw_aff> &lower) const; inline typed::set> lower_bound(const typed::multi_val> &lower) const; inline typed::multi_pw_aff> max_multi_pw_aff() const; inline typed::val> max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff> min_multi_pw_aff() const; inline typed::val> min_val(const typed::aff<> &obj) const = delete; inline typed::multi_val> multi_val() const; inline typed::multi_val> get_multi_val() const = delete; inline typed::pw_aff, Anonymous> param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff, Anonymous> param_pw_aff_on_domain(const std::string &id) const; inline typed::basic_set<> params() const; inline typed::multi_val> plain_multi_val_if_fixed() const; template inline typed::set preimage(const typed::multi_aff> &ma) const; template inline typed::set preimage(const typed::multi_pw_aff> &mpa) const; template inline typed::set preimage(const typed::pw_multi_aff> &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff> &upma) const; template inline typed::set, Arg2>> product(const typed::set &set2) const; inline typed::set> project_out_all_params() const; inline typed::set> project_out_param(const typed::id &id) const; inline typed::set> project_out_param(const std::string &id) const; inline typed::set> project_out_param(const typed::id_list &list) const; inline typed::pw_aff, Anonymous> pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff, Anonymous> pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff, Arg2> pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list> set_list() const; inline typed::fixed_box> simple_fixed_box_hull() const; inline typed::space> space() const; inline typed::set> subtract(const typed::set> &set2) const; inline typed::union_set> subtract(const typed::union_set> &uset2) const; inline typed::set> to_set() const; inline typed::union_set> to_union_set() const; inline typed::map, pair> translation() const; inline typed::set> unbind_params(const typed::multi_id<> &tuple) const = delete; template inline typed::map> unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::set> unite(const typed::basic_set> &bset2) const; inline typed::set> unite(const typed::set> &set2) const; inline typed::union_set> unite(const typed::union_set> &uset2) const; inline typed::map unwrap() const; inline typed::set> upper_bound(const typed::multi_pw_aff> &upper) const; inline typed::set> upper_bound(const typed::multi_val> &upper) const; inline typed::set> wrapped_reverse() const; }; template <> struct pw_aff : public isl::pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_aff() = default; pw_aff(const isl::pw_aff &obj) : isl::pw_aff(obj) {} static pw_aff from(const isl::pw_aff &obj) { return pw_aff(obj); } inline /* implicit */ pw_aff(const typed::aff &aff); inline explicit pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff add(const typed::aff &pwaff2) const; inline typed::pw_aff add_constant(const typed::val &v) const; inline typed::pw_aff add_constant(long v) const; inline typed::pw_multi_aff add_constant(const typed::multi_val &mv) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::aff as_aff() const; inline typed::map as_map() const = delete; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::union_map as_union_map() const = delete; inline typed::pw_aff at(int pos) const; inline typed::set<> bind(const typed::multi_id &tuple) const; inline typed::set<> bind(const typed::id &id) const; inline typed::set<> bind(const std::string &id) const; inline typed::pw_aff bind_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_aff ceil() const; inline typed::pw_aff coalesce() const; inline typed::pw_aff cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const; inline typed::set<> domain() const; inline typed::pw_aff domain_reverse() const = delete; inline typed::pw_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::pw_aff floor() const; inline typed::set ge_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::set ge_set(const typed::aff<> &pwaff2) const = delete; inline typed::pw_aff gist(const typed::set<> &context) const; inline typed::union_pw_aff gist(const typed::union_set<> &context) const; inline typed::pw_aff gist(const typed::basic_set<> &context) const; inline typed::pw_aff gist(const typed::point<> &context) const; inline typed::pw_aff gist_params(const typed::set<> &context) const; inline typed::pw_aff gist_params(const typed::basic_set<> &context) const; inline typed::pw_aff gist_params(const typed::point<> &context) const; inline typed::set gt_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::set gt_set(const typed::aff<> &pwaff2) const = delete; inline typed::multi_pw_aff identity() const; template inline typed::pw_aff insert_domain(const typed::space &domain) const; inline typed::pw_aff intersect_domain(const typed::set<> &set) const = delete; inline typed::union_pw_aff intersect_domain(const typed::space<> &space) const = delete; inline typed::union_pw_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_aff intersect_domain(const typed::basic_set<> &set) const = delete; inline typed::pw_aff intersect_domain(const typed::point<> &set) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_aff intersect_params(const typed::set<> &set) const; inline typed::pw_aff intersect_params(const typed::basic_set<> &set) const; inline typed::pw_aff intersect_params(const typed::point<> &set) const; inline typed::set le_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::set le_set(const typed::aff<> &pwaff2) const = delete; inline typed::pw_aff_list list() const; inline typed::set lt_set(const typed::pw_aff<> &pwaff2) const = delete; inline typed::set lt_set(const typed::aff<> &pwaff2) const = delete; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff max(const typed::pw_aff &pwaff2) const; inline typed::pw_aff max(const typed::aff &pwaff2) const; inline typed::multi_val max_multi_val() const; inline typed::val max_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff min(const typed::pw_aff &pwaff2) const; inline typed::pw_aff min(const typed::aff &pwaff2) const; inline typed::multi_val min_multi_val() const; inline typed::val min_val() const; inline typed::pw_aff mod(const typed::val &mod) const; inline typed::pw_aff mod(long mod) const; inline typed::pw_aff neg() const; inline typed::set<> params() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_pw_aff> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff> product(const typed::pw_multi_aff &pma2) const; inline typed::pw_aff pullback(const typed::multi_aff<> &ma) const = delete; inline typed::pw_aff pullback(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::pw_aff pullback(const typed::pw_multi_aff<> &pma) const = delete; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; inline typed::multi_pw_aff range_product(const typed::multi_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::pw_multi_aff range_product(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::pw_aff scale(const typed::val &v) const; inline typed::pw_aff scale(long v) const; inline typed::pw_multi_aff scale(const typed::multi_val &mv) const; inline typed::pw_aff scale_down(const typed::val &f) const; inline typed::pw_aff scale_down(long f) const; inline typed::pw_multi_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::pw_multi_aff set_range_tuple(const typed::id &id) const; template inline typed::pw_multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff sub(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff sub(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff sub(const typed::aff &pwaff2) const; inline typed::pw_aff subtract_domain(const typed::set<> &set) const = delete; inline typed::union_pw_aff subtract_domain(const typed::space<> &space) const = delete; inline typed::union_pw_aff subtract_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_aff subtract_domain(const typed::basic_set<> &set) const = delete; inline typed::pw_aff subtract_domain(const typed::point<> &set) const = delete; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::union_pw_aff to_union_pw_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; template inline typed::multi_pw_aff unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_aff union_add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff union_add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff union_add(const typed::aff &pwaff2) const; }; template struct pw_aff : public isl::pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_aff() = default; template {}, bool>::type = true> pw_aff(const pw_aff &obj) : isl::pw_aff(obj) {} private: template {}, bool>::type = true> pw_aff(const base &obj) : isl::pw_aff(obj) {} public: static pw_aff from(const isl::pw_aff &obj) { return pw_aff(obj); } inline /* implicit */ pw_aff(const typed::aff &aff); inline explicit pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff add(const typed::aff &pwaff2) const; inline typed::pw_aff add_constant(const typed::val &v) const; inline typed::pw_aff add_constant(long v) const; inline typed::pw_multi_aff add_constant(const typed::multi_val &mv) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::aff as_aff() const; inline typed::map as_map() const; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const = delete; inline typed::union_map as_union_map() const; inline typed::pw_aff at(int pos) const; inline typed::set bind(const typed::multi_id &tuple) const; inline typed::set bind(const typed::id &id) const; inline typed::set bind(const std::string &id) const; inline typed::pw_aff bind_domain(const typed::multi_id &tuple) const; inline typed::pw_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_aff ceil() const; inline typed::pw_aff coalesce() const; inline typed::pw_aff cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const; inline typed::set domain() const; inline typed::pw_aff domain_reverse() const = delete; inline typed::pw_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::pw_aff floor() const; inline typed::set ge_set(const typed::pw_aff &pwaff2) const; inline typed::set ge_set(const typed::aff &pwaff2) const; inline typed::pw_aff gist(const typed::set &context) const; inline typed::union_pw_aff gist(const typed::union_set &context) const; inline typed::pw_aff gist(const typed::basic_set &context) const; inline typed::pw_aff gist(const typed::point &context) const; inline typed::pw_aff gist_params(const typed::set<> &context) const; inline typed::pw_aff gist_params(const typed::basic_set<> &context) const; inline typed::pw_aff gist_params(const typed::point<> &context) const; inline typed::set gt_set(const typed::pw_aff &pwaff2) const; inline typed::set gt_set(const typed::aff &pwaff2) const; inline typed::multi_pw_aff identity() const; inline typed::pw_aff insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_aff intersect_domain(const typed::set &set) const; inline typed::union_pw_aff intersect_domain(const typed::space &space) const; inline typed::union_pw_aff intersect_domain(const typed::union_set &uset) const; inline typed::pw_aff intersect_domain(const typed::basic_set &set) const; inline typed::pw_aff intersect_domain(const typed::point &set) const; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_aff intersect_params(const typed::set<> &set) const; inline typed::pw_aff intersect_params(const typed::basic_set<> &set) const; inline typed::pw_aff intersect_params(const typed::point<> &set) const; inline typed::set le_set(const typed::pw_aff &pwaff2) const; inline typed::set le_set(const typed::aff &pwaff2) const; inline typed::pw_aff_list list() const; inline typed::set lt_set(const typed::pw_aff &pwaff2) const; inline typed::set lt_set(const typed::aff &pwaff2) const; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff max(const typed::pw_aff &pwaff2) const; inline typed::pw_aff max(const typed::aff &pwaff2) const; inline typed::multi_val max_multi_val() const; inline typed::val max_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::pw_aff min(const typed::pw_aff &pwaff2) const; inline typed::pw_aff min(const typed::aff &pwaff2) const; inline typed::multi_val min_multi_val() const; inline typed::val min_val() const; inline typed::pw_aff mod(const typed::val &mod) const; inline typed::pw_aff mod(long mod) const; inline typed::pw_aff neg() const; inline typed::set<> params() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::multi_pw_aff, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_aff pullback(const typed::multi_aff &ma) const; inline typed::pw_aff pullback(const typed::multi_aff &ma) const; template inline typed::pw_aff pullback(const typed::multi_pw_aff &mpa) const; inline typed::pw_aff pullback(const typed::multi_pw_aff &mpa) const; template inline typed::pw_aff pullback(const typed::pw_multi_aff &pma) const; inline typed::pw_aff pullback(const typed::pw_multi_aff &pma) const; template inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; template inline typed::multi_pw_aff> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::pw_multi_aff> range_product(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff> range_product(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff scale(const typed::val &v) const; inline typed::pw_aff scale(long v) const; inline typed::pw_multi_aff scale(const typed::multi_val &mv) const; inline typed::pw_aff scale_down(const typed::val &f) const; inline typed::pw_aff scale_down(long f) const; inline typed::pw_multi_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::pw_multi_aff set_range_tuple(const typed::id &id) const; template inline typed::pw_multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_aff sub(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff sub(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff sub(const typed::aff &pwaff2) const; inline typed::pw_aff subtract_domain(const typed::set &set) const; inline typed::union_pw_aff subtract_domain(const typed::space &space) const; inline typed::union_pw_aff subtract_domain(const typed::union_set &uset) const; inline typed::pw_aff subtract_domain(const typed::basic_set &set) const; inline typed::pw_aff subtract_domain(const typed::point &set) const; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::union_pw_aff to_union_pw_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; inline typed::multi_pw_aff unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_aff union_add(const typed::pw_aff &pwaff2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_aff union_add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_aff union_add(const typed::aff &pwaff2) const; }; template struct pw_aff, Anonymous> : public isl::pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_aff() = default; template {} && std::is_base_of{}, bool>::type = true> pw_aff(const pw_aff, Anonymous> &obj) : isl::pw_aff(obj) {} private: template {}, bool>::type = true> pw_aff(const base &obj) : isl::pw_aff(obj) {} public: static pw_aff from(const isl::pw_aff &obj) { return pw_aff(obj); } inline /* implicit */ pw_aff(const typed::aff, Anonymous> &aff); inline explicit pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff, Anonymous> add(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::multi_union_pw_aff, Anonymous> add(const typed::multi_union_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> add(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_multi_aff, Anonymous> add(const typed::pw_multi_aff, Anonymous> &pma2) const; inline typed::union_pw_aff, Anonymous> add(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> add(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::pw_aff, Anonymous> add(const typed::aff, Anonymous> &pwaff2) const; inline typed::pw_aff, Anonymous> add_constant(const typed::val &v) const; inline typed::pw_aff, Anonymous> add_constant(long v) const; inline typed::pw_multi_aff, Anonymous> add_constant(const typed::multi_val &mv) const; template inline typed::union_pw_multi_aff, Arg1> apply(const typed::union_pw_multi_aff &upma2) const; inline typed::aff, Anonymous> as_aff() const; inline typed::map, Anonymous> as_map() const; inline typed::multi_aff, Anonymous> as_multi_aff() const; inline typed::multi_union_pw_aff, Anonymous> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Anonymous> as_pw_multi_aff() const; inline typed::set, Anonymous> as_set() const = delete; inline typed::union_map, Anonymous> as_union_map() const; inline typed::pw_aff, Anonymous> at(int pos) const; inline typed::set> bind(const typed::multi_id &tuple) const; inline typed::set> bind(const typed::id &id) const; inline typed::set> bind(const std::string &id) const; inline typed::pw_aff bind_domain(const typed::multi_id> &tuple) const; inline typed::pw_aff bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::pw_aff, Anonymous> ceil() const; inline typed::pw_aff, Anonymous> coalesce() const; inline typed::pw_aff, Anonymous> cond(const typed::pw_aff, Anonymous> &pwaff_true, const typed::pw_aff, Anonymous> &pwaff_false) const; inline typed::set> domain() const; inline typed::pw_aff, Anonymous> domain_reverse() const; inline typed::pw_aff, Anonymous> drop_unused_params() const; inline typed::pw_multi_aff, Anonymous> extract_pw_multi_aff(const typed::space, Anonymous> &space) const; inline typed::pw_aff, Anonymous> floor() const; inline typed::set> ge_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::set> ge_set(const typed::aff, Anonymous> &pwaff2) const; inline typed::pw_aff, Anonymous> gist(const typed::set> &context) const; inline typed::union_pw_aff, Anonymous> gist(const typed::union_set> &context) const; inline typed::pw_aff, Anonymous> gist(const typed::basic_set> &context) const; inline typed::pw_aff, Anonymous> gist(const typed::point> &context) const; inline typed::pw_aff, Anonymous> gist_params(const typed::set<> &context) const; inline typed::pw_aff, Anonymous> gist_params(const typed::basic_set<> &context) const; inline typed::pw_aff, Anonymous> gist_params(const typed::point<> &context) const; inline typed::set> gt_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::set> gt_set(const typed::aff, Anonymous> &pwaff2) const; inline typed::multi_pw_aff, Anonymous> identity() const; inline typed::pw_aff, Anonymous> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_aff, Anonymous> intersect_domain(const typed::set> &set) const; inline typed::union_pw_aff, Anonymous> intersect_domain(const typed::space> &space) const; inline typed::union_pw_aff, Anonymous> intersect_domain(const typed::union_set> &uset) const; inline typed::pw_aff, Anonymous> intersect_domain(const typed::basic_set> &set) const; inline typed::pw_aff, Anonymous> intersect_domain(const typed::point> &set) const; inline typed::union_pw_aff, Anonymous> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::pw_aff, Anonymous> intersect_params(const typed::set<> &set) const; inline typed::pw_aff, Anonymous> intersect_params(const typed::basic_set<> &set) const; inline typed::pw_aff, Anonymous> intersect_params(const typed::point<> &set) const; inline typed::set> le_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::set> le_set(const typed::aff, Anonymous> &pwaff2) const; inline typed::pw_aff_list, Anonymous> list() const; inline typed::set> lt_set(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::set> lt_set(const typed::aff, Anonymous> &pwaff2) const; inline typed::multi_pw_aff, Anonymous> max(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> max(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_aff, Anonymous> max(const typed::aff, Anonymous> &pwaff2) const; inline typed::multi_val max_multi_val() const; inline typed::val max_val() const; inline typed::multi_pw_aff, Anonymous> min(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> min(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_aff, Anonymous> min(const typed::aff, Anonymous> &pwaff2) const; inline typed::multi_val min_multi_val() const; inline typed::val min_val() const; inline typed::pw_aff, Anonymous> mod(const typed::val &mod) const; inline typed::pw_aff, Anonymous> mod(long mod) const; inline typed::pw_aff, Anonymous> neg() const; inline typed::set<> params() const; template inline typed::pw_multi_aff, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::multi_pw_aff, Arg1>, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, Arg1>, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_aff pullback(const typed::multi_aff> &ma) const; inline typed::pw_aff pullback(const typed::multi_aff> &ma) const; template inline typed::pw_aff pullback(const typed::multi_pw_aff> &mpa) const; inline typed::pw_aff pullback(const typed::multi_pw_aff> &mpa) const; template inline typed::pw_aff pullback(const typed::pw_multi_aff> &pma) const; inline typed::pw_aff pullback(const typed::pw_multi_aff> &pma) const; template inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; inline typed::pw_multi_aff_list, Anonymous> pw_multi_aff_list() const; inline typed::pw_multi_aff, Anonymous> range_factor_domain() const = delete; inline typed::pw_multi_aff, Anonymous> range_factor_range() const = delete; template inline typed::multi_pw_aff, pair> range_product(const typed::multi_pw_aff, Arg1> &multi2) const; template inline typed::multi_union_pw_aff, pair> range_product(const typed::multi_union_pw_aff, Arg1> &multi2) const; template inline typed::pw_multi_aff, pair> range_product(const typed::pw_multi_aff, Arg1> &pma2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_multi_aff, Arg1> &upma2) const; inline typed::pw_aff, Anonymous> scale(const typed::val &v) const; inline typed::pw_aff, Anonymous> scale(long v) const; inline typed::pw_multi_aff, Anonymous> scale(const typed::multi_val &mv) const; inline typed::pw_aff, Anonymous> scale_down(const typed::val &f) const; inline typed::pw_aff, Anonymous> scale_down(long f) const; inline typed::pw_multi_aff, Anonymous> scale_down(const typed::multi_val &mv) const; inline typed::multi_pw_aff, Anonymous> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, Anonymous> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; template inline typed::pw_multi_aff, Arg1> set_range_tuple(const typed::id &id) const; template inline typed::pw_multi_aff, Arg1> set_range_tuple(const std::string &id) const; inline typed::space, Anonymous> space() const; inline typed::space, Anonymous> get_space() const = delete; inline typed::multi_pw_aff, Anonymous> sub(const typed::multi_pw_aff, Anonymous> &multi2) const; inline typed::multi_union_pw_aff, Anonymous> sub(const typed::multi_union_pw_aff, Anonymous> &multi2) const; inline typed::pw_aff, Anonymous> sub(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_multi_aff, Anonymous> sub(const typed::pw_multi_aff, Anonymous> &pma2) const; inline typed::union_pw_aff, Anonymous> sub(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> sub(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::pw_aff, Anonymous> sub(const typed::aff, Anonymous> &pwaff2) const; inline typed::pw_aff, Anonymous> subtract_domain(const typed::set> &set) const; inline typed::union_pw_aff, Anonymous> subtract_domain(const typed::space> &space) const; inline typed::union_pw_aff, Anonymous> subtract_domain(const typed::union_set> &uset) const; inline typed::pw_aff, Anonymous> subtract_domain(const typed::basic_set> &set) const; inline typed::pw_aff, Anonymous> subtract_domain(const typed::point> &set) const; inline typed::multi_pw_aff, Anonymous> to_multi_pw_aff() const; inline typed::union_pw_aff, Anonymous> to_union_pw_aff() const; inline typed::union_pw_multi_aff, Anonymous> to_union_pw_multi_aff() const; inline typed::multi_pw_aff, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, Anonymous> union_add(const typed::multi_pw_aff, Anonymous> &mpa2) const; inline typed::multi_union_pw_aff, Anonymous> union_add(const typed::multi_union_pw_aff, Anonymous> &mupa2) const; inline typed::pw_aff, Anonymous> union_add(const typed::pw_aff, Anonymous> &pwaff2) const; inline typed::pw_multi_aff, Anonymous> union_add(const typed::pw_multi_aff, Anonymous> &pma2) const; inline typed::union_pw_aff, Anonymous> union_add(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> union_add(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::pw_aff, Anonymous> union_add(const typed::aff, Anonymous> &pwaff2) const; }; template <> struct pw_aff_list : public isl::pw_aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_aff_list() = default; pw_aff_list(const isl::pw_aff_list &obj) : isl::pw_aff_list(obj) {} static pw_aff_list from(const isl::pw_aff_list &obj) { return pw_aff_list(obj); } inline explicit pw_aff_list(const isl::ctx &ctx, int n); inline explicit pw_aff_list(const typed::pw_aff &el); inline explicit pw_aff_list(const isl::ctx &ctx, const std::string &str); inline typed::pw_aff_list add(const typed::pw_aff &el) const; inline typed::pw_aff_list add(const typed::aff &el) const; inline typed::pw_aff at(int index) const; inline typed::pw_aff get_at(int index) const = delete; inline typed::pw_aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::pw_aff)> &follows, const std::function)> &fn) const; inline typed::pw_aff_list set_at(int index, const typed::pw_aff &el) const; }; template struct pw_aff_list : public isl::pw_aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_aff_list() = default; template {}, bool>::type = true> pw_aff_list(const pw_aff_list &obj) : isl::pw_aff_list(obj) {} private: template {}, bool>::type = true> pw_aff_list(const base &obj) : isl::pw_aff_list(obj) {} public: static pw_aff_list from(const isl::pw_aff_list &obj) { return pw_aff_list(obj); } inline explicit pw_aff_list(const isl::ctx &ctx, int n); inline explicit pw_aff_list(const typed::pw_aff &el); inline explicit pw_aff_list(const isl::ctx &ctx, const std::string &str); inline typed::pw_aff_list add(const typed::pw_aff &el) const; inline typed::pw_aff_list add(const typed::aff &el) const; inline typed::pw_aff at(int index) const; inline typed::pw_aff get_at(int index) const = delete; inline typed::pw_aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::pw_aff)> &follows, const std::function)> &fn) const; inline typed::pw_aff_list set_at(int index, const typed::pw_aff &el) const; }; template struct pw_multi_aff : public isl::pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff() = default; template {}, bool>::type = true> pw_multi_aff(const pw_multi_aff &obj) : isl::pw_multi_aff(obj) {} private: template {}, bool>::type = true> pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {} public: static pw_multi_aff from(const isl::pw_multi_aff &obj) { return pw_multi_aff(obj); } inline /* implicit */ pw_multi_aff(const typed::multi_aff &ma); inline /* implicit */ pw_multi_aff(const typed::pw_aff &pa); inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff add(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff add(const typed::pw_aff &pma2) const; inline typed::pw_multi_aff add_constant(const typed::multi_val &mv) const; inline typed::pw_multi_aff add_constant(const typed::val &v) const; inline typed::pw_multi_aff add_constant(long v) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::map as_map() const = delete; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::union_map as_union_map() const = delete; inline typed::pw_aff at(int pos) const; inline typed::pw_aff get_at(int pos) const = delete; inline typed::set<> bind(const typed::multi_id &tuple) const; inline typed::pw_multi_aff bind_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff coalesce() const; inline typed::set<> domain() const; inline typed::pw_multi_aff domain_reverse() const = delete; inline typed::pw_multi_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::pw_multi_aff gist(const typed::set<> &set) const; inline typed::union_pw_multi_aff gist(const typed::union_set<> &context) const; inline typed::pw_multi_aff gist(const typed::basic_set<> &set) const; inline typed::pw_multi_aff gist(const typed::point<> &set) const; inline typed::pw_multi_aff gist_params(const typed::set<> &set) const; inline typed::pw_multi_aff gist_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff identity() const; template inline typed::pw_multi_aff insert_domain(const typed::space &domain) const; inline typed::pw_multi_aff intersect_domain(const typed::set<> &set) const = delete; inline typed::union_pw_multi_aff intersect_domain(const typed::space<> &space) const = delete; inline typed::union_pw_multi_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff intersect_domain(const typed::basic_set<> &set) const = delete; inline typed::pw_multi_aff intersect_domain(const typed::point<> &set) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff intersect_params(const typed::set<> &set) const; inline typed::pw_multi_aff intersect_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list list() const; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_pw_aff neg() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete; template inline typed::multi_pw_aff> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_multi_aff> product(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff> product(const typed::pw_aff &pma2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff<> &mpa2) const = delete; inline typed::pw_multi_aff pullback(const typed::multi_aff<> &ma) const = delete; inline typed::pw_multi_aff pullback(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; inline typed::multi_pw_aff range_product(const typed::multi_pw_aff<> &multi2) const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::pw_multi_aff range_product(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::pw_multi_aff range_product(const typed::multi_aff<> &pma2) const = delete; inline typed::pw_multi_aff range_product(const typed::pw_aff<> &pma2) const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::pw_multi_aff scale(const typed::multi_val &mv) const; inline typed::pw_multi_aff scale(const typed::val &v) const; inline typed::pw_multi_aff scale(long v) const; inline typed::pw_multi_aff scale_down(const typed::multi_val &mv) const; inline typed::pw_multi_aff scale_down(const typed::val &v) const; inline typed::pw_multi_aff scale_down(long v) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::pw_multi_aff set_range_tuple(const typed::id &id) const; template inline typed::pw_multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff sub(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff sub(const typed::pw_aff &pma2) const; inline typed::pw_multi_aff subtract_domain(const typed::set<> &set) const = delete; inline typed::union_pw_multi_aff subtract_domain(const typed::space<> &space) const = delete; inline typed::union_pw_multi_aff subtract_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff subtract_domain(const typed::basic_set<> &set) const = delete; inline typed::pw_multi_aff subtract_domain(const typed::point<> &set) const = delete; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; template inline typed::multi_pw_aff unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff union_add(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff union_add(const typed::pw_aff &pma2) const; }; template struct pw_multi_aff : public isl::pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff() = default; template {} && std::is_base_of{}, bool>::type = true> pw_multi_aff(const pw_multi_aff &obj) : isl::pw_multi_aff(obj) {} private: template {}, bool>::type = true> pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {} public: static pw_multi_aff from(const isl::pw_multi_aff &obj) { return pw_multi_aff(obj); } inline /* implicit */ pw_multi_aff(const typed::multi_aff &ma); inline /* implicit */ pw_multi_aff(const typed::pw_aff &pa); inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff add(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff add(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff add(const typed::pw_aff &pma2) const; inline typed::pw_multi_aff add_constant(const typed::multi_val &mv) const; inline typed::pw_multi_aff add_constant(const typed::val &v) const; inline typed::pw_multi_aff add_constant(long v) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::map as_map() const; inline typed::multi_aff as_multi_aff() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const = delete; inline typed::union_map as_union_map() const; inline typed::pw_aff at(int pos) const; inline typed::pw_aff get_at(int pos) const = delete; inline typed::set bind(const typed::multi_id &tuple) const; inline typed::pw_multi_aff bind_domain(const typed::multi_id &tuple) const; inline typed::pw_multi_aff bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff coalesce() const; inline typed::set domain() const; inline typed::pw_multi_aff domain_reverse() const = delete; inline typed::pw_multi_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::pw_multi_aff gist(const typed::set &set) const; inline typed::union_pw_multi_aff gist(const typed::union_set &context) const; inline typed::pw_multi_aff gist(const typed::basic_set &set) const; inline typed::pw_multi_aff gist(const typed::point &set) const; inline typed::pw_multi_aff gist_params(const typed::set<> &set) const; inline typed::pw_multi_aff gist_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff identity() const; inline typed::pw_multi_aff insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff intersect_domain(const typed::set &set) const; inline typed::union_pw_multi_aff intersect_domain(const typed::space &space) const; inline typed::union_pw_multi_aff intersect_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff intersect_domain(const typed::basic_set &set) const; inline typed::pw_multi_aff intersect_domain(const typed::point &set) const; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff intersect_params(const typed::set<> &set) const; inline typed::pw_multi_aff intersect_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list list() const; inline typed::multi_pw_aff max(const typed::multi_pw_aff &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff min(const typed::multi_pw_aff &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_pw_aff neg() const; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete; inline typed::pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete; template inline typed::multi_pw_aff, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_multi_aff, pair> product(const typed::multi_aff &pma2) const; template inline typed::pw_multi_aff, pair> product(const typed::pw_aff &pma2) const; template inline typed::multi_pw_aff pullback(const typed::multi_pw_aff &mpa2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff &mpa2) const; template inline typed::pw_multi_aff pullback(const typed::multi_aff &ma) const; inline typed::pw_multi_aff pullback(const typed::multi_aff &ma) const; template inline typed::pw_multi_aff pullback(const typed::pw_multi_aff &pma2) const; inline typed::pw_multi_aff pullback(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const = delete; inline typed::pw_multi_aff range_factor_range() const = delete; template inline typed::multi_pw_aff> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::pw_multi_aff> range_product(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff> range_product(const typed::union_pw_multi_aff &upma2) const; template inline typed::pw_multi_aff> range_product(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff> range_product(const typed::pw_aff &pma2) const; inline typed::id get_range_tuple_id() const = delete; inline typed::pw_multi_aff scale(const typed::multi_val &mv) const; inline typed::pw_multi_aff scale(const typed::val &v) const; inline typed::pw_multi_aff scale(long v) const; inline typed::pw_multi_aff scale_down(const typed::multi_val &mv) const; inline typed::pw_multi_aff scale_down(const typed::val &v) const; inline typed::pw_multi_aff scale_down(long v) const; inline typed::multi_pw_aff set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::pw_multi_aff set_range_tuple(const typed::id &id) const; template inline typed::pw_multi_aff set_range_tuple(const std::string &id) const; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::multi_pw_aff sub(const typed::multi_pw_aff &multi2) const; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::pw_multi_aff sub(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff sub(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff sub(const typed::pw_aff &pma2) const; inline typed::pw_multi_aff subtract_domain(const typed::set &set) const; inline typed::union_pw_multi_aff subtract_domain(const typed::space &space) const; inline typed::union_pw_multi_aff subtract_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff subtract_domain(const typed::basic_set &set) const; inline typed::pw_multi_aff subtract_domain(const typed::point &set) const; inline typed::multi_pw_aff to_multi_pw_aff() const; inline typed::union_pw_multi_aff to_union_pw_multi_aff() const; inline typed::multi_pw_aff unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff union_add(const typed::multi_pw_aff &mpa2) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::pw_multi_aff union_add(const typed::pw_multi_aff &pma2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff union_add(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff union_add(const typed::pw_aff &pma2) const; }; template struct pw_multi_aff, Range> : public isl::pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> pw_multi_aff(const pw_multi_aff, Arg3> &obj) : isl::pw_multi_aff(obj) {} private: template {}, bool>::type = true> pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {} public: static pw_multi_aff from(const isl::pw_multi_aff &obj) { return pw_multi_aff(obj); } inline /* implicit */ pw_multi_aff(const typed::multi_aff, Range> &ma); inline /* implicit */ pw_multi_aff(const typed::pw_aff, Range> &pa); inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff, Range> add(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_union_pw_aff, Range> add(const typed::multi_union_pw_aff, Range> &multi2) const; inline typed::pw_multi_aff, Range> add(const typed::pw_multi_aff, Range> &pma2) const; inline typed::union_pw_multi_aff, Range> add(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::pw_multi_aff, Range> add(const typed::multi_aff, Range> &pma2) const; inline typed::pw_multi_aff, Range> add(const typed::pw_aff, Range> &pma2) const; inline typed::pw_multi_aff, Range> add_constant(const typed::multi_val &mv) const; inline typed::pw_multi_aff, Range> add_constant(const typed::val &v) const; inline typed::pw_multi_aff, Range> add_constant(long v) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::union_pw_multi_aff &upma2) const; inline typed::map, Range> as_map() const; inline typed::multi_aff, Range> as_multi_aff() const; inline typed::multi_union_pw_aff, Range> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Range> as_pw_multi_aff() const; inline typed::set, Range> as_set() const = delete; inline typed::union_map, Range> as_union_map() const; inline typed::pw_aff, Anonymous> at(int pos) const; inline typed::pw_aff, Range> get_at(int pos) const = delete; inline typed::set> bind(const typed::multi_id &tuple) const; inline typed::pw_multi_aff bind_domain(const typed::multi_id> &tuple) const; inline typed::pw_multi_aff bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::pw_multi_aff, Range> coalesce() const; inline typed::set> domain() const; inline typed::pw_multi_aff, Range> domain_reverse() const; inline typed::pw_multi_aff, Range> drop_unused_params() const; inline typed::pw_multi_aff, Range> extract_pw_multi_aff(const typed::space, Range> &space) const; inline typed::pw_multi_aff, Range> gist(const typed::set> &set) const; inline typed::union_pw_multi_aff, Range> gist(const typed::union_set> &context) const; inline typed::pw_multi_aff, Range> gist(const typed::basic_set> &set) const; inline typed::pw_multi_aff, Range> gist(const typed::point> &set) const; inline typed::pw_multi_aff, Range> gist_params(const typed::set<> &set) const; inline typed::pw_multi_aff, Range> gist_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff, Range> gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff, Range> identity() const; inline typed::pw_multi_aff, Range> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff, Range> intersect_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, Range> intersect_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, Range> intersect_domain(const typed::union_set> &uset) const; inline typed::pw_multi_aff, Range> intersect_domain(const typed::basic_set> &set) const; inline typed::pw_multi_aff, Range> intersect_domain(const typed::point> &set) const; inline typed::union_pw_multi_aff, Range> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff, Range> intersect_params(const typed::set<> &set) const; inline typed::pw_multi_aff, Range> intersect_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff, Range> intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list, Anonymous> list() const; inline typed::multi_pw_aff, Range> max(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_val max_multi_val() const; inline typed::multi_pw_aff, Range> min(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_val min_multi_val() const; inline typed::multi_pw_aff, Range> neg() const; template inline typed::pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::multi_aff &pma2) const; template inline typed::pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::pw_aff &pma2) const; template inline typed::multi_pw_aff, Arg2>, pair> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, Arg2>, pair> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_multi_aff, Arg2>, pair> product(const typed::multi_aff &pma2) const; template inline typed::pw_multi_aff, Arg2>, pair> product(const typed::pw_aff &pma2) const; template inline typed::multi_pw_aff pullback(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_pw_aff pullback(const typed::multi_pw_aff> &mpa2) const; template inline typed::pw_multi_aff pullback(const typed::multi_aff> &ma) const; inline typed::pw_multi_aff pullback(const typed::multi_aff> &ma) const; template inline typed::pw_multi_aff pullback(const typed::pw_multi_aff> &pma2) const; inline typed::pw_multi_aff pullback(const typed::pw_multi_aff> &pma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::pw_multi_aff_list, Range> pw_multi_aff_list() const; inline typed::pw_multi_aff, Range> range_factor_domain() const = delete; inline typed::pw_multi_aff, Range> range_factor_range() const = delete; template inline typed::multi_pw_aff, pair> range_product(const typed::multi_pw_aff, Arg2> &multi2) const; template inline typed::multi_union_pw_aff, pair> range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const; template inline typed::pw_multi_aff, pair> range_product(const typed::pw_multi_aff, Arg2> &pma2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const; template inline typed::pw_multi_aff, pair> range_product(const typed::multi_aff, Arg2> &pma2) const; inline typed::pw_multi_aff, pair> range_product(const typed::pw_aff, Anonymous> &pma2) const; inline typed::id, Range> get_range_tuple_id() const = delete; inline typed::pw_multi_aff, Range> scale(const typed::multi_val &mv) const; inline typed::pw_multi_aff, Range> scale(const typed::val &v) const; inline typed::pw_multi_aff, Range> scale(long v) const; inline typed::pw_multi_aff, Range> scale_down(const typed::multi_val &mv) const; inline typed::pw_multi_aff, Range> scale_down(const typed::val &v) const; inline typed::pw_multi_aff, Range> scale_down(long v) const; inline typed::multi_pw_aff, Range> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, Range> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; template inline typed::pw_multi_aff, Arg1> set_range_tuple(const typed::id &id) const; template inline typed::pw_multi_aff, Arg1> set_range_tuple(const std::string &id) const; inline typed::space, Range> space() const; inline typed::space, Range> get_space() const = delete; inline typed::multi_pw_aff, Range> sub(const typed::multi_pw_aff, Range> &multi2) const; inline typed::multi_union_pw_aff, Range> sub(const typed::multi_union_pw_aff, Range> &multi2) const; inline typed::pw_multi_aff, Range> sub(const typed::pw_multi_aff, Range> &pma2) const; inline typed::union_pw_multi_aff, Range> sub(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::pw_multi_aff, Range> sub(const typed::multi_aff, Range> &pma2) const; inline typed::pw_multi_aff, Range> sub(const typed::pw_aff, Range> &pma2) const; inline typed::pw_multi_aff, Range> subtract_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, Range> subtract_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, Range> subtract_domain(const typed::union_set> &uset) const; inline typed::pw_multi_aff, Range> subtract_domain(const typed::basic_set> &set) const; inline typed::pw_multi_aff, Range> subtract_domain(const typed::point> &set) const; inline typed::multi_pw_aff, Range> to_multi_pw_aff() const; inline typed::union_pw_multi_aff, Range> to_union_pw_multi_aff() const; inline typed::multi_pw_aff, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, Range> union_add(const typed::multi_pw_aff, Range> &mpa2) const; inline typed::multi_union_pw_aff, Range> union_add(const typed::multi_union_pw_aff, Range> &mupa2) const; inline typed::pw_multi_aff, Range> union_add(const typed::pw_multi_aff, Range> &pma2) const; inline typed::union_pw_multi_aff, Range> union_add(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::pw_multi_aff, Range> union_add(const typed::multi_aff, Range> &pma2) const; inline typed::pw_multi_aff, Range> union_add(const typed::pw_aff, Range> &pma2) const; }; template struct pw_multi_aff> : public isl::pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> pw_multi_aff(const pw_multi_aff> &obj) : isl::pw_multi_aff(obj) {} private: template {}, bool>::type = true> pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {} public: static pw_multi_aff from(const isl::pw_multi_aff &obj) { return pw_multi_aff(obj); } inline /* implicit */ pw_multi_aff(const typed::multi_aff> &ma); inline /* implicit */ pw_multi_aff(const typed::pw_aff> &pa); inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff> add(const typed::multi_pw_aff> &multi2) const; inline typed::multi_union_pw_aff> add(const typed::multi_union_pw_aff> &multi2) const; inline typed::pw_multi_aff> add(const typed::pw_multi_aff> &pma2) const; inline typed::union_pw_multi_aff> add(const typed::union_pw_multi_aff> &upma2) const; inline typed::pw_multi_aff> add(const typed::multi_aff> &pma2) const; inline typed::pw_multi_aff> add(const typed::pw_aff> &pma2) const; inline typed::pw_multi_aff> add_constant(const typed::multi_val> &mv) const; inline typed::pw_multi_aff> add_constant(const typed::val> &v) const; inline typed::pw_multi_aff> add_constant(long v) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff, Arg3> &upma2) const; inline typed::map> as_map() const; inline typed::multi_aff> as_multi_aff() const; inline typed::multi_union_pw_aff> as_multi_union_pw_aff() const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::set> as_set() const = delete; inline typed::union_map> as_union_map() const; inline typed::pw_aff at(int pos) const; inline typed::pw_aff> get_at(int pos) const = delete; inline typed::set bind(const typed::multi_id> &tuple) const; inline typed::pw_multi_aff> bind_domain(const typed::multi_id &tuple) const; inline typed::pw_multi_aff> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete; inline typed::pw_multi_aff> coalesce() const; inline typed::set domain() const; inline typed::pw_multi_aff> domain_reverse() const = delete; inline typed::pw_multi_aff> drop_unused_params() const; inline typed::pw_multi_aff> extract_pw_multi_aff(const typed::space> &space) const; inline typed::pw_multi_aff> gist(const typed::set &set) const; inline typed::union_pw_multi_aff> gist(const typed::union_set &context) const; inline typed::pw_multi_aff> gist(const typed::basic_set &set) const; inline typed::pw_multi_aff> gist(const typed::point &set) const; inline typed::pw_multi_aff> gist_params(const typed::set<> &set) const; inline typed::pw_multi_aff> gist_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff> gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff> identity() const; inline typed::pw_multi_aff> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff> intersect_domain(const typed::set &set) const; inline typed::union_pw_multi_aff> intersect_domain(const typed::space &space) const; inline typed::union_pw_multi_aff> intersect_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff> intersect_domain(const typed::basic_set &set) const; inline typed::pw_multi_aff> intersect_domain(const typed::point &set) const; inline typed::union_pw_multi_aff> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::pw_multi_aff> intersect_params(const typed::set<> &set) const; inline typed::pw_multi_aff> intersect_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff> intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list list() const; inline typed::multi_pw_aff> max(const typed::multi_pw_aff> &multi2) const; inline typed::multi_val> max_multi_val() const; inline typed::multi_pw_aff> min(const typed::multi_pw_aff> &multi2) const; inline typed::multi_val> min_multi_val() const; inline typed::multi_pw_aff> neg() const; inline typed::pw_multi_aff> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete; inline typed::union_pw_multi_aff> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::pw_multi_aff> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete; inline typed::pw_multi_aff> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete; template inline typed::multi_pw_aff, pair, Arg3>> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, pair, Arg3>> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_multi_aff, pair, Arg3>> product(const typed::multi_aff &pma2) const; template inline typed::pw_multi_aff, pair, Anonymous>> product(const typed::pw_aff &pma2) const; template inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff &mpa2) const; inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff &mpa2) const; template inline typed::pw_multi_aff> pullback(const typed::multi_aff &ma) const; inline typed::pw_multi_aff> pullback(const typed::multi_aff &ma) const; template inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff &pma2) const; inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::pw_multi_aff_list> pw_multi_aff_list() const; inline typed::pw_multi_aff range_factor_domain() const; inline typed::pw_multi_aff range_factor_range() const; template inline typed::multi_pw_aff, Arg3>> range_product(const typed::multi_pw_aff &multi2) const; template inline typed::multi_union_pw_aff, Arg3>> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::pw_multi_aff, Arg3>> range_product(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, Arg3>> range_product(const typed::union_pw_multi_aff &upma2) const; template inline typed::pw_multi_aff, Arg3>> range_product(const typed::multi_aff &pma2) const; inline typed::pw_multi_aff, Anonymous>> range_product(const typed::pw_aff &pma2) const; inline typed::id> get_range_tuple_id() const = delete; inline typed::pw_multi_aff> scale(const typed::multi_val> &mv) const; inline typed::pw_multi_aff> scale(const typed::val> &v) const; inline typed::pw_multi_aff> scale(long v) const; inline typed::pw_multi_aff> scale_down(const typed::multi_val> &mv) const; inline typed::pw_multi_aff> scale_down(const typed::val> &v) const; inline typed::pw_multi_aff> scale_down(long v) const; inline typed::multi_pw_aff> set_at(int pos, const typed::pw_aff &el) const; inline typed::multi_union_pw_aff> set_at(int pos, const typed::union_pw_aff &el) const; inline typed::pw_multi_aff> set_range_tuple(const typed::id<> &id) const = delete; inline typed::pw_multi_aff> set_range_tuple(const std::string &id) const = delete; inline typed::space> space() const; inline typed::space> get_space() const = delete; inline typed::multi_pw_aff> sub(const typed::multi_pw_aff> &multi2) const; inline typed::multi_union_pw_aff> sub(const typed::multi_union_pw_aff> &multi2) const; inline typed::pw_multi_aff> sub(const typed::pw_multi_aff> &pma2) const; inline typed::union_pw_multi_aff> sub(const typed::union_pw_multi_aff> &upma2) const; inline typed::pw_multi_aff> sub(const typed::multi_aff> &pma2) const; inline typed::pw_multi_aff> sub(const typed::pw_aff> &pma2) const; inline typed::pw_multi_aff> subtract_domain(const typed::set &set) const; inline typed::union_pw_multi_aff> subtract_domain(const typed::space &space) const; inline typed::union_pw_multi_aff> subtract_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff> subtract_domain(const typed::basic_set &set) const; inline typed::pw_multi_aff> subtract_domain(const typed::point &set) const; inline typed::multi_pw_aff> to_multi_pw_aff() const; inline typed::union_pw_multi_aff> to_union_pw_multi_aff() const; inline typed::multi_pw_aff> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff> union_add(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_union_pw_aff> union_add(const typed::multi_union_pw_aff> &mupa2) const; inline typed::pw_multi_aff> union_add(const typed::pw_multi_aff> &pma2) const; inline typed::union_pw_multi_aff> union_add(const typed::union_pw_multi_aff> &upma2) const; inline typed::pw_multi_aff> union_add(const typed::multi_aff> &pma2) const; inline typed::pw_multi_aff> union_add(const typed::pw_aff> &pma2) const; }; template struct pw_multi_aff, pair> : public isl::pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> pw_multi_aff(const pw_multi_aff, pair> &obj) : isl::pw_multi_aff(obj) {} private: template {}, bool>::type = true> pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {} public: static pw_multi_aff from(const isl::pw_multi_aff &obj) { return pw_multi_aff(obj); } inline /* implicit */ pw_multi_aff(const typed::multi_aff, pair> &ma); inline /* implicit */ pw_multi_aff(const typed::pw_aff, pair> &pa); inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_pw_aff, pair> add(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_union_pw_aff, pair> add(const typed::multi_union_pw_aff, pair> &multi2) const; inline typed::pw_multi_aff, pair> add(const typed::pw_multi_aff, pair> &pma2) const; inline typed::union_pw_multi_aff, pair> add(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::pw_multi_aff, pair> add(const typed::multi_aff, pair> &pma2) const; inline typed::pw_multi_aff, pair> add(const typed::pw_aff, pair> &pma2) const; inline typed::pw_multi_aff, pair> add_constant(const typed::multi_val> &mv) const; inline typed::pw_multi_aff, pair> add_constant(const typed::val> &v) const; inline typed::pw_multi_aff, pair> add_constant(long v) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::union_pw_multi_aff, Arg2> &upma2) const; inline typed::map, pair> as_map() const; inline typed::multi_aff, pair> as_multi_aff() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::set, pair> as_set() const = delete; inline typed::union_map, pair> as_union_map() const; inline typed::pw_aff, Anonymous> at(int pos) const; inline typed::pw_aff, pair> get_at(int pos) const = delete; inline typed::set> bind(const typed::multi_id> &tuple) const; inline typed::pw_multi_aff> bind_domain(const typed::multi_id> &tuple) const; inline typed::pw_multi_aff> bind_domain_wrapped_domain(const typed::multi_id &tuple) const; inline typed::pw_multi_aff, pair> coalesce() const; inline typed::set> domain() const; inline typed::pw_multi_aff, pair> domain_reverse() const; inline typed::pw_multi_aff, pair> drop_unused_params() const; inline typed::pw_multi_aff, pair> extract_pw_multi_aff(const typed::space, pair> &space) const; inline typed::pw_multi_aff, pair> gist(const typed::set> &set) const; inline typed::union_pw_multi_aff, pair> gist(const typed::union_set> &context) const; inline typed::pw_multi_aff, pair> gist(const typed::basic_set> &set) const; inline typed::pw_multi_aff, pair> gist(const typed::point> &set) const; inline typed::pw_multi_aff, pair> gist_params(const typed::set<> &set) const; inline typed::pw_multi_aff, pair> gist_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff, pair> gist_params(const typed::point<> &set) const; inline typed::multi_pw_aff, pair> identity() const; inline typed::pw_multi_aff, pair> insert_domain(const typed::space<> &domain) const = delete; inline typed::pw_multi_aff, pair> intersect_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, pair> intersect_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::pw_multi_aff, pair> intersect_domain(const typed::basic_set> &set) const; inline typed::pw_multi_aff, pair> intersect_domain(const typed::point> &set) const; inline typed::union_pw_multi_aff, pair> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::pw_multi_aff, pair> intersect_params(const typed::set<> &set) const; inline typed::pw_multi_aff, pair> intersect_params(const typed::basic_set<> &set) const; inline typed::pw_multi_aff, pair> intersect_params(const typed::point<> &set) const; inline typed::pw_aff_list, Anonymous> list() const; inline typed::multi_pw_aff, pair> max(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_val> max_multi_val() const; inline typed::multi_pw_aff, pair> min(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_val> min_multi_val() const; inline typed::multi_pw_aff, pair> neg() const; template inline typed::pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const; template inline typed::union_pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::multi_aff &pma2) const; template inline typed::pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::pw_aff &pma2) const; template inline typed::multi_pw_aff, Domain2>, pair, Arg2>> product(const typed::multi_pw_aff &multi2) const; template inline typed::pw_multi_aff, Domain2>, pair, Arg2>> product(const typed::pw_multi_aff &pma2) const; template inline typed::pw_multi_aff, Domain2>, pair, Arg2>> product(const typed::multi_aff &pma2) const; template inline typed::pw_multi_aff, Domain2>, pair, Anonymous>> product(const typed::pw_aff &pma2) const; template inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff> &mpa2) const; inline typed::multi_pw_aff> pullback(const typed::multi_pw_aff> &mpa2) const; template inline typed::pw_multi_aff> pullback(const typed::multi_aff> &ma) const; inline typed::pw_multi_aff> pullback(const typed::multi_aff> &ma) const; template inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff> &pma2) const; inline typed::pw_multi_aff> pullback(const typed::pw_multi_aff> &pma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::pw_multi_aff_list, pair> pw_multi_aff_list() const; inline typed::pw_multi_aff, Range> range_factor_domain() const; inline typed::pw_multi_aff, Range2> range_factor_range() const; template inline typed::multi_pw_aff, pair, Arg2>> range_product(const typed::multi_pw_aff, Arg2> &multi2) const; template inline typed::multi_union_pw_aff, pair, Arg2>> range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const; template inline typed::pw_multi_aff, pair, Arg2>> range_product(const typed::pw_multi_aff, Arg2> &pma2) const; template inline typed::union_pw_multi_aff, pair, Arg2>> range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const; template inline typed::pw_multi_aff, pair, Arg2>> range_product(const typed::multi_aff, Arg2> &pma2) const; inline typed::pw_multi_aff, pair, Anonymous>> range_product(const typed::pw_aff, Anonymous> &pma2) const; inline typed::id, pair> get_range_tuple_id() const = delete; inline typed::pw_multi_aff, pair> scale(const typed::multi_val> &mv) const; inline typed::pw_multi_aff, pair> scale(const typed::val> &v) const; inline typed::pw_multi_aff, pair> scale(long v) const; inline typed::pw_multi_aff, pair> scale_down(const typed::multi_val> &mv) const; inline typed::pw_multi_aff, pair> scale_down(const typed::val> &v) const; inline typed::pw_multi_aff, pair> scale_down(long v) const; inline typed::multi_pw_aff, pair> set_at(int pos, const typed::pw_aff, Anonymous> &el) const; inline typed::multi_union_pw_aff, pair> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; inline typed::pw_multi_aff, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::pw_multi_aff, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, pair> space() const; inline typed::space, pair> get_space() const = delete; inline typed::multi_pw_aff, pair> sub(const typed::multi_pw_aff, pair> &multi2) const; inline typed::multi_union_pw_aff, pair> sub(const typed::multi_union_pw_aff, pair> &multi2) const; inline typed::pw_multi_aff, pair> sub(const typed::pw_multi_aff, pair> &pma2) const; inline typed::union_pw_multi_aff, pair> sub(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::pw_multi_aff, pair> sub(const typed::multi_aff, pair> &pma2) const; inline typed::pw_multi_aff, pair> sub(const typed::pw_aff, pair> &pma2) const; inline typed::pw_multi_aff, pair> subtract_domain(const typed::set> &set) const; inline typed::union_pw_multi_aff, pair> subtract_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, pair> subtract_domain(const typed::union_set> &uset) const; inline typed::pw_multi_aff, pair> subtract_domain(const typed::basic_set> &set) const; inline typed::pw_multi_aff, pair> subtract_domain(const typed::point> &set) const; inline typed::multi_pw_aff, pair> to_multi_pw_aff() const; inline typed::union_pw_multi_aff, pair> to_union_pw_multi_aff() const; inline typed::multi_pw_aff, pair> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::multi_pw_aff, pair> union_add(const typed::multi_pw_aff, pair> &mpa2) const; inline typed::multi_union_pw_aff, pair> union_add(const typed::multi_union_pw_aff, pair> &mupa2) const; inline typed::pw_multi_aff, pair> union_add(const typed::pw_multi_aff, pair> &pma2) const; inline typed::union_pw_multi_aff, pair> union_add(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::pw_multi_aff, pair> union_add(const typed::multi_aff, pair> &pma2) const; inline typed::pw_multi_aff, pair> union_add(const typed::pw_aff, pair> &pma2) const; }; template struct pw_multi_aff_list : public isl::pw_multi_aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff_list() = default; template {}, bool>::type = true> pw_multi_aff_list(const pw_multi_aff_list &obj) : isl::pw_multi_aff_list(obj) {} private: template {}, bool>::type = true> pw_multi_aff_list(const base &obj) : isl::pw_multi_aff_list(obj) {} public: static pw_multi_aff_list from(const isl::pw_multi_aff_list &obj) { return pw_multi_aff_list(obj); } inline explicit pw_multi_aff_list(const isl::ctx &ctx, int n); inline explicit pw_multi_aff_list(const typed::pw_multi_aff &el); inline explicit pw_multi_aff_list(const isl::ctx &ctx, const std::string &str); inline typed::pw_multi_aff_list add(const typed::pw_multi_aff &el) const; inline typed::pw_multi_aff_list add(const typed::multi_aff &el) const; inline typed::pw_multi_aff_list add(const typed::pw_aff &el) const; inline typed::pw_multi_aff at(int index) const; inline typed::pw_multi_aff get_at(int index) const = delete; inline typed::pw_multi_aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::pw_multi_aff)> &follows, const std::function)> &fn) const; inline typed::pw_multi_aff_list set_at(int index, const typed::pw_multi_aff &el) const; }; template struct pw_multi_aff_list : public isl::pw_multi_aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; pw_multi_aff_list() = default; template {} && std::is_base_of{}, bool>::type = true> pw_multi_aff_list(const pw_multi_aff_list &obj) : isl::pw_multi_aff_list(obj) {} private: template {}, bool>::type = true> pw_multi_aff_list(const base &obj) : isl::pw_multi_aff_list(obj) {} public: static pw_multi_aff_list from(const isl::pw_multi_aff_list &obj) { return pw_multi_aff_list(obj); } inline explicit pw_multi_aff_list(const isl::ctx &ctx, int n); inline explicit pw_multi_aff_list(const typed::pw_multi_aff &el); inline explicit pw_multi_aff_list(const isl::ctx &ctx, const std::string &str); inline typed::pw_multi_aff_list add(const typed::pw_multi_aff &el) const; inline typed::pw_multi_aff_list add(const typed::multi_aff &el) const; inline typed::pw_multi_aff_list add(const typed::pw_aff &el) const; inline typed::pw_multi_aff at(int index) const; inline typed::pw_multi_aff get_at(int index) const = delete; inline typed::pw_multi_aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::pw_multi_aff)> &follows, const std::function)> &fn) const; inline typed::pw_multi_aff_list set_at(int index, const typed::pw_multi_aff &el) const; }; template <> struct set<> : public isl::set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; set() = default; private: template {}, bool>::type = true> set(const base &obj) : isl::set(obj) {} public: static set from(const isl::set &obj) { return set(obj); } inline /* implicit */ set(const typed::basic_set<> &bset); inline /* implicit */ set(const typed::point<> &pnt); inline explicit set(const isl::ctx &ctx, const std::string &str); inline typed::set<> apply(const typed::map<> &map) const = delete; inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete; inline typed::set<> apply(const typed::basic_map<> &map) const = delete; inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete; inline typed::set<> as_set() const = delete; inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete; inline typed::set<> coalesce() const; inline typed::set<> detect_equalities() const; inline typed::set<> drop_unused_params() const; inline bool every_set(const std::function)> &test) const; inline typed::set<> extract_set(const typed::space<> &space) const; inline void foreach_basic_set(const std::function)> &fn) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::set<> gist(const typed::set<> &context) const; inline typed::union_set<> gist(const typed::union_set<> &context) const; inline typed::set<> gist(const typed::basic_set<> &context) const; inline typed::set<> gist(const typed::point<> &context) const; inline typed::set<> gist_params(const typed::set<> &context) const = delete; inline typed::set<> gist_params(const typed::basic_set<> &context) const = delete; inline typed::set<> gist_params(const typed::point<> &context) const = delete; inline typed::map<> identity() const = delete; inline typed::pw_aff indicator_function() const; inline typed::map<> insert_domain(const typed::space<> &domain) const = delete; inline typed::set<> intersect(const typed::set<> &set2) const; inline typed::union_set<> intersect(const typed::union_set<> &uset2) const; inline typed::set<> intersect(const typed::basic_set<> &set2) const; inline typed::set<> intersect(const typed::point<> &set2) const; inline typed::set<> intersect_params(const typed::set<> ¶ms) const = delete; inline typed::set<> intersect_params(const typed::basic_set<> ¶ms) const = delete; inline typed::set<> intersect_params(const typed::point<> ¶ms) const = delete; inline typed::fixed_box<> lattice_tile() const = delete; inline typed::fixed_box<> get_lattice_tile() const = delete; inline typed::set<> lexmax() const = delete; inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete; inline typed::set<> lexmin() const = delete; inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete; inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete; inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete; inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete; inline typed::val<> max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete; inline typed::val<> min_val(const typed::aff<> &obj) const = delete; inline typed::pw_aff param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff param_pw_aff_on_domain(const std::string &id) const; inline typed::set<> params() const = delete; inline typed::multi_val<> plain_multi_val_if_fixed() const = delete; inline typed::multi_val<> get_plain_multi_val_if_fixed() const = delete; inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete; inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete; inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete; inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::set<> product(const typed::set<> &set2) const = delete; inline typed::set<> product(const typed::basic_set<> &set2) const = delete; inline typed::set<> product(const typed::point<> &set2) const = delete; inline typed::set<> project_out_all_params() const; inline typed::set<> project_out_param(const typed::id &id) const; inline typed::set<> project_out_param(const std::string &id) const; inline typed::set<> project_out_param(const typed::id_list &list) const; inline typed::pw_aff pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list<> set_list() const; inline typed::fixed_box<> simple_fixed_box_hull() const = delete; inline typed::fixed_box<> get_simple_fixed_box_hull() const = delete; inline typed::space<> space() const; inline typed::space<> get_space() const = delete; inline typed::val<> get_stride(int pos) const = delete; inline typed::set<> subtract(const typed::set<> &set2) const; inline typed::union_set<> subtract(const typed::union_set<> &uset2) const; inline typed::set<> subtract(const typed::basic_set<> &set2) const; inline typed::set<> subtract(const typed::point<> &set2) const; inline typed::union_set<> to_union_set() const; inline typed::map<> translation() const = delete; template inline typed::set unbind_params(const typed::multi_id &tuple) const; inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete; inline typed::set<> unite(const typed::set<> &set2) const; inline typed::union_set<> unite(const typed::union_set<> &uset2) const; inline typed::set<> unite(const typed::basic_set<> &set2) const; inline typed::set<> unite(const typed::point<> &set2) const; static inline typed::set<> universe(const typed::space<> &space); inline typed::map<> unwrap() const = delete; inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete; inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete; inline typed::set<> wrapped_reverse() const = delete; }; template struct set : public isl::set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; set() = default; template {}, bool>::type = true> set(const set &obj) : isl::set(obj) {} private: template {}, bool>::type = true> set(const base &obj) : isl::set(obj) {} public: static set from(const isl::set &obj) { return set(obj); } inline /* implicit */ set(const typed::basic_set &bset); inline /* implicit */ set(const typed::point &pnt); inline explicit set(const isl::ctx &ctx, const std::string &str); template inline typed::set apply(const typed::map &map) const; template inline typed::union_set apply(const typed::union_map &umap) const; template inline typed::set apply(const typed::basic_map &map) const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::set as_set() const; inline typed::set<> bind(const typed::multi_id &tuple) const; inline typed::set coalesce() const; inline typed::set detect_equalities() const; inline typed::set drop_unused_params() const; inline bool every_set(const std::function)> &test) const; inline typed::set extract_set(const typed::space &space) const; inline void foreach_basic_set(const std::function)> &fn) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::set gist(const typed::set &context) const; inline typed::union_set gist(const typed::union_set &context) const; inline typed::set gist(const typed::basic_set &context) const; inline typed::set gist(const typed::point &context) const; inline typed::set gist_params(const typed::set<> &context) const; inline typed::set gist_params(const typed::basic_set<> &context) const; inline typed::set gist_params(const typed::point<> &context) const; inline typed::map identity() const; inline typed::pw_aff indicator_function() const; template inline typed::map insert_domain(const typed::space &domain) const; inline typed::set intersect(const typed::set &set2) const; inline typed::union_set intersect(const typed::union_set &uset2) const; inline typed::set intersect(const typed::basic_set &set2) const; inline typed::set intersect(const typed::point &set2) const; inline typed::set intersect_params(const typed::set<> ¶ms) const; inline typed::set intersect_params(const typed::basic_set<> ¶ms) const; inline typed::set intersect_params(const typed::point<> ¶ms) const; inline typed::fixed_box lattice_tile() const; inline typed::fixed_box get_lattice_tile() const = delete; inline typed::set lexmax() const; inline typed::pw_multi_aff lexmax_pw_multi_aff() const; inline typed::set lexmin() const; inline typed::pw_multi_aff lexmin_pw_multi_aff() const; inline typed::set lower_bound(const typed::multi_pw_aff &lower) const; inline typed::set lower_bound(const typed::multi_val &lower) const; inline typed::multi_pw_aff max_multi_pw_aff() const; inline typed::val max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff min_multi_pw_aff() const; inline typed::val min_val(const typed::aff<> &obj) const = delete; inline typed::pw_aff param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff param_pw_aff_on_domain(const std::string &id) const; inline typed::set<> params() const; inline typed::multi_val plain_multi_val_if_fixed() const; inline typed::multi_val get_plain_multi_val_if_fixed() const = delete; template inline typed::set preimage(const typed::multi_aff &ma) const; template inline typed::set preimage(const typed::multi_pw_aff &mpa) const; template inline typed::set preimage(const typed::pw_multi_aff &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff &upma) const; template inline typed::set> product(const typed::set &set2) const; template inline typed::set> product(const typed::basic_set &set2) const; template inline typed::set> product(const typed::point &set2) const; inline typed::set project_out_all_params() const; inline typed::set project_out_param(const typed::id &id) const; inline typed::set project_out_param(const std::string &id) const; inline typed::set project_out_param(const typed::id_list &list) const; inline typed::pw_aff pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list set_list() const; inline typed::fixed_box simple_fixed_box_hull() const; inline typed::fixed_box get_simple_fixed_box_hull() const = delete; inline typed::space space() const; inline typed::space get_space() const = delete; inline typed::val get_stride(int pos) const = delete; inline typed::set subtract(const typed::set &set2) const; inline typed::union_set subtract(const typed::union_set &uset2) const; inline typed::set subtract(const typed::basic_set &set2) const; inline typed::set subtract(const typed::point &set2) const; inline typed::union_set to_union_set() const; inline typed::map translation() const; inline typed::set unbind_params(const typed::multi_id<> &tuple) const = delete; template inline typed::map unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::set unite(const typed::set &set2) const; inline typed::union_set unite(const typed::union_set &uset2) const; inline typed::set unite(const typed::basic_set &set2) const; inline typed::set unite(const typed::point &set2) const; static inline typed::set universe(const typed::space &space); inline typed::map unwrap() const = delete; inline typed::set upper_bound(const typed::multi_pw_aff &upper) const; inline typed::set upper_bound(const typed::multi_val &upper) const; inline typed::set wrapped_reverse() const = delete; }; template struct set> : public isl::set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; set() = default; template {} && std::is_base_of{}, bool>::type = true> set(const set> &obj) : isl::set(obj) {} private: template {}, bool>::type = true> set(const base &obj) : isl::set(obj) {} public: static set from(const isl::set &obj) { return set(obj); } inline /* implicit */ set(const typed::basic_set> &bset); inline /* implicit */ set(const typed::point> &pnt); inline explicit set(const isl::ctx &ctx, const std::string &str); template inline typed::set apply(const typed::map, Arg2> &map) const; template inline typed::union_set apply(const typed::union_map, Arg2> &umap) const; template inline typed::set apply(const typed::basic_map, Arg2> &map) const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::set> as_set() const; inline typed::set<> bind(const typed::multi_id> &tuple) const; inline typed::set> coalesce() const; inline typed::set> detect_equalities() const; inline typed::set> drop_unused_params() const; inline bool every_set(const std::function>)> &test) const; inline typed::set> extract_set(const typed::space> &space) const; inline void foreach_basic_set(const std::function>)> &fn) const; inline void foreach_point(const std::function>)> &fn) const; inline void foreach_set(const std::function>)> &fn) const; inline typed::set> gist(const typed::set> &context) const; inline typed::union_set> gist(const typed::union_set> &context) const; inline typed::set> gist(const typed::basic_set> &context) const; inline typed::set> gist(const typed::point> &context) const; inline typed::set> gist_params(const typed::set<> &context) const; inline typed::set> gist_params(const typed::basic_set<> &context) const; inline typed::set> gist_params(const typed::point<> &context) const; inline typed::map, pair> identity() const; inline typed::pw_aff, Anonymous> indicator_function() const; template inline typed::map> insert_domain(const typed::space &domain) const; inline typed::set> intersect(const typed::set> &set2) const; inline typed::union_set> intersect(const typed::union_set> &uset2) const; inline typed::set> intersect(const typed::basic_set> &set2) const; inline typed::set> intersect(const typed::point> &set2) const; inline typed::set> intersect_params(const typed::set<> ¶ms) const; inline typed::set> intersect_params(const typed::basic_set<> ¶ms) const; inline typed::set> intersect_params(const typed::point<> ¶ms) const; inline typed::fixed_box> lattice_tile() const; inline typed::fixed_box> get_lattice_tile() const = delete; inline typed::set> lexmax() const; inline typed::pw_multi_aff> lexmax_pw_multi_aff() const; inline typed::set> lexmin() const; inline typed::pw_multi_aff> lexmin_pw_multi_aff() const; inline typed::set> lower_bound(const typed::multi_pw_aff> &lower) const; inline typed::set> lower_bound(const typed::multi_val> &lower) const; inline typed::multi_pw_aff> max_multi_pw_aff() const; inline typed::val> max_val(const typed::aff<> &obj) const = delete; inline typed::multi_pw_aff> min_multi_pw_aff() const; inline typed::val> min_val(const typed::aff<> &obj) const = delete; inline typed::pw_aff, Anonymous> param_pw_aff_on_domain(const typed::id &id) const; inline typed::pw_aff, Anonymous> param_pw_aff_on_domain(const std::string &id) const; inline typed::set<> params() const; inline typed::multi_val> plain_multi_val_if_fixed() const; inline typed::multi_val> get_plain_multi_val_if_fixed() const = delete; template inline typed::set preimage(const typed::multi_aff> &ma) const; template inline typed::set preimage(const typed::multi_pw_aff> &mpa) const; template inline typed::set preimage(const typed::pw_multi_aff> &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff> &upma) const; template inline typed::set, Arg2>> product(const typed::set &set2) const; template inline typed::set, Arg2>> product(const typed::basic_set &set2) const; template inline typed::set, Arg2>> product(const typed::point &set2) const; inline typed::set> project_out_all_params() const; inline typed::set> project_out_param(const typed::id &id) const; inline typed::set> project_out_param(const std::string &id) const; inline typed::set> project_out_param(const typed::id_list &list) const; inline typed::pw_aff, Anonymous> pw_aff_on_domain(const typed::val &v) const; inline typed::pw_aff, Anonymous> pw_aff_on_domain(long v) const; template inline typed::pw_multi_aff, Arg2> pw_multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::set_list> set_list() const; inline typed::fixed_box> simple_fixed_box_hull() const; inline typed::fixed_box> get_simple_fixed_box_hull() const = delete; inline typed::space> space() const; inline typed::space> get_space() const = delete; inline typed::val> get_stride(int pos) const = delete; inline typed::set> subtract(const typed::set> &set2) const; inline typed::union_set> subtract(const typed::union_set> &uset2) const; inline typed::set> subtract(const typed::basic_set> &set2) const; inline typed::set> subtract(const typed::point> &set2) const; inline typed::union_set> to_union_set() const; inline typed::map, pair> translation() const; inline typed::set> unbind_params(const typed::multi_id<> &tuple) const = delete; template inline typed::map> unbind_params_insert_domain(const typed::multi_id &domain) const; inline typed::set> unite(const typed::set> &set2) const; inline typed::union_set> unite(const typed::union_set> &uset2) const; inline typed::set> unite(const typed::basic_set> &set2) const; inline typed::set> unite(const typed::point> &set2) const; static inline typed::set> universe(const typed::space> &space); inline typed::map unwrap() const; inline typed::set> upper_bound(const typed::multi_pw_aff> &upper) const; inline typed::set> upper_bound(const typed::multi_val> &upper) const; inline typed::set> wrapped_reverse() const; }; template <> struct set_list<> : public isl::set_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; set_list() = default; private: template {}, bool>::type = true> set_list(const base &obj) : isl::set_list(obj) {} public: static set_list from(const isl::set_list &obj) { return set_list(obj); } inline explicit set_list(const isl::ctx &ctx, int n); inline explicit set_list(const typed::set<> &el); inline explicit set_list(const isl::ctx &ctx, const std::string &str); inline typed::set_list<> add(const typed::set<> &el) const; inline typed::set_list<> add(const typed::basic_set<> &el) const; inline typed::set_list<> add(const typed::point<> &el) const; inline typed::set<> at(int index) const = delete; inline typed::set<> get_at(int index) const = delete; inline typed::set_list<> drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::set<>)> &follows, const std::function)> &fn) const; inline typed::set_list<> set_at(int index, const typed::set<> &el) const = delete; }; template struct set_list : public isl::set_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; set_list() = default; template {}, bool>::type = true> set_list(const set_list &obj) : isl::set_list(obj) {} private: template {}, bool>::type = true> set_list(const base &obj) : isl::set_list(obj) {} public: static set_list from(const isl::set_list &obj) { return set_list(obj); } inline explicit set_list(const isl::ctx &ctx, int n); inline explicit set_list(const typed::set &el); inline explicit set_list(const isl::ctx &ctx, const std::string &str); inline typed::set_list add(const typed::set &el) const; inline typed::set_list add(const typed::basic_set &el) const; inline typed::set_list add(const typed::point &el) const; inline typed::set at(int index) const; inline typed::set get_at(int index) const = delete; inline typed::set_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::set)> &follows, const std::function)> &fn) const; inline typed::set_list set_at(int index, const typed::set &el) const; }; template <> struct space<> : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); template inline typed::space add_named_tuple(const typed::id &tuple_id, unsigned int dim) const; template inline typed::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const; inline typed::space<> add_param(const typed::id &id) const; inline typed::space<> add_param(const std::string &id) const; template inline typed::space add_unnamed_tuple(unsigned int dim) const; inline typed::space<> curry() const = delete; inline typed::space<> domain() const = delete; inline typed::multi_aff<> domain_map_multi_aff() const = delete; inline typed::pw_multi_aff<> domain_map_pw_multi_aff() const = delete; inline typed::space<> domain_reverse() const = delete; inline typed::id<> get_domain_tuple_id() const = delete; inline typed::space<> drop_all_params() const; inline typed::space<> flatten_domain() const = delete; inline typed::space<> flatten_range() const = delete; inline typed::multi_aff<> identity_multi_aff_on_domain() const = delete; inline typed::multi_pw_aff<> identity_multi_pw_aff_on_domain() const = delete; inline typed::pw_multi_aff<> identity_pw_multi_aff_on_domain() const = delete; inline typed::space<> map_from_set() const = delete; inline typed::multi_aff<> multi_aff(const typed::aff_list<> &list) const = delete; template inline typed::multi_aff multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::multi_id<> multi_id(const typed::id_list<> &list) const = delete; inline typed::multi_pw_aff<> multi_pw_aff(const typed::pw_aff_list<> &list) const = delete; inline typed::multi_union_pw_aff<> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete; inline typed::multi_val<> multi_val(const typed::val_list<> &list) const = delete; inline typed::aff param_aff_on_domain(const typed::id &id) const; inline typed::aff param_aff_on_domain(const std::string &id) const; inline typed::space<> params() const = delete; inline typed::space<> product(const typed::space<> &right) const = delete; inline typed::space<> range() const = delete; inline typed::multi_aff<> range_map_multi_aff() const = delete; inline typed::pw_multi_aff<> range_map_pw_multi_aff() const = delete; inline typed::space<> range_reverse() const = delete; inline typed::id<> get_range_tuple_id() const = delete; inline typed::space<> reverse() const = delete; inline typed::space<> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::space<> set_domain_tuple(const std::string &id) const = delete; inline typed::space<> set_range_tuple(const typed::id<> &id) const = delete; inline typed::space<> set_range_tuple(const std::string &id) const = delete; inline typed::space<> uncurry() const = delete; static inline typed::space<> unit(const isl::ctx &ctx); inline typed::map<> universe_map() const = delete; inline typed::set<> universe_set() const; inline typed::space<> unwrap() const = delete; inline typed::space<> wrap() const = delete; inline typed::space<> wrapped_reverse() const = delete; inline typed::aff<> zero_aff_on_domain() const = delete; inline typed::multi_aff<> zero_multi_aff() const = delete; inline typed::multi_pw_aff<> zero_multi_pw_aff() const = delete; inline typed::multi_union_pw_aff<> zero_multi_union_pw_aff() const = delete; inline typed::multi_val<> zero_multi_val() const = delete; }; template struct space : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; template {}, bool>::type = true> space(const space &obj) : isl::space(obj) {} private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); template inline typed::space add_named_tuple(const typed::id &tuple_id, unsigned int dim) const; template inline typed::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const; inline typed::space add_param(const typed::id &id) const; inline typed::space add_param(const std::string &id) const; template inline typed::space add_unnamed_tuple(unsigned int dim) const; inline typed::space curry() const = delete; inline typed::space<> domain() const; inline typed::multi_aff domain_map_multi_aff() const = delete; inline typed::pw_multi_aff domain_map_pw_multi_aff() const = delete; inline typed::space domain_reverse() const = delete; inline typed::id get_domain_tuple_id() const = delete; inline typed::space drop_all_params() const; inline typed::space flatten_domain() const = delete; inline typed::space flatten_range() const = delete; inline typed::multi_aff identity_multi_aff_on_domain() const; inline typed::multi_pw_aff identity_multi_pw_aff_on_domain() const; inline typed::pw_multi_aff identity_pw_multi_aff_on_domain() const; inline typed::space map_from_set() const; inline typed::multi_aff multi_aff(const typed::aff_list &list) const; template inline typed::multi_aff multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::multi_id multi_id(const typed::id_list &list) const; inline typed::multi_pw_aff multi_pw_aff(const typed::pw_aff_list &list) const; inline typed::multi_union_pw_aff multi_union_pw_aff(const typed::union_pw_aff_list &list) const; template inline typed::multi_union_pw_aff multi_union_pw_aff(const typed::union_pw_aff_list &list) const; inline typed::multi_val multi_val(const typed::val_list &list) const; inline typed::aff param_aff_on_domain(const typed::id &id) const; inline typed::aff param_aff_on_domain(const std::string &id) const; inline typed::space<> params() const; template inline typed::space> product(const typed::space &right) const; inline typed::space range() const = delete; inline typed::multi_aff range_map_multi_aff() const = delete; inline typed::pw_multi_aff range_map_pw_multi_aff() const = delete; inline typed::space range_reverse() const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::space reverse() const = delete; inline typed::space set_domain_tuple(const typed::id<> &id) const = delete; inline typed::space set_domain_tuple(const std::string &id) const = delete; template inline typed::space set_range_tuple(const typed::id &id) const; template inline typed::space set_range_tuple(const std::string &id) const; inline typed::space uncurry() const = delete; static inline typed::space unit(const isl::ctx &ctx) = delete; inline typed::map universe_map() const = delete; inline typed::set universe_set() const; inline typed::space unwrap() const = delete; inline typed::space wrap() const = delete; inline typed::space wrapped_reverse() const = delete; inline typed::aff zero_aff_on_domain() const; inline typed::multi_aff zero_multi_aff() const; inline typed::multi_pw_aff zero_multi_pw_aff() const; inline typed::multi_union_pw_aff zero_multi_union_pw_aff() const; inline typed::multi_val zero_multi_val() const; }; template struct space : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; template {} && std::is_base_of{}, bool>::type = true> space(const space &obj) : isl::space(obj) {} private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); inline typed::space add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete; inline typed::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete; inline typed::space add_param(const typed::id &id) const; inline typed::space add_param(const std::string &id) const; inline typed::space add_unnamed_tuple(unsigned int dim) const = delete; inline typed::space curry() const = delete; inline typed::space domain() const; inline typed::multi_aff, Domain> domain_map_multi_aff() const; inline typed::pw_multi_aff, Domain> domain_map_pw_multi_aff() const; inline typed::space domain_reverse() const = delete; inline typed::id get_domain_tuple_id() const = delete; inline typed::space drop_all_params() const; inline typed::space flatten_domain() const = delete; inline typed::space flatten_range() const = delete; inline typed::multi_aff identity_multi_aff_on_domain() const = delete; inline typed::multi_pw_aff identity_multi_pw_aff_on_domain() const = delete; inline typed::pw_multi_aff identity_pw_multi_aff_on_domain() const = delete; inline typed::space map_from_set() const = delete; inline typed::multi_aff multi_aff(const typed::aff_list &list) const; inline typed::multi_aff multi_aff_on_domain(const typed::multi_val<> &mv) const = delete; inline typed::multi_id multi_id(const typed::id_list<> &list) const = delete; inline typed::multi_pw_aff multi_pw_aff(const typed::pw_aff_list &list) const; inline typed::multi_union_pw_aff multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete; inline typed::multi_val multi_val(const typed::val_list<> &list) const = delete; inline typed::aff param_aff_on_domain(const typed::id<> &id) const = delete; inline typed::aff param_aff_on_domain(const std::string &id) const = delete; inline typed::space<> params() const; template inline typed::space, pair> product(const typed::space &right) const; inline typed::space range() const; inline typed::multi_aff, Range> range_map_multi_aff() const; inline typed::pw_multi_aff, Range> range_map_pw_multi_aff() const; inline typed::space range_reverse() const = delete; inline typed::id get_range_tuple_id() const = delete; inline typed::space reverse() const; template inline typed::space set_domain_tuple(const typed::id &id) const; template inline typed::space set_domain_tuple(const std::string &id) const; template inline typed::space set_range_tuple(const typed::id &id) const; template inline typed::space set_range_tuple(const std::string &id) const; inline typed::space uncurry() const = delete; static inline typed::space unit(const isl::ctx &ctx) = delete; inline typed::map universe_map() const; inline typed::set universe_set() const = delete; inline typed::space unwrap() const = delete; inline typed::space> wrap() const; inline typed::space wrapped_reverse() const = delete; inline typed::aff zero_aff_on_domain() const = delete; inline typed::multi_aff zero_multi_aff() const; inline typed::multi_pw_aff zero_multi_pw_aff() const; inline typed::multi_union_pw_aff zero_multi_union_pw_aff() const; inline typed::multi_val zero_multi_val() const = delete; }; template struct space> : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; template {} && std::is_base_of{}, bool>::type = true> space(const space> &obj) : isl::space(obj) {} private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); template inline typed::space, Arg2> add_named_tuple(const typed::id &tuple_id, unsigned int dim) const; template inline typed::space, Arg2> add_named_tuple(const std::string &tuple_id, unsigned int dim) const; inline typed::space> add_param(const typed::id &id) const; inline typed::space> add_param(const std::string &id) const; template inline typed::space, Arg2> add_unnamed_tuple(unsigned int dim) const; inline typed::space> curry() const = delete; inline typed::space<> domain() const; inline typed::multi_aff> domain_map_multi_aff() const = delete; inline typed::pw_multi_aff> domain_map_pw_multi_aff() const = delete; inline typed::space> domain_reverse() const = delete; inline typed::id> get_domain_tuple_id() const = delete; inline typed::space> drop_all_params() const; inline typed::space> flatten_domain() const = delete; inline typed::space> flatten_range() const = delete; inline typed::multi_aff, pair> identity_multi_aff_on_domain() const; inline typed::multi_pw_aff, pair> identity_multi_pw_aff_on_domain() const; inline typed::pw_multi_aff, pair> identity_pw_multi_aff_on_domain() const; inline typed::space, pair> map_from_set() const; inline typed::multi_aff> multi_aff(const typed::aff_list &list) const; template inline typed::multi_aff, Arg2> multi_aff_on_domain(const typed::multi_val &mv) const; inline typed::multi_id> multi_id(const typed::id_list &list) const; inline typed::multi_pw_aff> multi_pw_aff(const typed::pw_aff_list &list) const; inline typed::multi_union_pw_aff> multi_union_pw_aff(const typed::union_pw_aff_list &list) const; template inline typed::multi_union_pw_aff> multi_union_pw_aff(const typed::union_pw_aff_list &list) const; inline typed::multi_val> multi_val(const typed::val_list &list) const; inline typed::aff, Anonymous> param_aff_on_domain(const typed::id &id) const; inline typed::aff, Anonymous> param_aff_on_domain(const std::string &id) const; inline typed::space<> params() const; template inline typed::space, Arg2>> product(const typed::space &right) const; inline typed::space> range() const = delete; inline typed::multi_aff> range_map_multi_aff() const = delete; inline typed::pw_multi_aff> range_map_pw_multi_aff() const = delete; inline typed::space> range_reverse() const = delete; inline typed::id> get_range_tuple_id() const = delete; inline typed::space> reverse() const = delete; inline typed::space> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::space> set_domain_tuple(const std::string &id) const = delete; inline typed::space> set_range_tuple(const typed::id<> &id) const = delete; inline typed::space> set_range_tuple(const std::string &id) const = delete; inline typed::space> uncurry() const = delete; static inline typed::space> unit(const isl::ctx &ctx) = delete; inline typed::map> universe_map() const = delete; inline typed::set> universe_set() const; inline typed::space unwrap() const; inline typed::space> wrap() const = delete; inline typed::space> wrapped_reverse() const; inline typed::aff, Anonymous> zero_aff_on_domain() const; inline typed::multi_aff> zero_multi_aff() const; inline typed::multi_pw_aff> zero_multi_pw_aff() const; inline typed::multi_union_pw_aff> zero_multi_union_pw_aff() const; inline typed::multi_val> zero_multi_val() const; }; template struct space, Range2> : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> space(const space, Arg3> &obj) : isl::space(obj) {} private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); inline typed::space, Range2> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete; inline typed::space, Range2> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete; inline typed::space, Range2> add_param(const typed::id &id) const; inline typed::space, Range2> add_param(const std::string &id) const; inline typed::space, Range2> add_unnamed_tuple(unsigned int dim) const = delete; inline typed::space> curry() const; inline typed::space> domain() const; inline typed::multi_aff, Range2>, pair> domain_map_multi_aff() const; inline typed::pw_multi_aff, Range2>, pair> domain_map_pw_multi_aff() const; inline typed::space, Range2> domain_reverse() const; inline typed::id, Range2> get_domain_tuple_id() const = delete; inline typed::space, Range2> drop_all_params() const; inline typed::space flatten_domain() const; inline typed::space, Range2> flatten_range() const = delete; inline typed::multi_aff, Range2> identity_multi_aff_on_domain() const = delete; inline typed::multi_pw_aff, Range2> identity_multi_pw_aff_on_domain() const = delete; inline typed::pw_multi_aff, Range2> identity_pw_multi_aff_on_domain() const = delete; inline typed::space, Range2> map_from_set() const = delete; inline typed::multi_aff, Range2> multi_aff(const typed::aff_list, Anonymous> &list) const; inline typed::multi_aff, Range2> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete; inline typed::multi_id, Range2> multi_id(const typed::id_list<> &list) const = delete; inline typed::multi_pw_aff, Range2> multi_pw_aff(const typed::pw_aff_list, Anonymous> &list) const; inline typed::multi_union_pw_aff, Range2> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete; inline typed::multi_val, Range2> multi_val(const typed::val_list<> &list) const = delete; inline typed::aff, Range2> param_aff_on_domain(const typed::id<> &id) const = delete; inline typed::aff, Range2> param_aff_on_domain(const std::string &id) const = delete; inline typed::space<> params() const; template inline typed::space, Domain2>, pair> product(const typed::space &right) const; inline typed::space range() const; inline typed::multi_aff, Range2>, Range2> range_map_multi_aff() const; inline typed::pw_multi_aff, Range2>, Range2> range_map_pw_multi_aff() const; inline typed::space, Range2> range_reverse() const = delete; inline typed::id, Range2> get_range_tuple_id() const = delete; inline typed::space> reverse() const; inline typed::space, Range2> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::space, Range2> set_domain_tuple(const std::string &id) const = delete; template inline typed::space, Arg2> set_range_tuple(const typed::id &id) const; template inline typed::space, Arg2> set_range_tuple(const std::string &id) const; inline typed::space, Range2> uncurry() const = delete; static inline typed::space, Range2> unit(const isl::ctx &ctx) = delete; inline typed::map, Range2> universe_map() const; inline typed::set, Range2> universe_set() const = delete; inline typed::space, Range2> unwrap() const = delete; inline typed::space, Range2>> wrap() const; inline typed::space, Range2> wrapped_reverse() const = delete; inline typed::aff, Range2> zero_aff_on_domain() const = delete; inline typed::multi_aff, Range2> zero_multi_aff() const; inline typed::multi_pw_aff, Range2> zero_multi_pw_aff() const; inline typed::multi_union_pw_aff, Range2> zero_multi_union_pw_aff() const; inline typed::multi_val, Range2> zero_multi_val() const = delete; }; template struct space> : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> space(const space> &obj) : isl::space(obj) {} private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); inline typed::space> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete; inline typed::space> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete; inline typed::space> add_param(const typed::id &id) const; inline typed::space> add_param(const std::string &id) const; inline typed::space> add_unnamed_tuple(unsigned int dim) const = delete; inline typed::space> curry() const = delete; inline typed::space domain() const; inline typed::multi_aff>, Domain> domain_map_multi_aff() const; inline typed::pw_multi_aff>, Domain> domain_map_pw_multi_aff() const; inline typed::space> domain_reverse() const = delete; inline typed::id> get_domain_tuple_id() const = delete; inline typed::space> drop_all_params() const; inline typed::space> flatten_domain() const = delete; inline typed::space flatten_range() const; inline typed::multi_aff> identity_multi_aff_on_domain() const = delete; inline typed::multi_pw_aff> identity_multi_pw_aff_on_domain() const = delete; inline typed::pw_multi_aff> identity_pw_multi_aff_on_domain() const = delete; inline typed::space> map_from_set() const = delete; inline typed::multi_aff> multi_aff(const typed::aff_list &list) const; inline typed::multi_aff> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete; inline typed::multi_id> multi_id(const typed::id_list<> &list) const = delete; inline typed::multi_pw_aff> multi_pw_aff(const typed::pw_aff_list &list) const; inline typed::multi_union_pw_aff> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete; inline typed::multi_val> multi_val(const typed::val_list<> &list) const = delete; inline typed::aff> param_aff_on_domain(const typed::id<> &id) const = delete; inline typed::aff> param_aff_on_domain(const std::string &id) const = delete; inline typed::space<> params() const; template inline typed::space, pair, Arg3>> product(const typed::space &right) const; inline typed::space> range() const; inline typed::multi_aff>, pair> range_map_multi_aff() const; inline typed::pw_multi_aff>, pair> range_map_pw_multi_aff() const; inline typed::space> range_reverse() const; inline typed::id> get_range_tuple_id() const = delete; inline typed::space, Domain> reverse() const; template inline typed::space> set_domain_tuple(const typed::id &id) const; template inline typed::space> set_domain_tuple(const std::string &id) const; inline typed::space> set_range_tuple(const typed::id<> &id) const = delete; inline typed::space> set_range_tuple(const std::string &id) const = delete; inline typed::space, Range2> uncurry() const; static inline typed::space> unit(const isl::ctx &ctx) = delete; inline typed::map> universe_map() const; inline typed::set> universe_set() const = delete; inline typed::space> unwrap() const = delete; inline typed::space>> wrap() const; inline typed::space> wrapped_reverse() const = delete; inline typed::aff> zero_aff_on_domain() const = delete; inline typed::multi_aff> zero_multi_aff() const; inline typed::multi_pw_aff> zero_multi_pw_aff() const; inline typed::multi_union_pw_aff> zero_multi_union_pw_aff() const; inline typed::multi_val> zero_multi_val() const = delete; }; template struct space, pair> : public isl::space { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; space() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> space(const space, pair> &obj) : isl::space(obj) {} private: template {}, bool>::type = true> space(const base &obj) : isl::space(obj) {} public: static space from(const isl::space &obj) { return space(obj); } inline explicit space(const isl::ctx &ctx, const std::string &str); inline typed::space, pair> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete; inline typed::space, pair> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete; inline typed::space, pair> add_param(const typed::id &id) const; inline typed::space, pair> add_param(const std::string &id) const; inline typed::space, pair> add_unnamed_tuple(unsigned int dim) const = delete; inline typed::space>> curry() const; inline typed::space> domain() const; inline typed::multi_aff, pair>, pair> domain_map_multi_aff() const; inline typed::pw_multi_aff, pair>, pair> domain_map_pw_multi_aff() const; inline typed::space, pair> domain_reverse() const; inline typed::id, pair> get_domain_tuple_id() const = delete; inline typed::space, pair> drop_all_params() const; inline typed::space> flatten_domain() const; inline typed::space, Anonymous> flatten_range() const; inline typed::multi_aff, pair> identity_multi_aff_on_domain() const = delete; inline typed::multi_pw_aff, pair> identity_multi_pw_aff_on_domain() const = delete; inline typed::pw_multi_aff, pair> identity_pw_multi_aff_on_domain() const = delete; inline typed::space, pair> map_from_set() const = delete; inline typed::multi_aff, pair> multi_aff(const typed::aff_list, Anonymous> &list) const; inline typed::multi_aff, pair> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete; inline typed::multi_id, pair> multi_id(const typed::id_list<> &list) const = delete; inline typed::multi_pw_aff, pair> multi_pw_aff(const typed::pw_aff_list, Anonymous> &list) const; inline typed::multi_union_pw_aff, pair> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete; inline typed::multi_val, pair> multi_val(const typed::val_list<> &list) const = delete; inline typed::aff, pair> param_aff_on_domain(const typed::id<> &id) const = delete; inline typed::aff, pair> param_aff_on_domain(const std::string &id) const = delete; inline typed::space<> params() const; template inline typed::space, Domain2>, pair, Arg2>> product(const typed::space &right) const; inline typed::space> range() const; inline typed::multi_aff, pair>, pair> range_map_multi_aff() const; inline typed::pw_multi_aff, pair>, pair> range_map_pw_multi_aff() const; inline typed::space, pair> range_reverse() const; inline typed::id, pair> get_range_tuple_id() const = delete; inline typed::space, pair> reverse() const; inline typed::space, pair> set_domain_tuple(const typed::id<> &id) const = delete; inline typed::space, pair> set_domain_tuple(const std::string &id) const = delete; inline typed::space, pair> set_range_tuple(const typed::id<> &id) const = delete; inline typed::space, pair> set_range_tuple(const std::string &id) const = delete; inline typed::space, Range>, Range2> uncurry() const; static inline typed::space, pair> unit(const isl::ctx &ctx) = delete; inline typed::map, pair> universe_map() const; inline typed::set, pair> universe_set() const = delete; inline typed::space, pair> unwrap() const = delete; inline typed::space, pair>> wrap() const; inline typed::space, pair> wrapped_reverse() const = delete; inline typed::aff, pair> zero_aff_on_domain() const = delete; inline typed::multi_aff, pair> zero_multi_aff() const; inline typed::multi_pw_aff, pair> zero_multi_pw_aff() const; inline typed::multi_union_pw_aff, pair> zero_multi_union_pw_aff() const; inline typed::multi_val, pair> zero_multi_val() const = delete; }; template struct union_map : public isl::union_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_map() = default; template {} && std::is_base_of{}, bool>::type = true> union_map(const union_map &obj) : isl::union_map(obj) {} private: template {}, bool>::type = true> union_map(const base &obj) : isl::union_map(obj) {} public: static union_map from(const isl::union_map &obj) { return union_map(obj); } inline /* implicit */ union_map(const typed::basic_map &bmap); inline /* implicit */ union_map(const typed::map &map); inline explicit union_map(const isl::ctx &ctx, const std::string &str); template inline typed::union_map apply_domain(const typed::union_map &umap2) const; template inline typed::union_map apply_domain(const typed::basic_map &umap2) const; template inline typed::union_map apply_domain(const typed::map &umap2) const; template inline typed::union_map apply_range(const typed::union_map &umap2) const; template inline typed::union_map apply_range(const typed::basic_map &umap2) const; template inline typed::union_map apply_range(const typed::map &umap2) const; inline typed::map as_map() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::union_pw_multi_aff as_union_pw_multi_aff() const; inline typed::union_set bind_range(const typed::multi_id &tuple) const; inline typed::union_map coalesce() const; inline typed::union_map curry() const = delete; inline typed::union_set deltas() const = delete; inline typed::union_map detect_equalities() const; inline typed::union_set domain() const; inline typed::union_map domain_factor_domain() const = delete; inline typed::union_map domain_factor_range() const = delete; inline typed::union_map, Domain> domain_map() const; inline typed::union_pw_multi_aff, Domain> domain_map_union_pw_multi_aff() const; template inline typed::union_map, Range> domain_product(const typed::union_map &umap2) const; template inline typed::union_map, Range> domain_product(const typed::basic_map &umap2) const; template inline typed::union_map, Range> domain_product(const typed::map &umap2) const; inline typed::union_map domain_reverse() const = delete; inline typed::union_map drop_unused_params() const; static inline typed::union_map empty(const isl::ctx &ctx); inline typed::union_map eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::union_map eq_at(const typed::multi_pw_aff<> &mupa) const = delete; inline typed::union_map eq_at(const typed::union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function)> &test) const; inline typed::map extract_map(const typed::space &space) const; inline void foreach_map(const std::function)> &fn) const; inline typed::union_map gist(const typed::union_map &context) const; inline typed::union_map gist(const typed::basic_map &context) const; inline typed::union_map gist(const typed::map &context) const; inline typed::union_map gist_domain(const typed::union_set &uset) const; inline typed::union_map gist_domain(const typed::basic_set &uset) const; inline typed::union_map gist_domain(const typed::point &uset) const; inline typed::union_map gist_domain(const typed::set &uset) const; inline typed::union_map gist_params(const typed::set<> &set) const; inline typed::union_map gist_params(const typed::basic_set<> &set) const; inline typed::union_map gist_params(const typed::point<> &set) const; inline typed::union_map intersect(const typed::union_map &umap2) const; inline typed::union_map intersect(const typed::basic_map &umap2) const; inline typed::union_map intersect(const typed::map &umap2) const; inline typed::union_map intersect_domain(const typed::space &space) const; inline typed::union_map intersect_domain(const typed::union_set &uset) const; inline typed::union_map intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_params(const typed::set<> &set) const; inline typed::union_map intersect_params(const typed::basic_set<> &set) const; inline typed::union_map intersect_params(const typed::point<> &set) const; inline typed::union_map intersect_range(const typed::space &space) const; inline typed::union_map intersect_range(const typed::union_set &uset) const; inline typed::union_map intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map lexmax() const; inline typed::union_map lexmin() const; inline typed::map_list map_list() const; inline typed::map_list get_map_list() const = delete; inline typed::set<> params() const; template inline typed::union_map preimage_domain(const typed::multi_aff &ma) const; template inline typed::union_map preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::union_map preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::union_map preimage_range(const typed::multi_aff &ma) const; template inline typed::union_map preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::union_map, pair> product(const typed::union_map &umap2) const; template inline typed::union_map, pair> product(const typed::basic_map &umap2) const; template inline typed::union_map, pair> product(const typed::map &umap2) const; inline typed::union_map project_out_all_params() const; inline typed::union_map project_out_param(const typed::id &id) const; inline typed::union_map project_out_param(const std::string &id) const; inline typed::union_map project_out_param(const typed::id_list &list) const; inline typed::union_set range() const; inline typed::union_map range_factor_domain() const = delete; inline typed::union_map range_factor_range() const = delete; inline typed::union_map, Range> range_map() const; template inline typed::union_map> range_product(const typed::union_map &umap2) const; template inline typed::union_map> range_product(const typed::basic_map &umap2) const; template inline typed::union_map> range_product(const typed::map &umap2) const; inline typed::union_map range_reverse() const = delete; inline typed::union_map reverse() const; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::union_map subtract(const typed::union_map &umap2) const; inline typed::union_map subtract(const typed::basic_map &umap2) const; inline typed::union_map subtract(const typed::map &umap2) const; inline typed::union_map subtract_domain(const typed::union_set &dom) const; inline typed::union_map subtract_domain(const typed::basic_set &dom) const; inline typed::union_map subtract_domain(const typed::point &dom) const; inline typed::union_map subtract_domain(const typed::set &dom) const; inline typed::union_map subtract_range(const typed::union_set &dom) const; inline typed::union_map subtract_range(const typed::basic_set &dom) const; inline typed::union_map subtract_range(const typed::point &dom) const; inline typed::union_map subtract_range(const typed::set &dom) const; inline typed::union_map uncurry() const = delete; inline typed::union_map unite(const typed::union_map &umap2) const; inline typed::union_map unite(const typed::basic_map &umap2) const; inline typed::union_map unite(const typed::map &umap2) const; inline typed::union_map universe() const; inline typed::union_set> wrap() const; }; template struct union_map, Range2> : public isl::union_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_map() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> union_map(const union_map, Arg3> &obj) : isl::union_map(obj) {} private: template {}, bool>::type = true> union_map(const base &obj) : isl::union_map(obj) {} public: static union_map from(const isl::union_map &obj) { return union_map(obj); } inline /* implicit */ union_map(const typed::basic_map, Range2> &bmap); inline /* implicit */ union_map(const typed::map, Range2> &map); inline explicit union_map(const isl::ctx &ctx, const std::string &str); template inline typed::union_map apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::union_map apply_domain(const typed::basic_map, Domain2> &umap2) const; template inline typed::union_map apply_domain(const typed::map, Domain2> &umap2) const; template inline typed::union_map, Arg3> apply_range(const typed::union_map &umap2) const; template inline typed::union_map, Arg3> apply_range(const typed::basic_map &umap2) const; template inline typed::union_map, Arg3> apply_range(const typed::map &umap2) const; inline typed::map, Range2> as_map() const; inline typed::multi_union_pw_aff, Range2> as_multi_union_pw_aff() const; inline typed::union_pw_multi_aff, Range2> as_union_pw_multi_aff() const; inline typed::union_set> bind_range(const typed::multi_id &tuple) const; inline typed::union_map, Range2> coalesce() const; inline typed::union_map> curry() const; inline typed::union_set, Range2> deltas() const = delete; inline typed::union_map, Range2> detect_equalities() const; inline typed::union_set> domain() const; inline typed::union_map domain_factor_domain() const; inline typed::union_map domain_factor_range() const; inline typed::union_map, Range2>, pair> domain_map() const; inline typed::union_pw_multi_aff, Range2>, pair> domain_map_union_pw_multi_aff() const; template inline typed::union_map, Domain2>, Range2> domain_product(const typed::union_map &umap2) const; template inline typed::union_map, Domain2>, Range2> domain_product(const typed::basic_map &umap2) const; template inline typed::union_map, Domain2>, Range2> domain_product(const typed::map &umap2) const; inline typed::union_map, Range2> domain_reverse() const; inline typed::union_map, Range2> drop_unused_params() const; static inline typed::union_map, Range2> empty(const isl::ctx &ctx); inline typed::union_map, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::union_map, Range2> eq_at(const typed::multi_pw_aff<> &mupa) const = delete; inline typed::union_map, Range2> eq_at(const typed::union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function, Range2>)> &test) const; inline typed::map, Range2> extract_map(const typed::space, Range2> &space) const; inline void foreach_map(const std::function, Range2>)> &fn) const; inline typed::union_map, Range2> gist(const typed::union_map, Range2> &context) const; inline typed::union_map, Range2> gist(const typed::basic_map, Range2> &context) const; inline typed::union_map, Range2> gist(const typed::map, Range2> &context) const; inline typed::union_map, Range2> gist_domain(const typed::union_set> &uset) const; inline typed::union_map, Range2> gist_domain(const typed::basic_set> &uset) const; inline typed::union_map, Range2> gist_domain(const typed::point> &uset) const; inline typed::union_map, Range2> gist_domain(const typed::set> &uset) const; inline typed::union_map, Range2> gist_params(const typed::set<> &set) const; inline typed::union_map, Range2> gist_params(const typed::basic_set<> &set) const; inline typed::union_map, Range2> gist_params(const typed::point<> &set) const; inline typed::union_map, Range2> intersect(const typed::union_map, Range2> &umap2) const; inline typed::union_map, Range2> intersect(const typed::basic_map, Range2> &umap2) const; inline typed::union_map, Range2> intersect(const typed::map, Range2> &umap2) const; inline typed::union_map, Range2> intersect_domain(const typed::space> &space) const; inline typed::union_map, Range2> intersect_domain(const typed::union_set> &uset) const; inline typed::union_map, Range2> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::union_map, Range2> intersect_domain_wrapped_domain(const typed::basic_set &domain) const; inline typed::union_map, Range2> intersect_domain_wrapped_domain(const typed::point &domain) const; inline typed::union_map, Range2> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, Range2> intersect_params(const typed::set<> &set) const; inline typed::union_map, Range2> intersect_params(const typed::basic_set<> &set) const; inline typed::union_map, Range2> intersect_params(const typed::point<> &set) const; inline typed::union_map, Range2> intersect_range(const typed::space &space) const; inline typed::union_map, Range2> intersect_range(const typed::union_set &uset) const; inline typed::union_map, Range2> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::union_map, Range2> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::union_map, Range2> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::union_map, Range2> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map, Range2> lexmax() const; inline typed::union_map, Range2> lexmin() const; inline typed::map_list, Range2> map_list() const; inline typed::map_list, Range2> get_map_list() const = delete; inline typed::set<> params() const; template inline typed::union_map preimage_domain(const typed::multi_aff> &ma) const; template inline typed::union_map preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::union_map preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_map, Arg3> preimage_range(const typed::multi_aff &ma) const; template inline typed::union_map, Arg3> preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map, Arg3> preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::union_map, Domain2>, pair> product(const typed::union_map &umap2) const; template inline typed::union_map, Domain2>, pair> product(const typed::basic_map &umap2) const; template inline typed::union_map, Domain2>, pair> product(const typed::map &umap2) const; inline typed::union_map, Range2> project_out_all_params() const; inline typed::union_map, Range2> project_out_param(const typed::id &id) const; inline typed::union_map, Range2> project_out_param(const std::string &id) const; inline typed::union_map, Range2> project_out_param(const typed::id_list &list) const; inline typed::union_set range() const; inline typed::union_map, Range2> range_factor_domain() const = delete; inline typed::union_map, Range2> range_factor_range() const = delete; inline typed::union_map, Range2>, Range2> range_map() const; template inline typed::union_map, pair> range_product(const typed::union_map, Arg3> &umap2) const; template inline typed::union_map, pair> range_product(const typed::basic_map, Arg3> &umap2) const; template inline typed::union_map, pair> range_product(const typed::map, Arg3> &umap2) const; inline typed::union_map, Range2> range_reverse() const = delete; inline typed::union_map> reverse() const; inline typed::space<> space() const; inline typed::space, Range2> get_space() const = delete; inline typed::union_map, Range2> subtract(const typed::union_map, Range2> &umap2) const; inline typed::union_map, Range2> subtract(const typed::basic_map, Range2> &umap2) const; inline typed::union_map, Range2> subtract(const typed::map, Range2> &umap2) const; inline typed::union_map, Range2> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, Range2> subtract_domain(const typed::basic_set> &dom) const; inline typed::union_map, Range2> subtract_domain(const typed::point> &dom) const; inline typed::union_map, Range2> subtract_domain(const typed::set> &dom) const; inline typed::union_map, Range2> subtract_range(const typed::union_set &dom) const; inline typed::union_map, Range2> subtract_range(const typed::basic_set &dom) const; inline typed::union_map, Range2> subtract_range(const typed::point &dom) const; inline typed::union_map, Range2> subtract_range(const typed::set &dom) const; inline typed::union_map, Range2> uncurry() const = delete; inline typed::union_map, Range2> unite(const typed::union_map, Range2> &umap2) const; inline typed::union_map, Range2> unite(const typed::basic_map, Range2> &umap2) const; inline typed::union_map, Range2> unite(const typed::map, Range2> &umap2) const; inline typed::union_map, Range2> universe() const; inline typed::union_set, Range2>> wrap() const; }; template struct union_map : public isl::union_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_map() = default; template {}, bool>::type = true> union_map(const union_map &obj) : isl::union_map(obj) {} private: template {}, bool>::type = true> union_map(const base &obj) : isl::union_map(obj) {} public: static union_map from(const isl::union_map &obj) { return union_map(obj); } inline /* implicit */ union_map(const typed::basic_map &bmap); inline /* implicit */ union_map(const typed::map &map); inline explicit union_map(const isl::ctx &ctx, const std::string &str); template inline typed::union_map apply_domain(const typed::union_map &umap2) const; template inline typed::union_map apply_domain(const typed::basic_map &umap2) const; template inline typed::union_map apply_domain(const typed::map &umap2) const; template inline typed::union_map apply_range(const typed::union_map &umap2) const; template inline typed::union_map apply_range(const typed::basic_map &umap2) const; template inline typed::union_map apply_range(const typed::map &umap2) const; inline typed::map as_map() const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::union_pw_multi_aff as_union_pw_multi_aff() const; inline typed::union_set bind_range(const typed::multi_id &tuple) const; inline typed::union_map coalesce() const; inline typed::union_map curry() const = delete; inline typed::union_set deltas() const; inline typed::union_map detect_equalities() const; inline typed::union_set domain() const; inline typed::union_map domain_factor_domain() const = delete; inline typed::union_map domain_factor_range() const = delete; inline typed::union_map, Domain> domain_map() const; inline typed::union_pw_multi_aff, Domain> domain_map_union_pw_multi_aff() const; template inline typed::union_map, Domain> domain_product(const typed::union_map &umap2) const; template inline typed::union_map, Domain> domain_product(const typed::basic_map &umap2) const; template inline typed::union_map, Domain> domain_product(const typed::map &umap2) const; inline typed::union_map domain_reverse() const = delete; inline typed::union_map drop_unused_params() const; static inline typed::union_map empty(const isl::ctx &ctx); template inline typed::union_map eq_at(const typed::multi_union_pw_aff &mupa) const; template inline typed::union_map eq_at(const typed::multi_pw_aff &mupa) const; inline typed::union_map eq_at(const typed::union_pw_aff &mupa) const; inline bool every_map(const std::function)> &test) const; inline typed::map extract_map(const typed::space &space) const; inline void foreach_map(const std::function)> &fn) const; inline typed::union_map gist(const typed::union_map &context) const; inline typed::union_map gist(const typed::basic_map &context) const; inline typed::union_map gist(const typed::map &context) const; inline typed::union_map gist_domain(const typed::union_set &uset) const; inline typed::union_map gist_domain(const typed::basic_set &uset) const; inline typed::union_map gist_domain(const typed::point &uset) const; inline typed::union_map gist_domain(const typed::set &uset) const; inline typed::union_map gist_params(const typed::set<> &set) const; inline typed::union_map gist_params(const typed::basic_set<> &set) const; inline typed::union_map gist_params(const typed::point<> &set) const; inline typed::union_map intersect(const typed::union_map &umap2) const; inline typed::union_map intersect(const typed::basic_map &umap2) const; inline typed::union_map intersect(const typed::map &umap2) const; inline typed::union_map intersect_domain(const typed::space &space) const; inline typed::union_map intersect_domain(const typed::union_set &uset) const; inline typed::union_map intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::union_map intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map intersect_params(const typed::set<> &set) const; inline typed::union_map intersect_params(const typed::basic_set<> &set) const; inline typed::union_map intersect_params(const typed::point<> &set) const; inline typed::union_map intersect_range(const typed::space &space) const; inline typed::union_map intersect_range(const typed::union_set &uset) const; inline typed::union_map intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::union_map intersect_range_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map lexmax() const; inline typed::union_map lexmin() const; inline typed::map_list map_list() const; inline typed::map_list get_map_list() const = delete; inline typed::set<> params() const; template inline typed::union_map preimage_domain(const typed::multi_aff &ma) const; template inline typed::union_map preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::union_map preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::union_map preimage_range(const typed::multi_aff &ma) const; template inline typed::union_map preimage_range(const typed::pw_multi_aff &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff &upma) const; template inline typed::union_map, pair> product(const typed::union_map &umap2) const; template inline typed::union_map, pair> product(const typed::basic_map &umap2) const; template inline typed::union_map, pair> product(const typed::map &umap2) const; inline typed::union_map project_out_all_params() const; inline typed::union_map project_out_param(const typed::id &id) const; inline typed::union_map project_out_param(const std::string &id) const; inline typed::union_map project_out_param(const typed::id_list &list) const; inline typed::union_set range() const; inline typed::union_map range_factor_domain() const = delete; inline typed::union_map range_factor_range() const = delete; inline typed::union_map, Domain> range_map() const; template inline typed::union_map> range_product(const typed::union_map &umap2) const; template inline typed::union_map> range_product(const typed::basic_map &umap2) const; template inline typed::union_map> range_product(const typed::map &umap2) const; inline typed::union_map range_reverse() const = delete; inline typed::union_map reverse() const; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::union_map subtract(const typed::union_map &umap2) const; inline typed::union_map subtract(const typed::basic_map &umap2) const; inline typed::union_map subtract(const typed::map &umap2) const; inline typed::union_map subtract_domain(const typed::union_set &dom) const; inline typed::union_map subtract_domain(const typed::basic_set &dom) const; inline typed::union_map subtract_domain(const typed::point &dom) const; inline typed::union_map subtract_domain(const typed::set &dom) const; inline typed::union_map subtract_range(const typed::union_set &dom) const; inline typed::union_map subtract_range(const typed::basic_set &dom) const; inline typed::union_map subtract_range(const typed::point &dom) const; inline typed::union_map subtract_range(const typed::set &dom) const; inline typed::union_map uncurry() const = delete; inline typed::union_map unite(const typed::union_map &umap2) const; inline typed::union_map unite(const typed::basic_map &umap2) const; inline typed::union_map unite(const typed::map &umap2) const; inline typed::union_map universe() const; inline typed::union_set> wrap() const; }; template struct union_map> : public isl::union_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_map() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> union_map(const union_map> &obj) : isl::union_map(obj) {} private: template {}, bool>::type = true> union_map(const base &obj) : isl::union_map(obj) {} public: static union_map from(const isl::union_map &obj) { return union_map(obj); } inline /* implicit */ union_map(const typed::basic_map> &bmap); inline /* implicit */ union_map(const typed::map> &map); inline explicit union_map(const isl::ctx &ctx, const std::string &str); template inline typed::union_map> apply_domain(const typed::union_map &umap2) const; template inline typed::union_map> apply_domain(const typed::basic_map &umap2) const; template inline typed::union_map> apply_domain(const typed::map &umap2) const; template inline typed::union_map apply_range(const typed::union_map, Arg3> &umap2) const; template inline typed::union_map apply_range(const typed::basic_map, Arg3> &umap2) const; template inline typed::union_map apply_range(const typed::map, Arg3> &umap2) const; inline typed::map> as_map() const; inline typed::multi_union_pw_aff> as_multi_union_pw_aff() const; inline typed::union_pw_multi_aff> as_union_pw_multi_aff() const; inline typed::union_set bind_range(const typed::multi_id> &tuple) const; inline typed::union_map> coalesce() const; inline typed::union_map> curry() const = delete; inline typed::union_set> deltas() const = delete; inline typed::union_map> detect_equalities() const; inline typed::union_set domain() const; inline typed::union_map> domain_factor_domain() const = delete; inline typed::union_map> domain_factor_range() const = delete; inline typed::union_map>, Domain> domain_map() const; inline typed::union_pw_multi_aff>, Domain> domain_map_union_pw_multi_aff() const; template inline typed::union_map, pair> domain_product(const typed::union_map> &umap2) const; template inline typed::union_map, pair> domain_product(const typed::basic_map> &umap2) const; template inline typed::union_map, pair> domain_product(const typed::map> &umap2) const; inline typed::union_map> domain_reverse() const = delete; inline typed::union_map> drop_unused_params() const; static inline typed::union_map> empty(const isl::ctx &ctx); inline typed::union_map> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::union_map> eq_at(const typed::multi_pw_aff<> &mupa) const = delete; inline typed::union_map> eq_at(const typed::union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function>)> &test) const; inline typed::map> extract_map(const typed::space> &space) const; inline void foreach_map(const std::function>)> &fn) const; inline typed::union_map> gist(const typed::union_map> &context) const; inline typed::union_map> gist(const typed::basic_map> &context) const; inline typed::union_map> gist(const typed::map> &context) const; inline typed::union_map> gist_domain(const typed::union_set &uset) const; inline typed::union_map> gist_domain(const typed::basic_set &uset) const; inline typed::union_map> gist_domain(const typed::point &uset) const; inline typed::union_map> gist_domain(const typed::set &uset) const; inline typed::union_map> gist_params(const typed::set<> &set) const; inline typed::union_map> gist_params(const typed::basic_set<> &set) const; inline typed::union_map> gist_params(const typed::point<> &set) const; inline typed::union_map> intersect(const typed::union_map> &umap2) const; inline typed::union_map> intersect(const typed::basic_map> &umap2) const; inline typed::union_map> intersect(const typed::map> &umap2) const; inline typed::union_map> intersect_domain(const typed::space &space) const; inline typed::union_map> intersect_domain(const typed::union_set &uset) const; inline typed::union_map> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete; inline typed::union_map> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete; inline typed::union_map> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete; inline typed::union_map> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete; inline typed::union_map> intersect_params(const typed::set<> &set) const; inline typed::union_map> intersect_params(const typed::basic_set<> &set) const; inline typed::union_map> intersect_params(const typed::point<> &set) const; inline typed::union_map> intersect_range(const typed::space> &space) const; inline typed::union_map> intersect_range(const typed::union_set> &uset) const; inline typed::union_map> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::union_map> intersect_range_wrapped_domain(const typed::basic_set &domain) const; inline typed::union_map> intersect_range_wrapped_domain(const typed::point &domain) const; inline typed::union_map> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map> lexmax() const; inline typed::union_map> lexmin() const; inline typed::map_list> map_list() const; inline typed::map_list> get_map_list() const = delete; inline typed::set<> params() const; template inline typed::union_map> preimage_domain(const typed::multi_aff &ma) const; template inline typed::union_map> preimage_domain(const typed::multi_pw_aff &mpa) const; template inline typed::union_map> preimage_domain(const typed::pw_multi_aff &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff &upma) const; template inline typed::union_map preimage_range(const typed::multi_aff> &ma) const; template inline typed::union_map preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_map, pair, Arg3>> product(const typed::union_map &umap2) const; template inline typed::union_map, pair, Arg3>> product(const typed::basic_map &umap2) const; template inline typed::union_map, pair, Arg3>> product(const typed::map &umap2) const; inline typed::union_map> project_out_all_params() const; inline typed::union_map> project_out_param(const typed::id &id) const; inline typed::union_map> project_out_param(const std::string &id) const; inline typed::union_map> project_out_param(const typed::id_list &list) const; inline typed::union_set> range() const; inline typed::union_map range_factor_domain() const; inline typed::union_map range_factor_range() const; inline typed::union_map>, pair> range_map() const; template inline typed::union_map, Arg3>> range_product(const typed::union_map &umap2) const; template inline typed::union_map, Arg3>> range_product(const typed::basic_map &umap2) const; template inline typed::union_map, Arg3>> range_product(const typed::map &umap2) const; inline typed::union_map> range_reverse() const; inline typed::union_map, Domain> reverse() const; inline typed::space<> space() const; inline typed::space> get_space() const = delete; inline typed::union_map> subtract(const typed::union_map> &umap2) const; inline typed::union_map> subtract(const typed::basic_map> &umap2) const; inline typed::union_map> subtract(const typed::map> &umap2) const; inline typed::union_map> subtract_domain(const typed::union_set &dom) const; inline typed::union_map> subtract_domain(const typed::basic_set &dom) const; inline typed::union_map> subtract_domain(const typed::point &dom) const; inline typed::union_map> subtract_domain(const typed::set &dom) const; inline typed::union_map> subtract_range(const typed::union_set> &dom) const; inline typed::union_map> subtract_range(const typed::basic_set> &dom) const; inline typed::union_map> subtract_range(const typed::point> &dom) const; inline typed::union_map> subtract_range(const typed::set> &dom) const; inline typed::union_map, Range2> uncurry() const; inline typed::union_map> unite(const typed::union_map> &umap2) const; inline typed::union_map> unite(const typed::basic_map> &umap2) const; inline typed::union_map> unite(const typed::map> &umap2) const; inline typed::union_map> universe() const; inline typed::union_set>> wrap() const; }; template struct union_map, pair> : public isl::union_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_map() = default; template {} && std::is_base_of{}, bool>::type = true> union_map(const union_map, pair> &obj) : isl::union_map(obj) {} private: template {}, bool>::type = true> union_map(const base &obj) : isl::union_map(obj) {} public: static union_map from(const isl::union_map &obj) { return union_map(obj); } inline /* implicit */ union_map(const typed::basic_map, pair> &bmap); inline /* implicit */ union_map(const typed::map, pair> &map); inline explicit union_map(const isl::ctx &ctx, const std::string &str); template inline typed::union_map> apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::union_map> apply_domain(const typed::basic_map, Domain2> &umap2) const; template inline typed::union_map> apply_domain(const typed::map, Domain2> &umap2) const; template inline typed::union_map, Range2> apply_range(const typed::union_map, Range2> &umap2) const; template inline typed::union_map, Range2> apply_range(const typed::basic_map, Range2> &umap2) const; template inline typed::union_map, Range2> apply_range(const typed::map, Range2> &umap2) const; inline typed::map, pair> as_map() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::union_pw_multi_aff, pair> as_union_pw_multi_aff() const; inline typed::union_set> bind_range(const typed::multi_id> &tuple) const; inline typed::union_map, pair> coalesce() const; inline typed::union_map>> curry() const; inline typed::union_set> deltas() const; inline typed::union_map, pair> detect_equalities() const; inline typed::union_set> domain() const; inline typed::union_map> domain_factor_domain() const; inline typed::union_map> domain_factor_range() const; inline typed::union_map, pair>, pair> domain_map() const; inline typed::union_pw_multi_aff, pair>, pair> domain_map_union_pw_multi_aff() const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::union_map> &umap2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::basic_map> &umap2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::map> &umap2) const; inline typed::union_map, pair> domain_reverse() const; inline typed::union_map, pair> drop_unused_params() const; static inline typed::union_map, pair> empty(const isl::ctx &ctx); template inline typed::union_map, pair> eq_at(const typed::multi_union_pw_aff, Range> &mupa) const; template inline typed::union_map, pair> eq_at(const typed::multi_pw_aff, Range> &mupa) const; inline typed::union_map, pair> eq_at(const typed::union_pw_aff, Anonymous> &mupa) const; inline bool every_map(const std::function, pair>)> &test) const; inline typed::map, pair> extract_map(const typed::space, pair> &space) const; inline void foreach_map(const std::function, pair>)> &fn) const; inline typed::union_map, pair> gist(const typed::union_map, pair> &context) const; inline typed::union_map, pair> gist(const typed::basic_map, pair> &context) const; inline typed::union_map, pair> gist(const typed::map, pair> &context) const; inline typed::union_map, pair> gist_domain(const typed::union_set> &uset) const; inline typed::union_map, pair> gist_domain(const typed::basic_set> &uset) const; inline typed::union_map, pair> gist_domain(const typed::point> &uset) const; inline typed::union_map, pair> gist_domain(const typed::set> &uset) const; inline typed::union_map, pair> gist_params(const typed::set<> &set) const; inline typed::union_map, pair> gist_params(const typed::basic_set<> &set) const; inline typed::union_map, pair> gist_params(const typed::point<> &set) const; inline typed::union_map, pair> intersect(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> intersect(const typed::basic_map, pair> &umap2) const; inline typed::union_map, pair> intersect(const typed::map, pair> &umap2) const; inline typed::union_map, pair> intersect_domain(const typed::space> &space) const; inline typed::union_map, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::basic_set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::point &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_params(const typed::set<> &set) const; inline typed::union_map, pair> intersect_params(const typed::basic_set<> &set) const; inline typed::union_map, pair> intersect_params(const typed::point<> &set) const; inline typed::union_map, pair> intersect_range(const typed::space> &space) const; inline typed::union_map, pair> intersect_range(const typed::union_set> &uset) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::basic_set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::point &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> lexmax() const; inline typed::union_map, pair> lexmin() const; inline typed::map_list, pair> map_list() const; inline typed::map_list, pair> get_map_list() const = delete; inline typed::set<> params() const; template inline typed::union_map> preimage_domain(const typed::multi_aff> &ma) const; template inline typed::union_map> preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::union_map> preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_map, Range2> preimage_range(const typed::multi_aff> &ma) const; template inline typed::union_map, Range2> preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map, Range2> preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_map, Domain2>, pair, Range2>> product(const typed::union_map &umap2) const; template inline typed::union_map, Domain2>, pair, Range2>> product(const typed::basic_map &umap2) const; template inline typed::union_map, Domain2>, pair, Range2>> product(const typed::map &umap2) const; inline typed::union_map, pair> project_out_all_params() const; inline typed::union_map, pair> project_out_param(const typed::id &id) const; inline typed::union_map, pair> project_out_param(const std::string &id) const; inline typed::union_map, pair> project_out_param(const typed::id_list &list) const; inline typed::union_set> range() const; inline typed::union_map, T1> range_factor_domain() const; inline typed::union_map, T2> range_factor_range() const; inline typed::union_map, pair>, pair> range_map() const; template inline typed::union_map, pair, Range2>> range_product(const typed::union_map, Range2> &umap2) const; template inline typed::union_map, pair, Range2>> range_product(const typed::basic_map, Range2> &umap2) const; template inline typed::union_map, pair, Range2>> range_product(const typed::map, Range2> &umap2) const; inline typed::union_map, pair> range_reverse() const; inline typed::union_map, pair> reverse() const; inline typed::space<> space() const; inline typed::space, pair> get_space() const = delete; inline typed::union_map, pair> subtract(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> subtract(const typed::basic_map, pair> &umap2) const; inline typed::union_map, pair> subtract(const typed::map, pair> &umap2) const; inline typed::union_map, pair> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_domain(const typed::basic_set> &dom) const; inline typed::union_map, pair> subtract_domain(const typed::point> &dom) const; inline typed::union_map, pair> subtract_domain(const typed::set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::basic_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::point> &dom) const; inline typed::union_map, pair> subtract_range(const typed::set> &dom) const; inline typed::union_map, T1>, T2> uncurry() const; inline typed::union_map, pair> unite(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> unite(const typed::basic_map, pair> &umap2) const; inline typed::union_map, pair> unite(const typed::map, pair> &umap2) const; inline typed::union_map, pair> universe() const; inline typed::union_set, pair>> wrap() const; }; template struct union_map, pair> : public isl::union_map { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_map() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> union_map(const union_map, pair> &obj) : isl::union_map(obj) {} private: template {}, bool>::type = true> union_map(const base &obj) : isl::union_map(obj) {} public: static union_map from(const isl::union_map &obj) { return union_map(obj); } inline /* implicit */ union_map(const typed::basic_map, pair> &bmap); inline /* implicit */ union_map(const typed::map, pair> &map); inline explicit union_map(const isl::ctx &ctx, const std::string &str); template inline typed::union_map> apply_domain(const typed::union_map, Domain2> &umap2) const; template inline typed::union_map> apply_domain(const typed::basic_map, Domain2> &umap2) const; template inline typed::union_map> apply_domain(const typed::map, Domain2> &umap2) const; template inline typed::union_map, Arg2> apply_range(const typed::union_map, Arg2> &umap2) const; template inline typed::union_map, Arg2> apply_range(const typed::basic_map, Arg2> &umap2) const; template inline typed::union_map, Arg2> apply_range(const typed::map, Arg2> &umap2) const; inline typed::map, pair> as_map() const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::union_pw_multi_aff, pair> as_union_pw_multi_aff() const; inline typed::union_set> bind_range(const typed::multi_id> &tuple) const; inline typed::union_map, pair> coalesce() const; inline typed::union_map>> curry() const; inline typed::union_set, pair> deltas() const = delete; inline typed::union_map, pair> detect_equalities() const; inline typed::union_set> domain() const; inline typed::union_map> domain_factor_domain() const; inline typed::union_map> domain_factor_range() const; inline typed::union_map, pair>, pair> domain_map() const; inline typed::union_pw_multi_aff, pair>, pair> domain_map_union_pw_multi_aff() const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::union_map> &umap2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::basic_map> &umap2) const; template inline typed::union_map, Domain2>, pair> domain_product(const typed::map> &umap2) const; inline typed::union_map, pair> domain_reverse() const; inline typed::union_map, pair> drop_unused_params() const; static inline typed::union_map, pair> empty(const isl::ctx &ctx); inline typed::union_map, pair> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete; inline typed::union_map, pair> eq_at(const typed::multi_pw_aff<> &mupa) const = delete; inline typed::union_map, pair> eq_at(const typed::union_pw_aff<> &mupa) const = delete; inline bool every_map(const std::function, pair>)> &test) const; inline typed::map, pair> extract_map(const typed::space, pair> &space) const; inline void foreach_map(const std::function, pair>)> &fn) const; inline typed::union_map, pair> gist(const typed::union_map, pair> &context) const; inline typed::union_map, pair> gist(const typed::basic_map, pair> &context) const; inline typed::union_map, pair> gist(const typed::map, pair> &context) const; inline typed::union_map, pair> gist_domain(const typed::union_set> &uset) const; inline typed::union_map, pair> gist_domain(const typed::basic_set> &uset) const; inline typed::union_map, pair> gist_domain(const typed::point> &uset) const; inline typed::union_map, pair> gist_domain(const typed::set> &uset) const; inline typed::union_map, pair> gist_params(const typed::set<> &set) const; inline typed::union_map, pair> gist_params(const typed::basic_set<> &set) const; inline typed::union_map, pair> gist_params(const typed::point<> &set) const; inline typed::union_map, pair> intersect(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> intersect(const typed::basic_map, pair> &umap2) const; inline typed::union_map, pair> intersect(const typed::map, pair> &umap2) const; inline typed::union_map, pair> intersect_domain(const typed::space> &space) const; inline typed::union_map, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::union_set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::basic_set &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::point &domain) const; inline typed::union_map, pair> intersect_domain_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> intersect_params(const typed::set<> &set) const; inline typed::union_map, pair> intersect_params(const typed::basic_set<> &set) const; inline typed::union_map, pair> intersect_params(const typed::point<> &set) const; inline typed::union_map, pair> intersect_range(const typed::space> &space) const; inline typed::union_map, pair> intersect_range(const typed::union_set> &uset) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::union_set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::basic_set &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::point &domain) const; inline typed::union_map, pair> intersect_range_wrapped_domain(const typed::set &domain) const; inline typed::union_map, pair> lexmax() const; inline typed::union_map, pair> lexmin() const; inline typed::map_list, pair> map_list() const; inline typed::map_list, pair> get_map_list() const = delete; inline typed::set<> params() const; template inline typed::union_map> preimage_domain(const typed::multi_aff> &ma) const; template inline typed::union_map> preimage_domain(const typed::multi_pw_aff> &mpa) const; template inline typed::union_map> preimage_domain(const typed::pw_multi_aff> &pma) const; template inline typed::union_map> preimage_domain(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_map, Arg2> preimage_range(const typed::multi_aff> &ma) const; template inline typed::union_map, Arg2> preimage_range(const typed::pw_multi_aff> &pma) const; template inline typed::union_map, Arg2> preimage_range(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_map, Domain2>, pair, Arg2>> product(const typed::union_map &umap2) const; template inline typed::union_map, Domain2>, pair, Arg2>> product(const typed::basic_map &umap2) const; template inline typed::union_map, Domain2>, pair, Arg2>> product(const typed::map &umap2) const; inline typed::union_map, pair> project_out_all_params() const; inline typed::union_map, pair> project_out_param(const typed::id &id) const; inline typed::union_map, pair> project_out_param(const std::string &id) const; inline typed::union_map, pair> project_out_param(const typed::id_list &list) const; inline typed::union_set> range() const; inline typed::union_map, Range> range_factor_domain() const; inline typed::union_map, Range2> range_factor_range() const; inline typed::union_map, pair>, pair> range_map() const; template inline typed::union_map, pair, Arg2>> range_product(const typed::union_map, Arg2> &umap2) const; template inline typed::union_map, pair, Arg2>> range_product(const typed::basic_map, Arg2> &umap2) const; template inline typed::union_map, pair, Arg2>> range_product(const typed::map, Arg2> &umap2) const; inline typed::union_map, pair> range_reverse() const; inline typed::union_map, pair> reverse() const; inline typed::space<> space() const; inline typed::space, pair> get_space() const = delete; inline typed::union_map, pair> subtract(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> subtract(const typed::basic_map, pair> &umap2) const; inline typed::union_map, pair> subtract(const typed::map, pair> &umap2) const; inline typed::union_map, pair> subtract_domain(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_domain(const typed::basic_set> &dom) const; inline typed::union_map, pair> subtract_domain(const typed::point> &dom) const; inline typed::union_map, pair> subtract_domain(const typed::set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::union_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::basic_set> &dom) const; inline typed::union_map, pair> subtract_range(const typed::point> &dom) const; inline typed::union_map, pair> subtract_range(const typed::set> &dom) const; inline typed::union_map, Range>, Range2> uncurry() const; inline typed::union_map, pair> unite(const typed::union_map, pair> &umap2) const; inline typed::union_map, pair> unite(const typed::basic_map, pair> &umap2) const; inline typed::union_map, pair> unite(const typed::map, pair> &umap2) const; inline typed::union_map, pair> universe() const; inline typed::union_set, pair>> wrap() const; }; template <> struct union_pw_aff : public isl::union_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_aff() = default; union_pw_aff(const isl::union_pw_aff &obj) : isl::union_pw_aff(obj) {} static union_pw_aff from(const isl::union_pw_aff &obj) { return union_pw_aff(obj); } inline /* implicit */ union_pw_aff(const typed::aff &aff); inline /* implicit */ union_pw_aff(const typed::pw_aff &pa); inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::union_pw_aff add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_aff add(const typed::aff &upa2) const; inline typed::union_pw_aff add(const typed::pw_aff &upa2) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_map as_union_map() const = delete; inline typed::union_pw_aff at(int pos) const; inline typed::union_set<> bind(const typed::multi_id &tuple) const; inline typed::union_set<> bind(const typed::id &id) const; inline typed::union_set<> bind(const std::string &id) const; inline typed::union_pw_aff coalesce() const; inline typed::union_set<> domain() const; inline typed::union_pw_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::union_pw_aff gist(const typed::union_set<> &context) const; inline typed::union_pw_aff gist(const typed::basic_set<> &context) const; inline typed::union_pw_aff gist(const typed::point<> &context) const; inline typed::union_pw_aff gist(const typed::set<> &context) const; inline typed::multi_union_pw_aff gist_params(const typed::set<> &context) const; inline typed::union_pw_aff intersect_domain(const typed::space<> &space) const = delete; inline typed::union_pw_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete; inline typed::union_pw_aff intersect_params(const typed::set<> &set) const; inline typed::union_pw_aff intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_aff intersect_params(const typed::point<> &set) const; inline typed::union_pw_aff_list list() const; inline typed::multi_union_pw_aff neg() const; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::union_pw_aff pullback(const typed::multi_aff<> &upma) const = delete; inline typed::union_pw_aff pullback(const typed::pw_multi_aff<> &upma) const = delete; inline typed::union_pw_aff pullback(const typed::union_pw_aff<> &upma) const = delete; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::union_pw_multi_aff range_factor_domain() const = delete; inline typed::union_pw_multi_aff range_factor_range() const = delete; inline typed::multi_union_pw_aff range_product(const typed::multi_union_pw_aff<> &multi2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::multi_union_pw_aff scale(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale(const typed::val &v) const; inline typed::multi_union_pw_aff scale(long v) const; inline typed::multi_union_pw_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale_down(const typed::val &v) const; inline typed::multi_union_pw_aff scale_down(long v) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_union_pw_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_union_pw_aff set_range_tuple(const std::string &id) const; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::union_pw_aff sub(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_aff sub(const typed::aff &upa2) const; inline typed::union_pw_aff sub(const typed::pw_aff &upa2) const; inline typed::union_pw_aff subtract_domain(const typed::space<> &space) const = delete; inline typed::union_pw_aff subtract_domain(const typed::union_set<> &uset) const = delete; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::union_pw_aff union_add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_aff union_add(const typed::aff &upa2) const; inline typed::union_pw_aff union_add(const typed::pw_aff &upa2) const; }; template struct union_pw_aff : public isl::union_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_aff() = default; template {}, bool>::type = true> union_pw_aff(const union_pw_aff &obj) : isl::union_pw_aff(obj) {} private: template {}, bool>::type = true> union_pw_aff(const base &obj) : isl::union_pw_aff(obj) {} public: static union_pw_aff from(const isl::union_pw_aff &obj) { return union_pw_aff(obj); } inline /* implicit */ union_pw_aff(const typed::aff &aff); inline /* implicit */ union_pw_aff(const typed::pw_aff &pa); inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_union_pw_aff add(const typed::multi_union_pw_aff &multi2) const; inline typed::union_pw_aff add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_aff add(const typed::aff &upa2) const; inline typed::union_pw_aff add(const typed::pw_aff &upa2) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_map as_union_map() const; inline typed::union_pw_aff at(int pos) const; inline typed::union_set bind(const typed::multi_id &tuple) const; inline typed::union_set bind(const typed::id &id) const; inline typed::union_set bind(const std::string &id) const; inline typed::union_pw_aff coalesce() const; inline typed::union_set domain() const; inline typed::union_pw_aff drop_unused_params() const; inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::union_pw_aff gist(const typed::union_set &context) const; inline typed::union_pw_aff gist(const typed::basic_set &context) const; inline typed::union_pw_aff gist(const typed::point &context) const; inline typed::union_pw_aff gist(const typed::set &context) const; inline typed::multi_union_pw_aff gist_params(const typed::set<> &context) const; inline typed::union_pw_aff intersect_domain(const typed::space &space) const; inline typed::union_pw_aff intersect_domain(const typed::union_set &uset) const; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete; inline typed::union_pw_aff intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete; inline typed::union_pw_aff intersect_params(const typed::set<> &set) const; inline typed::union_pw_aff intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_aff intersect_params(const typed::point<> &set) const; inline typed::union_pw_aff_list list() const; inline typed::multi_union_pw_aff neg() const; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; template inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff &upma) const; template inline typed::union_pw_aff pullback(const typed::multi_aff &upma) const; inline typed::union_pw_aff pullback(const typed::multi_aff &upma) const; template inline typed::union_pw_aff pullback(const typed::pw_multi_aff &upma) const; inline typed::union_pw_aff pullback(const typed::pw_multi_aff &upma) const; template inline typed::union_pw_aff pullback(const typed::union_pw_aff &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_aff &upma) const; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::union_pw_multi_aff range_factor_domain() const = delete; inline typed::union_pw_multi_aff range_factor_range() const = delete; template inline typed::multi_union_pw_aff> range_product(const typed::multi_union_pw_aff &multi2) const; template inline typed::union_pw_multi_aff> range_product(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_union_pw_aff scale(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale(const typed::val &v) const; inline typed::multi_union_pw_aff scale(long v) const; inline typed::multi_union_pw_aff scale_down(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff scale_down(const typed::val &v) const; inline typed::multi_union_pw_aff scale_down(long v) const; inline typed::multi_union_pw_aff set_at(int pos, const typed::union_pw_aff &el) const; template inline typed::multi_union_pw_aff set_range_tuple(const typed::id &id) const; template inline typed::multi_union_pw_aff set_range_tuple(const std::string &id) const; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::multi_union_pw_aff sub(const typed::multi_union_pw_aff &multi2) const; inline typed::union_pw_aff sub(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_aff sub(const typed::aff &upa2) const; inline typed::union_pw_aff sub(const typed::pw_aff &upa2) const; inline typed::union_pw_aff subtract_domain(const typed::space &space) const; inline typed::union_pw_aff subtract_domain(const typed::union_set &uset) const; inline typed::multi_union_pw_aff union_add(const typed::multi_union_pw_aff &mupa2) const; inline typed::union_pw_aff union_add(const typed::union_pw_aff &upa2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_aff union_add(const typed::aff &upa2) const; inline typed::union_pw_aff union_add(const typed::pw_aff &upa2) const; }; template struct union_pw_aff, Anonymous> : public isl::union_pw_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_aff() = default; template {} && std::is_base_of{}, bool>::type = true> union_pw_aff(const union_pw_aff, Anonymous> &obj) : isl::union_pw_aff(obj) {} private: template {}, bool>::type = true> union_pw_aff(const base &obj) : isl::union_pw_aff(obj) {} public: static union_pw_aff from(const isl::union_pw_aff &obj) { return union_pw_aff(obj); } inline /* implicit */ union_pw_aff(const typed::aff, Anonymous> &aff); inline /* implicit */ union_pw_aff(const typed::pw_aff, Anonymous> &pa); inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str); inline typed::multi_union_pw_aff, Anonymous> add(const typed::multi_union_pw_aff, Anonymous> &multi2) const; inline typed::union_pw_aff, Anonymous> add(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> add(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::union_pw_aff, Anonymous> add(const typed::aff, Anonymous> &upa2) const; inline typed::union_pw_aff, Anonymous> add(const typed::pw_aff, Anonymous> &upa2) const; template inline typed::union_pw_multi_aff, Range2> apply(const typed::union_pw_multi_aff &upma2) const; inline typed::multi_union_pw_aff, Anonymous> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Anonymous> as_pw_multi_aff() const; inline typed::union_map, Anonymous> as_union_map() const; inline typed::union_pw_aff, Anonymous> at(int pos) const; inline typed::union_set> bind(const typed::multi_id &tuple) const; inline typed::union_set> bind(const typed::id &id) const; inline typed::union_set> bind(const std::string &id) const; inline typed::union_pw_aff, Anonymous> coalesce() const; inline typed::union_set> domain() const; inline typed::union_pw_aff, Anonymous> drop_unused_params() const; inline typed::pw_multi_aff, Anonymous> extract_pw_multi_aff(const typed::space, Anonymous> &space) const; inline typed::union_pw_aff, Anonymous> gist(const typed::union_set> &context) const; inline typed::union_pw_aff, Anonymous> gist(const typed::basic_set> &context) const; inline typed::union_pw_aff, Anonymous> gist(const typed::point> &context) const; inline typed::union_pw_aff, Anonymous> gist(const typed::set> &context) const; inline typed::multi_union_pw_aff, Anonymous> gist_params(const typed::set<> &context) const; inline typed::union_pw_aff, Anonymous> intersect_domain(const typed::space> &space) const; inline typed::union_pw_aff, Anonymous> intersect_domain(const typed::union_set> &uset) const; inline typed::union_pw_aff, Anonymous> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::union_pw_aff, Anonymous> intersect_domain_wrapped_domain(const typed::basic_set &uset) const; inline typed::union_pw_aff, Anonymous> intersect_domain_wrapped_domain(const typed::point &uset) const; inline typed::union_pw_aff, Anonymous> intersect_domain_wrapped_domain(const typed::set &uset) const; inline typed::union_pw_aff, Anonymous> intersect_params(const typed::set<> &set) const; inline typed::union_pw_aff, Anonymous> intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_aff, Anonymous> intersect_params(const typed::point<> &set) const; inline typed::union_pw_aff_list, Anonymous> list() const; inline typed::multi_union_pw_aff, Anonymous> neg() const; template inline typed::union_pw_multi_aff, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_multi_aff> &upma) const; template inline typed::union_pw_aff pullback(const typed::multi_aff> &upma) const; inline typed::union_pw_aff pullback(const typed::multi_aff> &upma) const; template inline typed::union_pw_aff pullback(const typed::pw_multi_aff> &upma) const; inline typed::union_pw_aff pullback(const typed::pw_multi_aff> &upma) const; template inline typed::union_pw_aff pullback(const typed::union_pw_aff> &upma) const; inline typed::union_pw_aff pullback(const typed::union_pw_aff> &upma) const; inline typed::pw_multi_aff_list, Anonymous> pw_multi_aff_list() const; inline typed::union_pw_multi_aff, Anonymous> range_factor_domain() const = delete; inline typed::union_pw_multi_aff, Anonymous> range_factor_range() const = delete; template inline typed::multi_union_pw_aff, pair> range_product(const typed::multi_union_pw_aff, Range2> &multi2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_multi_aff, Range2> &upma2) const; inline typed::multi_union_pw_aff, Anonymous> scale(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff, Anonymous> scale(const typed::val &v) const; inline typed::multi_union_pw_aff, Anonymous> scale(long v) const; inline typed::multi_union_pw_aff, Anonymous> scale_down(const typed::multi_val &mv) const; inline typed::multi_union_pw_aff, Anonymous> scale_down(const typed::val &v) const; inline typed::multi_union_pw_aff, Anonymous> scale_down(long v) const; inline typed::multi_union_pw_aff, Anonymous> set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const; template inline typed::multi_union_pw_aff, Range2> set_range_tuple(const typed::id &id) const; template inline typed::multi_union_pw_aff, Range2> set_range_tuple(const std::string &id) const; inline typed::space<> space() const; inline typed::space, Anonymous> get_space() const = delete; inline typed::multi_union_pw_aff, Anonymous> sub(const typed::multi_union_pw_aff, Anonymous> &multi2) const; inline typed::union_pw_aff, Anonymous> sub(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> sub(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::union_pw_aff, Anonymous> sub(const typed::aff, Anonymous> &upa2) const; inline typed::union_pw_aff, Anonymous> sub(const typed::pw_aff, Anonymous> &upa2) const; inline typed::union_pw_aff, Anonymous> subtract_domain(const typed::space> &space) const; inline typed::union_pw_aff, Anonymous> subtract_domain(const typed::union_set> &uset) const; inline typed::multi_union_pw_aff, Anonymous> union_add(const typed::multi_union_pw_aff, Anonymous> &mupa2) const; inline typed::union_pw_aff, Anonymous> union_add(const typed::union_pw_aff, Anonymous> &upa2) const; inline typed::union_pw_multi_aff, Anonymous> union_add(const typed::union_pw_multi_aff, Anonymous> &upma2) const; inline typed::union_pw_aff, Anonymous> union_add(const typed::aff, Anonymous> &upa2) const; inline typed::union_pw_aff, Anonymous> union_add(const typed::pw_aff, Anonymous> &upa2) const; }; template <> struct union_pw_aff_list : public isl::union_pw_aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_aff_list() = default; union_pw_aff_list(const isl::union_pw_aff_list &obj) : isl::union_pw_aff_list(obj) {} static union_pw_aff_list from(const isl::union_pw_aff_list &obj) { return union_pw_aff_list(obj); } inline explicit union_pw_aff_list(const isl::ctx &ctx, int n); inline explicit union_pw_aff_list(const typed::union_pw_aff &el); inline explicit union_pw_aff_list(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_aff_list add(const typed::union_pw_aff &el) const; inline typed::union_pw_aff_list add(const typed::aff &el) const; inline typed::union_pw_aff_list add(const typed::pw_aff &el) const; inline typed::union_pw_aff at(int index) const; inline typed::union_pw_aff get_at(int index) const = delete; inline typed::union_pw_aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::union_pw_aff)> &follows, const std::function)> &fn) const; inline typed::union_pw_aff_list set_at(int index, const typed::union_pw_aff &el) const; }; template struct union_pw_aff_list : public isl::union_pw_aff_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_aff_list() = default; template {}, bool>::type = true> union_pw_aff_list(const union_pw_aff_list &obj) : isl::union_pw_aff_list(obj) {} private: template {}, bool>::type = true> union_pw_aff_list(const base &obj) : isl::union_pw_aff_list(obj) {} public: static union_pw_aff_list from(const isl::union_pw_aff_list &obj) { return union_pw_aff_list(obj); } inline explicit union_pw_aff_list(const isl::ctx &ctx, int n); inline explicit union_pw_aff_list(const typed::union_pw_aff &el); inline explicit union_pw_aff_list(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_aff_list add(const typed::union_pw_aff &el) const; inline typed::union_pw_aff_list add(const typed::aff &el) const; inline typed::union_pw_aff_list add(const typed::pw_aff &el) const; inline typed::union_pw_aff at(int index) const; inline typed::union_pw_aff get_at(int index) const = delete; inline typed::union_pw_aff_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::union_pw_aff)> &follows, const std::function)> &fn) const; inline typed::union_pw_aff_list set_at(int index, const typed::union_pw_aff &el) const; }; template struct union_pw_multi_aff : public isl::union_pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_multi_aff() = default; template {}, bool>::type = true> union_pw_multi_aff(const union_pw_multi_aff &obj) : isl::union_pw_multi_aff(obj) {} private: template {}, bool>::type = true> union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {} public: static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) { return union_pw_multi_aff(obj); } inline /* implicit */ union_pw_multi_aff(const typed::multi_aff &ma); inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff &pma); inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff &upa); inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff add(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff add(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_aff &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff apply(const typed::union_pw_aff &upma2) const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_map as_union_map() const = delete; inline typed::union_pw_multi_aff coalesce() const; inline typed::union_set<> domain() const; inline typed::union_pw_multi_aff drop_unused_params() const; static inline typed::union_pw_multi_aff empty(const isl::ctx &ctx); inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::union_pw_multi_aff gist(const typed::union_set<> &context) const; inline typed::union_pw_multi_aff gist(const typed::basic_set<> &context) const; inline typed::union_pw_multi_aff gist(const typed::point<> &context) const; inline typed::union_pw_multi_aff gist(const typed::set<> &context) const; inline typed::union_pw_multi_aff intersect_domain(const typed::space<> &space) const = delete; inline typed::union_pw_multi_aff intersect_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_params(const typed::set<> &set) const; inline typed::union_pw_multi_aff intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_multi_aff intersect_params(const typed::point<> &set) const; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff pullback(const typed::multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff pullback(const typed::pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff pullback(const typed::union_pw_aff<> &upma2) const = delete; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff_list get_pw_multi_aff_list() const = delete; inline typed::union_pw_multi_aff range_factor_domain() const = delete; inline typed::union_pw_multi_aff range_factor_range() const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff range_product(const typed::union_pw_aff<> &upma2) const = delete; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff sub(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff sub(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_aff &upma2) const; inline typed::union_pw_multi_aff subtract_domain(const typed::space<> &space) const = delete; inline typed::union_pw_multi_aff subtract_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff union_add(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff union_add(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_aff &upma2) const; }; template struct union_pw_multi_aff : public isl::union_pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_multi_aff() = default; template {} && std::is_base_of{}, bool>::type = true> union_pw_multi_aff(const union_pw_multi_aff &obj) : isl::union_pw_multi_aff(obj) {} private: template {}, bool>::type = true> union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {} public: static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) { return union_pw_multi_aff(obj); } inline /* implicit */ union_pw_multi_aff(const typed::multi_aff &ma); inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff &pma); inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff &upa); inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_multi_aff add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff add(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff add(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff add(const typed::union_pw_aff &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff apply(const typed::union_pw_aff &upma2) const; inline typed::multi_union_pw_aff as_multi_union_pw_aff() const; inline typed::pw_multi_aff as_pw_multi_aff() const; inline typed::union_map as_union_map() const; inline typed::union_pw_multi_aff coalesce() const; inline typed::union_set domain() const; inline typed::union_pw_multi_aff drop_unused_params() const; static inline typed::union_pw_multi_aff empty(const isl::ctx &ctx); inline typed::pw_multi_aff extract_pw_multi_aff(const typed::space &space) const; inline typed::union_pw_multi_aff gist(const typed::union_set &context) const; inline typed::union_pw_multi_aff gist(const typed::basic_set &context) const; inline typed::union_pw_multi_aff gist(const typed::point &context) const; inline typed::union_pw_multi_aff gist(const typed::set &context) const; inline typed::union_pw_multi_aff intersect_domain(const typed::space &space) const; inline typed::union_pw_multi_aff intersect_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete; inline typed::union_pw_multi_aff intersect_params(const typed::set<> &set) const; inline typed::union_pw_multi_aff intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_multi_aff intersect_params(const typed::point<> &set) const; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_aff &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_aff &upma2) const; inline typed::pw_multi_aff_list pw_multi_aff_list() const; inline typed::pw_multi_aff_list get_pw_multi_aff_list() const = delete; inline typed::union_pw_multi_aff range_factor_domain() const = delete; inline typed::union_pw_multi_aff range_factor_range() const = delete; template inline typed::union_pw_multi_aff> range_product(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff> range_product(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff> range_product(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff> range_product(const typed::union_pw_aff &upma2) const; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::union_pw_multi_aff sub(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff sub(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff sub(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff sub(const typed::union_pw_aff &upma2) const; inline typed::union_pw_multi_aff subtract_domain(const typed::space &space) const; inline typed::union_pw_multi_aff subtract_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff union_add(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff union_add(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff union_add(const typed::union_pw_aff &upma2) const; }; template struct union_pw_multi_aff, Range> : public isl::union_pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> union_pw_multi_aff(const union_pw_multi_aff, Arg3> &obj) : isl::union_pw_multi_aff(obj) {} private: template {}, bool>::type = true> union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {} public: static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) { return union_pw_multi_aff(obj); } inline /* implicit */ union_pw_multi_aff(const typed::multi_aff, Range> &ma); inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff, Range> &pma); inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff, Range> &upa); inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_multi_aff, Range> add(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> add(const typed::multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> add(const typed::pw_multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> add(const typed::union_pw_aff, Range> &upma2) const; template inline typed::union_pw_multi_aff, Range2> apply(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Range2> apply(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Range2> apply(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff, Anonymous> apply(const typed::union_pw_aff &upma2) const; inline typed::multi_union_pw_aff, Range> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, Range> as_pw_multi_aff() const; inline typed::union_map, Range> as_union_map() const; inline typed::union_pw_multi_aff, Range> coalesce() const; inline typed::union_set> domain() const; inline typed::union_pw_multi_aff, Range> drop_unused_params() const; static inline typed::union_pw_multi_aff, Range> empty(const isl::ctx &ctx); inline typed::pw_multi_aff, Range> extract_pw_multi_aff(const typed::space, Range> &space) const; inline typed::union_pw_multi_aff, Range> gist(const typed::union_set> &context) const; inline typed::union_pw_multi_aff, Range> gist(const typed::basic_set> &context) const; inline typed::union_pw_multi_aff, Range> gist(const typed::point> &context) const; inline typed::union_pw_multi_aff, Range> gist(const typed::set> &context) const; inline typed::union_pw_multi_aff, Range> intersect_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, Range> intersect_domain(const typed::union_set> &uset) const; inline typed::union_pw_multi_aff, Range> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff, Range> intersect_domain_wrapped_domain(const typed::basic_set &uset) const; inline typed::union_pw_multi_aff, Range> intersect_domain_wrapped_domain(const typed::point &uset) const; inline typed::union_pw_multi_aff, Range> intersect_domain_wrapped_domain(const typed::set &uset) const; inline typed::union_pw_multi_aff, Range> intersect_params(const typed::set<> &set) const; inline typed::union_pw_multi_aff, Range> intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_multi_aff, Range> intersect_params(const typed::point<> &set) const; template inline typed::union_pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Range> preimage_domain_wrapped_domain(const typed::union_pw_aff &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_multi_aff> &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::multi_aff> &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::multi_aff> &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::pw_multi_aff> &upma2) const; template inline typed::union_pw_multi_aff pullback(const typed::union_pw_aff> &upma2) const; inline typed::union_pw_multi_aff pullback(const typed::union_pw_aff> &upma2) const; inline typed::pw_multi_aff_list, Range> pw_multi_aff_list() const; inline typed::pw_multi_aff_list, Range> get_pw_multi_aff_list() const = delete; inline typed::union_pw_multi_aff, Range> range_factor_domain() const = delete; inline typed::union_pw_multi_aff, Range> range_factor_range() const = delete; template inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_multi_aff, Range2> &upma2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::multi_aff, Range2> &upma2) const; template inline typed::union_pw_multi_aff, pair> range_product(const typed::pw_multi_aff, Range2> &upma2) const; inline typed::union_pw_multi_aff, pair> range_product(const typed::union_pw_aff, Anonymous> &upma2) const; inline typed::space<> space() const; inline typed::space, Range> get_space() const = delete; inline typed::union_pw_multi_aff, Range> sub(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> sub(const typed::multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> sub(const typed::pw_multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> sub(const typed::union_pw_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> subtract_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, Range> subtract_domain(const typed::union_set> &uset) const; inline typed::union_pw_multi_aff, Range> union_add(const typed::union_pw_multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> union_add(const typed::multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> union_add(const typed::pw_multi_aff, Range> &upma2) const; inline typed::union_pw_multi_aff, Range> union_add(const typed::union_pw_aff, Range> &upma2) const; }; template struct union_pw_multi_aff> : public isl::union_pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> union_pw_multi_aff(const union_pw_multi_aff> &obj) : isl::union_pw_multi_aff(obj) {} private: template {}, bool>::type = true> union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {} public: static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) { return union_pw_multi_aff(obj); } inline /* implicit */ union_pw_multi_aff(const typed::multi_aff> &ma); inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff> &pma); inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff> &upa); inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_multi_aff> add(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> add(const typed::multi_aff> &upma2) const; inline typed::union_pw_multi_aff> add(const typed::pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> add(const typed::union_pw_aff> &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::union_pw_multi_aff, Arg3> &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::multi_aff, Arg3> &upma2) const; template inline typed::union_pw_multi_aff apply(const typed::pw_multi_aff, Arg3> &upma2) const; inline typed::union_pw_multi_aff apply(const typed::union_pw_aff, Anonymous> &upma2) const; inline typed::multi_union_pw_aff> as_multi_union_pw_aff() const; inline typed::pw_multi_aff> as_pw_multi_aff() const; inline typed::union_map> as_union_map() const; inline typed::union_pw_multi_aff> coalesce() const; inline typed::union_set domain() const; inline typed::union_pw_multi_aff> drop_unused_params() const; static inline typed::union_pw_multi_aff> empty(const isl::ctx &ctx); inline typed::pw_multi_aff> extract_pw_multi_aff(const typed::space> &space) const; inline typed::union_pw_multi_aff> gist(const typed::union_set &context) const; inline typed::union_pw_multi_aff> gist(const typed::basic_set &context) const; inline typed::union_pw_multi_aff> gist(const typed::point &context) const; inline typed::union_pw_multi_aff> gist(const typed::set &context) const; inline typed::union_pw_multi_aff> intersect_domain(const typed::space &space) const; inline typed::union_pw_multi_aff> intersect_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete; inline typed::union_pw_multi_aff> intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete; inline typed::union_pw_multi_aff> intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete; inline typed::union_pw_multi_aff> intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete; inline typed::union_pw_multi_aff> intersect_params(const typed::set<> &set) const; inline typed::union_pw_multi_aff> intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_multi_aff> intersect_params(const typed::point<> &set) const; inline typed::union_pw_multi_aff> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete; inline typed::union_pw_multi_aff> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::multi_aff &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_aff &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_aff &upma2) const; inline typed::pw_multi_aff_list> pw_multi_aff_list() const; inline typed::pw_multi_aff_list> get_pw_multi_aff_list() const = delete; inline typed::union_pw_multi_aff range_factor_domain() const; inline typed::union_pw_multi_aff range_factor_range() const; template inline typed::union_pw_multi_aff, Arg3>> range_product(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Arg3>> range_product(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff, Arg3>> range_product(const typed::pw_multi_aff &upma2) const; inline typed::union_pw_multi_aff, Anonymous>> range_product(const typed::union_pw_aff &upma2) const; inline typed::space<> space() const; inline typed::space> get_space() const = delete; inline typed::union_pw_multi_aff> sub(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> sub(const typed::multi_aff> &upma2) const; inline typed::union_pw_multi_aff> sub(const typed::pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> sub(const typed::union_pw_aff> &upma2) const; inline typed::union_pw_multi_aff> subtract_domain(const typed::space &space) const; inline typed::union_pw_multi_aff> subtract_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff> union_add(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> union_add(const typed::multi_aff> &upma2) const; inline typed::union_pw_multi_aff> union_add(const typed::pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> union_add(const typed::union_pw_aff> &upma2) const; }; template struct union_pw_multi_aff, pair> : public isl::union_pw_multi_aff { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_pw_multi_aff() = default; template {} && std::is_base_of{} && std::is_base_of{} && std::is_base_of{}, bool>::type = true> union_pw_multi_aff(const union_pw_multi_aff, pair> &obj) : isl::union_pw_multi_aff(obj) {} private: template {}, bool>::type = true> union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {} public: static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) { return union_pw_multi_aff(obj); } inline /* implicit */ union_pw_multi_aff(const typed::multi_aff, pair> &ma); inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff, pair> &pma); inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff, pair> &upa); inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str); inline typed::union_pw_multi_aff, pair> add(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> add(const typed::multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> add(const typed::pw_multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> add(const typed::union_pw_aff, pair> &upma2) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::union_pw_multi_aff, Arg2> &upma2) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::multi_aff, Arg2> &upma2) const; template inline typed::union_pw_multi_aff, Arg2> apply(const typed::pw_multi_aff, Arg2> &upma2) const; inline typed::union_pw_multi_aff, Anonymous> apply(const typed::union_pw_aff, Anonymous> &upma2) const; inline typed::multi_union_pw_aff, pair> as_multi_union_pw_aff() const; inline typed::pw_multi_aff, pair> as_pw_multi_aff() const; inline typed::union_map, pair> as_union_map() const; inline typed::union_pw_multi_aff, pair> coalesce() const; inline typed::union_set> domain() const; inline typed::union_pw_multi_aff, pair> drop_unused_params() const; static inline typed::union_pw_multi_aff, pair> empty(const isl::ctx &ctx); inline typed::pw_multi_aff, pair> extract_pw_multi_aff(const typed::space, pair> &space) const; inline typed::union_pw_multi_aff, pair> gist(const typed::union_set> &context) const; inline typed::union_pw_multi_aff, pair> gist(const typed::basic_set> &context) const; inline typed::union_pw_multi_aff, pair> gist(const typed::point> &context) const; inline typed::union_pw_multi_aff, pair> gist(const typed::set> &context) const; inline typed::union_pw_multi_aff, pair> intersect_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, pair> intersect_domain(const typed::union_set> &uset) const; inline typed::union_pw_multi_aff, pair> intersect_domain_wrapped_domain(const typed::union_set &uset) const; inline typed::union_pw_multi_aff, pair> intersect_domain_wrapped_domain(const typed::basic_set &uset) const; inline typed::union_pw_multi_aff, pair> intersect_domain_wrapped_domain(const typed::point &uset) const; inline typed::union_pw_multi_aff, pair> intersect_domain_wrapped_domain(const typed::set &uset) const; inline typed::union_pw_multi_aff, pair> intersect_params(const typed::set<> &set) const; inline typed::union_pw_multi_aff, pair> intersect_params(const typed::basic_set<> &set) const; inline typed::union_pw_multi_aff, pair> intersect_params(const typed::point<> &set) const; template inline typed::union_pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::multi_aff &upma2) const; template inline typed::union_pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::pw_multi_aff &upma2) const; template inline typed::union_pw_multi_aff, pair> preimage_domain_wrapped_domain(const typed::union_pw_aff &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_multi_aff> &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::multi_aff> &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::multi_aff> &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::pw_multi_aff> &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::pw_multi_aff> &upma2) const; template inline typed::union_pw_multi_aff> pullback(const typed::union_pw_aff> &upma2) const; inline typed::union_pw_multi_aff> pullback(const typed::union_pw_aff> &upma2) const; inline typed::pw_multi_aff_list, pair> pw_multi_aff_list() const; inline typed::pw_multi_aff_list, pair> get_pw_multi_aff_list() const = delete; inline typed::union_pw_multi_aff, Range> range_factor_domain() const; inline typed::union_pw_multi_aff, Range2> range_factor_range() const; template inline typed::union_pw_multi_aff, pair, Arg2>> range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const; template inline typed::union_pw_multi_aff, pair, Arg2>> range_product(const typed::multi_aff, Arg2> &upma2) const; template inline typed::union_pw_multi_aff, pair, Arg2>> range_product(const typed::pw_multi_aff, Arg2> &upma2) const; inline typed::union_pw_multi_aff, pair, Anonymous>> range_product(const typed::union_pw_aff, Anonymous> &upma2) const; inline typed::space<> space() const; inline typed::space, pair> get_space() const = delete; inline typed::union_pw_multi_aff, pair> sub(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> sub(const typed::multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> sub(const typed::pw_multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> sub(const typed::union_pw_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> subtract_domain(const typed::space> &space) const; inline typed::union_pw_multi_aff, pair> subtract_domain(const typed::union_set> &uset) const; inline typed::union_pw_multi_aff, pair> union_add(const typed::union_pw_multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> union_add(const typed::multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> union_add(const typed::pw_multi_aff, pair> &upma2) const; inline typed::union_pw_multi_aff, pair> union_add(const typed::union_pw_aff, pair> &upma2) const; }; template <> struct union_set<> : public isl::union_set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_set() = default; private: template {}, bool>::type = true> union_set(const base &obj) : isl::union_set(obj) {} public: static union_set from(const isl::union_set &obj) { return union_set(obj); } inline /* implicit */ union_set(const typed::basic_set<> &bset); inline /* implicit */ union_set(const typed::point<> &pnt); inline /* implicit */ union_set(const typed::set<> &set); inline explicit union_set(const isl::ctx &ctx, const std::string &str); inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete; inline typed::union_set<> apply(const typed::basic_map<> &umap) const = delete; inline typed::union_set<> apply(const typed::map<> &umap) const = delete; inline typed::set<> as_set() const = delete; inline typed::union_set<> coalesce() const; inline typed::union_set<> detect_equalities() const; inline typed::union_set<> drop_unused_params() const; static inline typed::union_set<> empty(const isl::ctx &ctx); inline bool every_set(const std::function)> &test) const; inline typed::set<> extract_set(const typed::space<> &space) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::union_set<> gist(const typed::union_set<> &context) const; inline typed::union_set<> gist(const typed::basic_set<> &context) const; inline typed::union_set<> gist(const typed::point<> &context) const; inline typed::union_set<> gist(const typed::set<> &context) const; inline typed::union_set<> gist_params(const typed::set<> &set) const = delete; inline typed::union_set<> gist_params(const typed::basic_set<> &set) const = delete; inline typed::union_set<> gist_params(const typed::point<> &set) const = delete; inline typed::union_map<> identity() const = delete; inline typed::union_set<> intersect(const typed::union_set<> &uset2) const; inline typed::union_set<> intersect(const typed::basic_set<> &uset2) const; inline typed::union_set<> intersect(const typed::point<> &uset2) const; inline typed::union_set<> intersect(const typed::set<> &uset2) const; inline typed::union_set<> intersect_params(const typed::set<> &set) const = delete; inline typed::union_set<> intersect_params(const typed::basic_set<> &set) const = delete; inline typed::union_set<> intersect_params(const typed::point<> &set) const = delete; inline typed::union_set<> lexmax() const = delete; inline typed::union_set<> lexmin() const = delete; inline typed::set<> params() const = delete; inline typed::union_set<> preimage(const typed::multi_aff<> &ma) const = delete; inline typed::union_set<> preimage(const typed::pw_multi_aff<> &pma) const = delete; inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete; inline typed::union_set<> project_out_all_params() const; inline typed::set_list<> set_list() const; inline typed::set_list<> get_set_list() const = delete; inline typed::space<> space() const; inline typed::space<> get_space() const = delete; inline typed::union_set<> subtract(const typed::union_set<> &uset2) const; inline typed::union_set<> subtract(const typed::basic_set<> &uset2) const; inline typed::union_set<> subtract(const typed::point<> &uset2) const; inline typed::union_set<> subtract(const typed::set<> &uset2) const; inline typed::union_set<> unite(const typed::union_set<> &uset2) const; inline typed::union_set<> unite(const typed::basic_set<> &uset2) const; inline typed::union_set<> unite(const typed::point<> &uset2) const; inline typed::union_set<> unite(const typed::set<> &uset2) const; inline typed::union_set<> universe() const; inline typed::union_map<> unwrap() const = delete; }; template struct union_set : public isl::union_set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_set() = default; template {}, bool>::type = true> union_set(const union_set &obj) : isl::union_set(obj) {} private: template {}, bool>::type = true> union_set(const base &obj) : isl::union_set(obj) {} public: static union_set from(const isl::union_set &obj) { return union_set(obj); } inline /* implicit */ union_set(const typed::basic_set &bset); inline /* implicit */ union_set(const typed::point &pnt); inline /* implicit */ union_set(const typed::set &set); inline explicit union_set(const isl::ctx &ctx, const std::string &str); template inline typed::union_set apply(const typed::union_map &umap) const; template inline typed::union_set apply(const typed::basic_map &umap) const; template inline typed::union_set apply(const typed::map &umap) const; inline typed::set as_set() const; inline typed::union_set coalesce() const; inline typed::union_set detect_equalities() const; inline typed::union_set drop_unused_params() const; static inline typed::union_set empty(const isl::ctx &ctx); inline bool every_set(const std::function)> &test) const; inline typed::set extract_set(const typed::space &space) const; inline void foreach_point(const std::function)> &fn) const; inline void foreach_set(const std::function)> &fn) const; inline typed::union_set gist(const typed::union_set &context) const; inline typed::union_set gist(const typed::basic_set &context) const; inline typed::union_set gist(const typed::point &context) const; inline typed::union_set gist(const typed::set &context) const; inline typed::union_set gist_params(const typed::set<> &set) const; inline typed::union_set gist_params(const typed::basic_set<> &set) const; inline typed::union_set gist_params(const typed::point<> &set) const; inline typed::union_map identity() const; inline typed::union_set intersect(const typed::union_set &uset2) const; inline typed::union_set intersect(const typed::basic_set &uset2) const; inline typed::union_set intersect(const typed::point &uset2) const; inline typed::union_set intersect(const typed::set &uset2) const; inline typed::union_set intersect_params(const typed::set<> &set) const; inline typed::union_set intersect_params(const typed::basic_set<> &set) const; inline typed::union_set intersect_params(const typed::point<> &set) const; inline typed::union_set lexmax() const; inline typed::union_set lexmin() const; inline typed::set<> params() const; template inline typed::union_set preimage(const typed::multi_aff &ma) const; template inline typed::union_set preimage(const typed::pw_multi_aff &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff &upma) const; inline typed::union_set project_out_all_params() const; inline typed::set_list set_list() const; inline typed::set_list get_set_list() const = delete; inline typed::space<> space() const; inline typed::space get_space() const = delete; inline typed::union_set subtract(const typed::union_set &uset2) const; inline typed::union_set subtract(const typed::basic_set &uset2) const; inline typed::union_set subtract(const typed::point &uset2) const; inline typed::union_set subtract(const typed::set &uset2) const; inline typed::union_set unite(const typed::union_set &uset2) const; inline typed::union_set unite(const typed::basic_set &uset2) const; inline typed::union_set unite(const typed::point &uset2) const; inline typed::union_set unite(const typed::set &uset2) const; inline typed::union_set universe() const; inline typed::union_map unwrap() const = delete; }; template struct union_set> : public isl::union_set { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_set() = default; template {} && std::is_base_of{}, bool>::type = true> union_set(const union_set> &obj) : isl::union_set(obj) {} private: template {}, bool>::type = true> union_set(const base &obj) : isl::union_set(obj) {} public: static union_set from(const isl::union_set &obj) { return union_set(obj); } inline /* implicit */ union_set(const typed::basic_set> &bset); inline /* implicit */ union_set(const typed::point> &pnt); inline /* implicit */ union_set(const typed::set> &set); inline explicit union_set(const isl::ctx &ctx, const std::string &str); template inline typed::union_set apply(const typed::union_map, Arg2> &umap) const; template inline typed::union_set apply(const typed::basic_map, Arg2> &umap) const; template inline typed::union_set apply(const typed::map, Arg2> &umap) const; inline typed::set> as_set() const; inline typed::union_set> coalesce() const; inline typed::union_set> detect_equalities() const; inline typed::union_set> drop_unused_params() const; static inline typed::union_set> empty(const isl::ctx &ctx); inline bool every_set(const std::function>)> &test) const; inline typed::set> extract_set(const typed::space> &space) const; inline void foreach_point(const std::function>)> &fn) const; inline void foreach_set(const std::function>)> &fn) const; inline typed::union_set> gist(const typed::union_set> &context) const; inline typed::union_set> gist(const typed::basic_set> &context) const; inline typed::union_set> gist(const typed::point> &context) const; inline typed::union_set> gist(const typed::set> &context) const; inline typed::union_set> gist_params(const typed::set<> &set) const; inline typed::union_set> gist_params(const typed::basic_set<> &set) const; inline typed::union_set> gist_params(const typed::point<> &set) const; inline typed::union_map, pair> identity() const; inline typed::union_set> intersect(const typed::union_set> &uset2) const; inline typed::union_set> intersect(const typed::basic_set> &uset2) const; inline typed::union_set> intersect(const typed::point> &uset2) const; inline typed::union_set> intersect(const typed::set> &uset2) const; inline typed::union_set> intersect_params(const typed::set<> &set) const; inline typed::union_set> intersect_params(const typed::basic_set<> &set) const; inline typed::union_set> intersect_params(const typed::point<> &set) const; inline typed::union_set> lexmax() const; inline typed::union_set> lexmin() const; inline typed::set<> params() const; template inline typed::union_set preimage(const typed::multi_aff> &ma) const; template inline typed::union_set preimage(const typed::pw_multi_aff> &pma) const; template inline typed::union_set preimage(const typed::union_pw_multi_aff> &upma) const; inline typed::union_set> project_out_all_params() const; inline typed::set_list> set_list() const; inline typed::set_list> get_set_list() const = delete; inline typed::space<> space() const; inline typed::space> get_space() const = delete; inline typed::union_set> subtract(const typed::union_set> &uset2) const; inline typed::union_set> subtract(const typed::basic_set> &uset2) const; inline typed::union_set> subtract(const typed::point> &uset2) const; inline typed::union_set> subtract(const typed::set> &uset2) const; inline typed::union_set> unite(const typed::union_set> &uset2) const; inline typed::union_set> unite(const typed::basic_set> &uset2) const; inline typed::union_set> unite(const typed::point> &uset2) const; inline typed::union_set> unite(const typed::set> &uset2) const; inline typed::union_set> universe() const; inline typed::union_map unwrap() const; }; template <> struct union_set_list<> : public isl::union_set_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_set_list() = default; private: template {}, bool>::type = true> union_set_list(const base &obj) : isl::union_set_list(obj) {} public: static union_set_list from(const isl::union_set_list &obj) { return union_set_list(obj); } inline explicit union_set_list(const isl::ctx &ctx, int n); inline explicit union_set_list(const typed::union_set<> &el); inline explicit union_set_list(const isl::ctx &ctx, const std::string &str); inline typed::union_set_list<> add(const typed::union_set<> &el) const; inline typed::union_set_list<> add(const typed::basic_set<> &el) const; inline typed::union_set_list<> add(const typed::point<> &el) const; inline typed::union_set_list<> add(const typed::set<> &el) const; inline typed::union_set<> at(int index) const = delete; inline typed::union_set<> get_at(int index) const = delete; inline typed::union_set_list<> drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::union_set<>)> &follows, const std::function)> &fn) const; inline typed::union_set_list<> set_at(int index, const typed::union_set<> &el) const = delete; }; template struct union_set_list : public isl::union_set_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; union_set_list() = default; template {}, bool>::type = true> union_set_list(const union_set_list &obj) : isl::union_set_list(obj) {} private: template {}, bool>::type = true> union_set_list(const base &obj) : isl::union_set_list(obj) {} public: static union_set_list from(const isl::union_set_list &obj) { return union_set_list(obj); } inline explicit union_set_list(const isl::ctx &ctx, int n); inline explicit union_set_list(const typed::union_set &el); inline explicit union_set_list(const isl::ctx &ctx, const std::string &str); inline typed::union_set_list add(const typed::union_set &el) const; inline typed::union_set_list add(const typed::basic_set &el) const; inline typed::union_set_list add(const typed::point &el) const; inline typed::union_set_list add(const typed::set &el) const; inline typed::union_set at(int index) const; inline typed::union_set get_at(int index) const = delete; inline typed::union_set_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::union_set)> &follows, const std::function)> &fn) const; inline typed::union_set_list set_at(int index, const typed::union_set &el) const; }; template <> struct val : public isl::val { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; val() = default; val(const isl::val &obj) : isl::val(obj) {} static val from(const isl::val &obj) { return val(obj); } inline explicit val(const isl::ctx &ctx, long i); inline explicit val(const isl::ctx &ctx, const std::string &str); inline typed::val add(const typed::val &v2) const; inline typed::val add(long v2) const; inline typed::val ceil() const; inline long get_den_si() const = delete; inline typed::val floor() const; inline typed::val max(const typed::val &v2) const; inline typed::val max(long v2) const; inline typed::val min(const typed::val &v2) const; inline typed::val min(long v2) const; inline typed::val mod(const typed::val &v2) const; inline typed::val mod(long v2) const; inline typed::val neg() const; inline long get_num_si() const = delete; inline typed::val sub(const typed::val &v2) const; inline typed::val sub(long v2) const; }; template <> struct val_list : public isl::val_list { template friend struct aff; template friend struct aff_list; template friend struct basic_map; template friend struct basic_set; template friend struct fixed_box; template friend struct id; template friend struct id_list; template friend struct map; template friend struct map_list; template friend struct multi_aff; template friend struct multi_id; template friend struct multi_pw_aff; template friend struct multi_union_pw_aff; template friend struct multi_val; template friend struct point; template friend struct pw_aff; template friend struct pw_aff_list; template friend struct pw_multi_aff; template friend struct pw_multi_aff_list; template friend struct set; template friend struct set_list; template friend struct space; template friend struct union_map; template friend struct union_pw_aff; template friend struct union_pw_aff_list; template friend struct union_pw_multi_aff; template friend struct union_set; template friend struct union_set_list; template friend struct val; template friend struct val_list; val_list() = default; val_list(const isl::val_list &obj) : isl::val_list(obj) {} static val_list from(const isl::val_list &obj) { return val_list(obj); } inline explicit val_list(const isl::ctx &ctx, int n); inline explicit val_list(const typed::val &el); inline explicit val_list(const isl::ctx &ctx, const std::string &str); inline typed::val_list add(const typed::val &el) const; inline typed::val_list add(long el) const; inline typed::val at(int index) const; inline typed::val get_at(int index) const = delete; inline typed::val_list drop(unsigned int first, unsigned int n) const; inline void foreach(const std::function)> &fn) const; inline void foreach_scc(const std::function, typed::val)> &follows, const std::function)> &fn) const; inline typed::val_list set_at(int index, const typed::val &el) const; inline typed::val_list set_at(int index, long el) const; }; typed::aff::aff(const isl::ctx &ctx, const std::string &str) : isl::aff(ctx, str) { } typed::aff typed::aff::add(const typed::aff &aff2) const { auto res = isl::aff::add(aff2); return typed::aff(res); } typed::multi_aff typed::aff::add(const typed::multi_aff &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_aff(res); } typed::multi_pw_aff typed::aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_union_pw_aff(res); } typed::pw_aff typed::aff::add(const typed::pw_aff &pwaff2) const { auto res = isl::aff::add(pwaff2); return typed::pw_aff(res); } typed::pw_multi_aff typed::aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::add(pma2); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::aff::add(const typed::union_pw_aff &upa2) const { auto res = isl::aff::add(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::add(upma2); return typed::union_pw_multi_aff(res); } typed::aff typed::aff::add_constant(const typed::val &v) const { auto res = isl::aff::add_constant(v); return typed::aff(res); } typed::aff typed::aff::add_constant(long v) const { auto res = isl::aff::add_constant(v); return typed::aff(res); } typed::multi_aff typed::aff::add_constant(const typed::multi_val &mv) const { auto res = isl::aff::add_constant(mv); return typed::multi_aff(res); } template typed::union_pw_multi_aff typed::aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::apply(upma2); return typed::union_pw_multi_aff(res); } typed::aff typed::aff::as_aff() const { auto res = isl::aff::as_aff(); return typed::aff(res); } typed::multi_aff typed::aff::as_multi_aff() const { auto res = isl::aff::as_multi_aff(); return typed::multi_aff(res); } typed::multi_union_pw_aff typed::aff::as_multi_union_pw_aff() const { auto res = isl::aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } typed::pw_multi_aff typed::aff::as_pw_multi_aff() const { auto res = isl::aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } typed::set typed::aff::as_set() const { auto res = isl::aff::as_set(); return typed::set(res); } typed::aff typed::aff::at(int pos) const { auto res = isl::aff::at(pos); return typed::aff(res); } typed::basic_set<> typed::aff::bind(const typed::id &id) const { auto res = isl::aff::bind(id); return typed::basic_set<>(res); } typed::basic_set<> typed::aff::bind(const std::string &id) const { auto res = isl::aff::bind(id); return typed::basic_set<>(res); } typed::basic_set<> typed::aff::bind(const typed::multi_id &tuple) const { auto res = isl::aff::bind(tuple); return typed::basic_set<>(res); } typed::aff typed::aff::ceil() const { auto res = isl::aff::ceil(); return typed::aff(res); } typed::pw_aff typed::aff::coalesce() const { auto res = isl::aff::coalesce(); return typed::pw_aff(res); } typed::pw_aff typed::aff::cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const { auto res = isl::aff::cond(pwaff_true, pwaff_false); return typed::pw_aff(res); } typed::multi_val typed::aff::constant_multi_val() const { auto res = isl::aff::constant_multi_val(); return typed::multi_val(res); } typed::val typed::aff::constant_val() const { auto res = isl::aff::constant_val(); return typed::val(res); } typed::set<> typed::aff::domain() const { auto res = isl::aff::domain(); return typed::set<>(res); } typed::pw_aff typed::aff::drop_unused_params() const { auto res = isl::aff::drop_unused_params(); return typed::pw_aff(res); } typed::pw_multi_aff typed::aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } typed::aff typed::aff::floor() const { auto res = isl::aff::floor(); return typed::aff(res); } typed::aff typed::aff::gist(const typed::set<> &context) const { auto res = isl::aff::gist(context); return typed::aff(res); } typed::union_pw_aff typed::aff::gist(const typed::union_set<> &context) const { auto res = isl::aff::gist(context); return typed::union_pw_aff(res); } typed::aff typed::aff::gist(const typed::basic_set<> &context) const { auto res = isl::aff::gist(context); return typed::aff(res); } typed::aff typed::aff::gist(const typed::point<> &context) const { auto res = isl::aff::gist(context); return typed::aff(res); } typed::aff typed::aff::gist_params(const typed::set<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff(res); } typed::aff typed::aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff(res); } typed::aff typed::aff::gist_params(const typed::point<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff(res); } typed::multi_aff typed::aff::identity() const { auto res = isl::aff::identity(); return typed::multi_aff(res); } template typed::pw_aff typed::aff::insert_domain(const typed::space &domain) const { auto res = isl::aff::insert_domain(domain); return typed::pw_aff(res); } typed::pw_aff typed::aff::intersect_params(const typed::set<> &set) const { auto res = isl::aff::intersect_params(set); return typed::pw_aff(res); } typed::aff_list typed::aff::list() const { auto res = isl::aff::list(); return typed::aff_list(res); } typed::multi_pw_aff typed::aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::max(multi2); return typed::multi_pw_aff(res); } typed::pw_aff typed::aff::max(const typed::pw_aff &pwaff2) const { auto res = isl::aff::max(pwaff2); return typed::pw_aff(res); } typed::multi_val typed::aff::max_multi_val() const { auto res = isl::aff::max_multi_val(); return typed::multi_val(res); } typed::val typed::aff::max_val() const { auto res = isl::aff::max_val(); return typed::val(res); } typed::multi_pw_aff typed::aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::min(multi2); return typed::multi_pw_aff(res); } typed::pw_aff typed::aff::min(const typed::pw_aff &pwaff2) const { auto res = isl::aff::min(pwaff2); return typed::pw_aff(res); } typed::multi_val typed::aff::min_multi_val() const { auto res = isl::aff::min_multi_val(); return typed::multi_val(res); } typed::val typed::aff::min_val() const { auto res = isl::aff::min_val(); return typed::val(res); } typed::aff typed::aff::mod(const typed::val &mod) const { auto res = isl::aff::mod(mod); return typed::aff(res); } typed::aff typed::aff::mod(long mod) const { auto res = isl::aff::mod(mod); return typed::aff(res); } typed::aff typed::aff::neg() const { auto res = isl::aff::neg(); return typed::aff(res); } typed::set<> typed::aff::params() const { auto res = isl::aff::params(); return typed::set<>(res); } template typed::multi_aff> typed::aff::product(const typed::multi_aff &multi2) const { auto res = isl::aff::product(multi2); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::product(multi2); return typed::multi_pw_aff>(res); } template typed::pw_multi_aff> typed::aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::product(pma2); return typed::pw_multi_aff>(res); } typed::pw_multi_aff_list typed::aff::pw_multi_aff_list() const { auto res = isl::aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } typed::aff typed::aff::scale(const typed::val &v) const { auto res = isl::aff::scale(v); return typed::aff(res); } typed::aff typed::aff::scale(long v) const { auto res = isl::aff::scale(v); return typed::aff(res); } typed::multi_aff typed::aff::scale(const typed::multi_val &mv) const { auto res = isl::aff::scale(mv); return typed::multi_aff(res); } typed::aff typed::aff::scale_down(const typed::val &v) const { auto res = isl::aff::scale_down(v); return typed::aff(res); } typed::aff typed::aff::scale_down(long v) const { auto res = isl::aff::scale_down(v); return typed::aff(res); } typed::multi_aff typed::aff::scale_down(const typed::multi_val &mv) const { auto res = isl::aff::scale_down(mv); return typed::multi_aff(res); } typed::multi_aff typed::aff::set_at(int pos, const typed::aff &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_aff(res); } typed::multi_pw_aff typed::aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template typed::multi_aff typed::aff::set_range_tuple(const typed::id &id) const { auto res = isl::aff::set_range_tuple(id); return typed::multi_aff(res); } template typed::multi_aff typed::aff::set_range_tuple(const std::string &id) const { auto res = isl::aff::set_range_tuple(id); return typed::multi_aff(res); } typed::space typed::aff::space() const { auto res = isl::aff::space(); return typed::space(res); } typed::aff typed::aff::sub(const typed::aff &aff2) const { auto res = isl::aff::sub(aff2); return typed::aff(res); } typed::multi_aff typed::aff::sub(const typed::multi_aff &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_aff(res); } typed::multi_pw_aff typed::aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_union_pw_aff(res); } typed::pw_aff typed::aff::sub(const typed::pw_aff &pwaff2) const { auto res = isl::aff::sub(pwaff2); return typed::pw_aff(res); } typed::pw_multi_aff typed::aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::sub(pma2); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::aff::sub(const typed::union_pw_aff &upa2) const { auto res = isl::aff::sub(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::sub(upma2); return typed::union_pw_multi_aff(res); } typed::multi_pw_aff typed::aff::to_multi_pw_aff() const { auto res = isl::aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::aff::to_multi_union_pw_aff() const { auto res = isl::aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } typed::pw_multi_aff typed::aff::to_pw_multi_aff() const { auto res = isl::aff::to_pw_multi_aff(); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::aff::to_union_pw_aff() const { auto res = isl::aff::to_union_pw_aff(); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::aff::to_union_pw_multi_aff() const { auto res = isl::aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::aff typed::aff::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::aff::unbind_params_insert_domain(domain); return typed::aff(res); } typed::multi_pw_aff typed::aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::aff::union_add(mpa2); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } typed::pw_aff typed::aff::union_add(const typed::pw_aff &pwaff2) const { auto res = isl::aff::union_add(pwaff2); return typed::pw_aff(res); } typed::pw_multi_aff typed::aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::union_add(pma2); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::aff::union_add(const typed::union_pw_aff &upa2) const { auto res = isl::aff::union_add(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::aff::aff(const isl::ctx &ctx, const std::string &str) : isl::aff(ctx, str) { } template typed::aff typed::aff::add(const typed::aff &aff2) const { auto res = isl::aff::add(aff2); return typed::aff(res); } template typed::multi_aff typed::aff::add(const typed::multi_aff &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_aff typed::aff::add(const typed::pw_aff &pwaff2) const { auto res = isl::aff::add(pwaff2); return typed::pw_aff(res); } template typed::pw_multi_aff typed::aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::aff::add(const typed::union_pw_aff &upa2) const { auto res = isl::aff::add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::aff typed::aff::add_constant(const typed::val &v) const { auto res = isl::aff::add_constant(v); return typed::aff(res); } template typed::aff typed::aff::add_constant(long v) const { auto res = isl::aff::add_constant(v); return typed::aff(res); } template typed::multi_aff typed::aff::add_constant(const typed::multi_val &mv) const { auto res = isl::aff::add_constant(mv); return typed::multi_aff(res); } template template typed::union_pw_multi_aff typed::aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::aff typed::aff::as_aff() const { auto res = isl::aff::as_aff(); return typed::aff(res); } template typed::map typed::aff::as_map() const { auto res = isl::aff::as_map(); return typed::map(res); } template typed::multi_aff typed::aff::as_multi_aff() const { auto res = isl::aff::as_multi_aff(); return typed::multi_aff(res); } template typed::multi_union_pw_aff typed::aff::as_multi_union_pw_aff() const { auto res = isl::aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::aff::as_pw_multi_aff() const { auto res = isl::aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_map typed::aff::as_union_map() const { auto res = isl::aff::as_union_map(); return typed::union_map(res); } template typed::aff typed::aff::at(int pos) const { auto res = isl::aff::at(pos); return typed::aff(res); } template typed::basic_set typed::aff::bind(const typed::id &id) const { auto res = isl::aff::bind(id); return typed::basic_set(res); } template typed::basic_set typed::aff::bind(const std::string &id) const { auto res = isl::aff::bind(id); return typed::basic_set(res); } template typed::basic_set typed::aff::bind(const typed::multi_id &tuple) const { auto res = isl::aff::bind(tuple); return typed::basic_set(res); } template typed::pw_aff typed::aff::bind_domain(const typed::multi_id &tuple) const { auto res = isl::aff::bind_domain(tuple); return typed::pw_aff(res); } template typed::aff typed::aff::ceil() const { auto res = isl::aff::ceil(); return typed::aff(res); } template typed::pw_aff typed::aff::coalesce() const { auto res = isl::aff::coalesce(); return typed::pw_aff(res); } template typed::pw_aff typed::aff::cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const { auto res = isl::aff::cond(pwaff_true, pwaff_false); return typed::pw_aff(res); } template typed::multi_val typed::aff::constant_multi_val() const { auto res = isl::aff::constant_multi_val(); return typed::multi_val(res); } template typed::val typed::aff::constant_val() const { auto res = isl::aff::constant_val(); return typed::val(res); } template typed::set typed::aff::domain() const { auto res = isl::aff::domain(); return typed::set(res); } template typed::pw_aff typed::aff::drop_unused_params() const { auto res = isl::aff::drop_unused_params(); return typed::pw_aff(res); } template typed::pw_multi_aff typed::aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::aff typed::aff::floor() const { auto res = isl::aff::floor(); return typed::aff(res); } template typed::set typed::aff::ge_set(const typed::aff &aff2) const { auto res = isl::aff::ge_set(aff2); return typed::set(res); } template typed::set typed::aff::ge_set(const typed::pw_aff &pwaff2) const { auto res = isl::aff::ge_set(pwaff2); return typed::set(res); } template typed::aff typed::aff::gist(const typed::set &context) const { auto res = isl::aff::gist(context); return typed::aff(res); } template typed::union_pw_aff typed::aff::gist(const typed::union_set &context) const { auto res = isl::aff::gist(context); return typed::union_pw_aff(res); } template typed::aff typed::aff::gist(const typed::basic_set &context) const { auto res = isl::aff::gist(context); return typed::aff(res); } template typed::aff typed::aff::gist(const typed::point &context) const { auto res = isl::aff::gist(context); return typed::aff(res); } template typed::aff typed::aff::gist_params(const typed::set<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff(res); } template typed::aff typed::aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff(res); } template typed::aff typed::aff::gist_params(const typed::point<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff(res); } template typed::set typed::aff::gt_set(const typed::aff &aff2) const { auto res = isl::aff::gt_set(aff2); return typed::set(res); } template typed::set typed::aff::gt_set(const typed::pw_aff &pwaff2) const { auto res = isl::aff::gt_set(pwaff2); return typed::set(res); } template typed::multi_aff typed::aff::identity() const { auto res = isl::aff::identity(); return typed::multi_aff(res); } template typed::pw_aff typed::aff::intersect_domain(const typed::set &set) const { auto res = isl::aff::intersect_domain(set); return typed::pw_aff(res); } template typed::union_pw_aff typed::aff::intersect_domain(const typed::space &space) const { auto res = isl::aff::intersect_domain(space); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::aff::intersect_domain(uset); return typed::union_pw_aff(res); } template typed::pw_aff typed::aff::intersect_params(const typed::set<> &set) const { auto res = isl::aff::intersect_params(set); return typed::pw_aff(res); } template typed::set typed::aff::le_set(const typed::aff &aff2) const { auto res = isl::aff::le_set(aff2); return typed::set(res); } template typed::set typed::aff::le_set(const typed::pw_aff &pwaff2) const { auto res = isl::aff::le_set(pwaff2); return typed::set(res); } template typed::aff_list typed::aff::list() const { auto res = isl::aff::list(); return typed::aff_list(res); } template typed::set typed::aff::lt_set(const typed::aff &aff2) const { auto res = isl::aff::lt_set(aff2); return typed::set(res); } template typed::set typed::aff::lt_set(const typed::pw_aff &pwaff2) const { auto res = isl::aff::lt_set(pwaff2); return typed::set(res); } template typed::multi_pw_aff typed::aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::max(multi2); return typed::multi_pw_aff(res); } template typed::pw_aff typed::aff::max(const typed::pw_aff &pwaff2) const { auto res = isl::aff::max(pwaff2); return typed::pw_aff(res); } template typed::multi_val typed::aff::max_multi_val() const { auto res = isl::aff::max_multi_val(); return typed::multi_val(res); } template typed::val typed::aff::max_val() const { auto res = isl::aff::max_val(); return typed::val(res); } template typed::multi_pw_aff typed::aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::min(multi2); return typed::multi_pw_aff(res); } template typed::pw_aff typed::aff::min(const typed::pw_aff &pwaff2) const { auto res = isl::aff::min(pwaff2); return typed::pw_aff(res); } template typed::multi_val typed::aff::min_multi_val() const { auto res = isl::aff::min_multi_val(); return typed::multi_val(res); } template typed::val typed::aff::min_val() const { auto res = isl::aff::min_val(); return typed::val(res); } template typed::aff typed::aff::mod(const typed::val &mod) const { auto res = isl::aff::mod(mod); return typed::aff(res); } template typed::aff typed::aff::mod(long mod) const { auto res = isl::aff::mod(mod); return typed::aff(res); } template typed::aff typed::aff::neg() const { auto res = isl::aff::neg(); return typed::aff(res); } template typed::set<> typed::aff::params() const { auto res = isl::aff::params(); return typed::set<>(res); } template template typed::multi_aff, pair> typed::aff::product(const typed::multi_aff &multi2) const { auto res = isl::aff::product(multi2); return typed::multi_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::aff typed::aff::pullback(const typed::multi_aff &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template typed::aff typed::aff::pullback(const typed::multi_aff &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template template typed::pw_aff typed::aff::pullback(const typed::multi_pw_aff &mpa) const { auto res = isl::aff::pullback(mpa); return typed::pw_aff(res); } template typed::pw_aff typed::aff::pullback(const typed::multi_pw_aff &mpa) const { auto res = isl::aff::pullback(mpa); return typed::pw_aff(res); } template template typed::pw_aff typed::aff::pullback(const typed::pw_multi_aff &pma) const { auto res = isl::aff::pullback(pma); return typed::pw_aff(res); } template typed::pw_aff typed::aff::pullback(const typed::pw_multi_aff &pma) const { auto res = isl::aff::pullback(pma); return typed::pw_aff(res); } template template typed::union_pw_aff typed::aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::aff typed::aff::pullback(const typed::aff &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template typed::aff typed::aff::pullback(const typed::aff &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template typed::pw_multi_aff_list typed::aff::pw_multi_aff_list() const { auto res = isl::aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template template typed::multi_aff> typed::aff::range_product(const typed::multi_aff &multi2) const { auto res = isl::aff::range_product(multi2); return typed::multi_aff>(res); } template template typed::multi_pw_aff> typed::aff::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template template typed::pw_multi_aff> typed::aff::range_product(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::range_product(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::aff::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template typed::aff typed::aff::scale(const typed::val &v) const { auto res = isl::aff::scale(v); return typed::aff(res); } template typed::aff typed::aff::scale(long v) const { auto res = isl::aff::scale(v); return typed::aff(res); } template typed::multi_aff typed::aff::scale(const typed::multi_val &mv) const { auto res = isl::aff::scale(mv); return typed::multi_aff(res); } template typed::aff typed::aff::scale_down(const typed::val &v) const { auto res = isl::aff::scale_down(v); return typed::aff(res); } template typed::aff typed::aff::scale_down(long v) const { auto res = isl::aff::scale_down(v); return typed::aff(res); } template typed::multi_aff typed::aff::scale_down(const typed::multi_val &mv) const { auto res = isl::aff::scale_down(mv); return typed::multi_aff(res); } template typed::multi_aff typed::aff::set_at(int pos, const typed::aff &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_aff(res); } template typed::multi_pw_aff typed::aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_aff typed::aff::set_range_tuple(const typed::id &id) const { auto res = isl::aff::set_range_tuple(id); return typed::multi_aff(res); } template template typed::multi_aff typed::aff::set_range_tuple(const std::string &id) const { auto res = isl::aff::set_range_tuple(id); return typed::multi_aff(res); } template typed::space typed::aff::space() const { auto res = isl::aff::space(); return typed::space(res); } template typed::aff typed::aff::sub(const typed::aff &aff2) const { auto res = isl::aff::sub(aff2); return typed::aff(res); } template typed::multi_aff typed::aff::sub(const typed::multi_aff &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_aff typed::aff::sub(const typed::pw_aff &pwaff2) const { auto res = isl::aff::sub(pwaff2); return typed::pw_aff(res); } template typed::pw_multi_aff typed::aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::aff::sub(const typed::union_pw_aff &upa2) const { auto res = isl::aff::sub(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_aff typed::aff::subtract_domain(const typed::set &set) const { auto res = isl::aff::subtract_domain(set); return typed::pw_aff(res); } template typed::union_pw_aff typed::aff::subtract_domain(const typed::space &space) const { auto res = isl::aff::subtract_domain(space); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::aff::subtract_domain(const typed::union_set &uset) const { auto res = isl::aff::subtract_domain(uset); return typed::union_pw_aff(res); } template typed::multi_pw_aff typed::aff::to_multi_pw_aff() const { auto res = isl::aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::aff::to_multi_union_pw_aff() const { auto res = isl::aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::aff::to_pw_multi_aff() const { auto res = isl::aff::to_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::aff::to_union_pw_aff() const { auto res = isl::aff::to_union_pw_aff(); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::aff::to_union_pw_multi_aff() const { auto res = isl::aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::multi_pw_aff typed::aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::pw_aff typed::aff::union_add(const typed::pw_aff &pwaff2) const { auto res = isl::aff::union_add(pwaff2); return typed::pw_aff(res); } template typed::pw_multi_aff typed::aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::aff::union_add(const typed::union_pw_aff &upa2) const { auto res = isl::aff::union_add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::aff, Anonymous>::aff(const isl::ctx &ctx, const std::string &str) : isl::aff(ctx, str) { } template typed::aff, Anonymous> typed::aff, Anonymous>::add(const typed::aff, Anonymous> &aff2) const { auto res = isl::aff::add(aff2); return typed::aff, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::add(const typed::multi_aff, Anonymous> &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::add(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::aff, Anonymous>::add(const typed::multi_union_pw_aff, Anonymous> &multi2) const { auto res = isl::aff::add(multi2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::add(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::add(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::add(const typed::pw_multi_aff, Anonymous> &pma2) const { auto res = isl::aff::add(pma2); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::add(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::aff::add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::aff, Anonymous>::add(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::aff::add(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::add_constant(const typed::val &v) const { auto res = isl::aff::add_constant(v); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::add_constant(long v) const { auto res = isl::aff::add_constant(v); return typed::aff, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::add_constant(const typed::multi_val &mv) const { auto res = isl::aff::add_constant(mv); return typed::multi_aff, Anonymous>(res); } template template typed::union_pw_multi_aff, Arg1> typed::aff, Anonymous>::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::apply(upma2); return typed::union_pw_multi_aff, Arg1>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::as_aff() const { auto res = isl::aff::as_aff(); return typed::aff, Anonymous>(res); } template typed::map, Anonymous> typed::aff, Anonymous>::as_map() const { auto res = isl::aff::as_map(); return typed::map, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::as_multi_aff() const { auto res = isl::aff::as_multi_aff(); return typed::multi_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::aff, Anonymous>::as_multi_union_pw_aff() const { auto res = isl::aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::as_pw_multi_aff() const { auto res = isl::aff::as_pw_multi_aff(); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_map, Anonymous> typed::aff, Anonymous>::as_union_map() const { auto res = isl::aff::as_union_map(); return typed::union_map, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::at(int pos) const { auto res = isl::aff::at(pos); return typed::aff, Anonymous>(res); } template typed::basic_set> typed::aff, Anonymous>::bind(const typed::id &id) const { auto res = isl::aff::bind(id); return typed::basic_set>(res); } template typed::basic_set> typed::aff, Anonymous>::bind(const std::string &id) const { auto res = isl::aff::bind(id); return typed::basic_set>(res); } template typed::basic_set> typed::aff, Anonymous>::bind(const typed::multi_id &tuple) const { auto res = isl::aff::bind(tuple); return typed::basic_set>(res); } template typed::pw_aff typed::aff, Anonymous>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::aff::bind_domain(tuple); return typed::pw_aff(res); } template typed::pw_aff typed::aff, Anonymous>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::aff::bind_domain_wrapped_domain(tuple); return typed::pw_aff(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::ceil() const { auto res = isl::aff::ceil(); return typed::aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::coalesce() const { auto res = isl::aff::coalesce(); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::cond(const typed::pw_aff, Anonymous> &pwaff_true, const typed::pw_aff, Anonymous> &pwaff_false) const { auto res = isl::aff::cond(pwaff_true, pwaff_false); return typed::pw_aff, Anonymous>(res); } template typed::multi_val typed::aff, Anonymous>::constant_multi_val() const { auto res = isl::aff::constant_multi_val(); return typed::multi_val(res); } template typed::val typed::aff, Anonymous>::constant_val() const { auto res = isl::aff::constant_val(); return typed::val(res); } template typed::set> typed::aff, Anonymous>::domain() const { auto res = isl::aff::domain(); return typed::set>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::domain_reverse() const { auto res = isl::aff::domain_reverse(); return typed::aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::drop_unused_params() const { auto res = isl::aff::drop_unused_params(); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::extract_pw_multi_aff(const typed::space, Anonymous> &space) const { auto res = isl::aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::floor() const { auto res = isl::aff::floor(); return typed::aff, Anonymous>(res); } template typed::set> typed::aff, Anonymous>::ge_set(const typed::aff, Anonymous> &aff2) const { auto res = isl::aff::ge_set(aff2); return typed::set>(res); } template typed::set> typed::aff, Anonymous>::ge_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::ge_set(pwaff2); return typed::set>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::gist(const typed::set> &context) const { auto res = isl::aff::gist(context); return typed::aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::gist(const typed::union_set> &context) const { auto res = isl::aff::gist(context); return typed::union_pw_aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::gist(const typed::basic_set> &context) const { auto res = isl::aff::gist(context); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::gist(const typed::point> &context) const { auto res = isl::aff::gist(context); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::gist_params(const typed::set<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::gist_params(const typed::basic_set<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::gist_params(const typed::point<> &context) const { auto res = isl::aff::gist_params(context); return typed::aff, Anonymous>(res); } template typed::set> typed::aff, Anonymous>::gt_set(const typed::aff, Anonymous> &aff2) const { auto res = isl::aff::gt_set(aff2); return typed::set>(res); } template typed::set> typed::aff, Anonymous>::gt_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::gt_set(pwaff2); return typed::set>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::identity() const { auto res = isl::aff::identity(); return typed::multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::intersect_domain(const typed::set> &set) const { auto res = isl::aff::intersect_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::intersect_domain(const typed::space> &space) const { auto res = isl::aff::intersect_domain(space); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::aff::intersect_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::intersect_params(const typed::set<> &set) const { auto res = isl::aff::intersect_params(set); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::aff, Anonymous>::le_set(const typed::aff, Anonymous> &aff2) const { auto res = isl::aff::le_set(aff2); return typed::set>(res); } template typed::set> typed::aff, Anonymous>::le_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::le_set(pwaff2); return typed::set>(res); } template typed::aff_list, Anonymous> typed::aff, Anonymous>::list() const { auto res = isl::aff::list(); return typed::aff_list, Anonymous>(res); } template typed::set> typed::aff, Anonymous>::lt_set(const typed::aff, Anonymous> &aff2) const { auto res = isl::aff::lt_set(aff2); return typed::set>(res); } template typed::set> typed::aff, Anonymous>::lt_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::lt_set(pwaff2); return typed::set>(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::max(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::aff::max(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::max(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::max(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::multi_val typed::aff, Anonymous>::max_multi_val() const { auto res = isl::aff::max_multi_val(); return typed::multi_val(res); } template typed::val typed::aff, Anonymous>::max_val() const { auto res = isl::aff::max_val(); return typed::val(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::min(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::aff::min(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::min(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::min(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::multi_val typed::aff, Anonymous>::min_multi_val() const { auto res = isl::aff::min_multi_val(); return typed::multi_val(res); } template typed::val typed::aff, Anonymous>::min_val() const { auto res = isl::aff::min_val(); return typed::val(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::mod(const typed::val &mod) const { auto res = isl::aff::mod(mod); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::mod(long mod) const { auto res = isl::aff::mod(mod); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::neg() const { auto res = isl::aff::neg(); return typed::aff, Anonymous>(res); } template typed::set<> typed::aff, Anonymous>::params() const { auto res = isl::aff::params(); return typed::set<>(res); } template template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, Anonymous>(res); } template template typed::union_pw_multi_aff, Anonymous> typed::aff, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template template typed::multi_aff, Arg1>, pair> typed::aff, Anonymous>::product(const typed::multi_aff &multi2) const { auto res = isl::aff::product(multi2); return typed::multi_aff, Arg1>, pair>(res); } template template typed::multi_pw_aff, Arg1>, pair> typed::aff, Anonymous>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::aff::product(multi2); return typed::multi_pw_aff, Arg1>, pair>(res); } template template typed::pw_multi_aff, Arg1>, pair> typed::aff, Anonymous>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::aff::product(pma2); return typed::pw_multi_aff, Arg1>, pair>(res); } template template typed::aff typed::aff, Anonymous>::pullback(const typed::multi_aff> &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template typed::aff typed::aff, Anonymous>::pullback(const typed::multi_aff> &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template template typed::pw_aff typed::aff, Anonymous>::pullback(const typed::multi_pw_aff> &mpa) const { auto res = isl::aff::pullback(mpa); return typed::pw_aff(res); } template typed::pw_aff typed::aff, Anonymous>::pullback(const typed::multi_pw_aff> &mpa) const { auto res = isl::aff::pullback(mpa); return typed::pw_aff(res); } template template typed::pw_aff typed::aff, Anonymous>::pullback(const typed::pw_multi_aff> &pma) const { auto res = isl::aff::pullback(pma); return typed::pw_aff(res); } template typed::pw_aff typed::aff, Anonymous>::pullback(const typed::pw_multi_aff> &pma) const { auto res = isl::aff::pullback(pma); return typed::pw_aff(res); } template template typed::union_pw_aff typed::aff, Anonymous>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::aff, Anonymous>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::aff typed::aff, Anonymous>::pullback(const typed::aff> &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template typed::aff typed::aff, Anonymous>::pullback(const typed::aff> &ma) const { auto res = isl::aff::pullback(ma); return typed::aff(res); } template typed::pw_multi_aff_list, Anonymous> typed::aff, Anonymous>::pw_multi_aff_list() const { auto res = isl::aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, Anonymous>(res); } template template typed::multi_aff, pair> typed::aff, Anonymous>::range_product(const typed::multi_aff, Arg1> &multi2) const { auto res = isl::aff::range_product(multi2); return typed::multi_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::aff, Anonymous>::range_product(const typed::multi_pw_aff, Arg1> &multi2) const { auto res = isl::aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_union_pw_aff, pair> typed::aff, Anonymous>::range_product(const typed::multi_union_pw_aff, Arg1> &multi2) const { auto res = isl::aff::range_product(multi2); return typed::multi_union_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::aff, Anonymous>::range_product(const typed::pw_multi_aff, Arg1> &pma2) const { auto res = isl::aff::range_product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::aff, Anonymous>::range_product(const typed::union_pw_multi_aff, Arg1> &upma2) const { auto res = isl::aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::scale(const typed::val &v) const { auto res = isl::aff::scale(v); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::scale(long v) const { auto res = isl::aff::scale(v); return typed::aff, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::scale(const typed::multi_val &mv) const { auto res = isl::aff::scale(mv); return typed::multi_aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::scale_down(const typed::val &v) const { auto res = isl::aff::scale_down(v); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::scale_down(long v) const { auto res = isl::aff::scale_down(v); return typed::aff, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::scale_down(const typed::multi_val &mv) const { auto res = isl::aff::scale_down(mv); return typed::multi_aff, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::set_at(int pos, const typed::aff, Anonymous> &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::aff, Anonymous>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::aff::set_at(pos, el); return typed::multi_union_pw_aff, Anonymous>(res); } template template typed::multi_aff, Arg1> typed::aff, Anonymous>::set_range_tuple(const typed::id &id) const { auto res = isl::aff::set_range_tuple(id); return typed::multi_aff, Arg1>(res); } template template typed::multi_aff, Arg1> typed::aff, Anonymous>::set_range_tuple(const std::string &id) const { auto res = isl::aff::set_range_tuple(id); return typed::multi_aff, Arg1>(res); } template typed::space, Anonymous> typed::aff, Anonymous>::space() const { auto res = isl::aff::space(); return typed::space, Anonymous>(res); } template typed::aff, Anonymous> typed::aff, Anonymous>::sub(const typed::aff, Anonymous> &aff2) const { auto res = isl::aff::sub(aff2); return typed::aff, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::multi_aff, Anonymous> &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::multi_union_pw_aff, Anonymous> &multi2) const { auto res = isl::aff::sub(multi2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::sub(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::pw_multi_aff, Anonymous> &pma2) const { auto res = isl::aff::sub(pma2); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::aff::sub(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::aff, Anonymous>::sub(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::aff::sub(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::subtract_domain(const typed::set> &set) const { auto res = isl::aff::subtract_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::subtract_domain(const typed::space> &space) const { auto res = isl::aff::subtract_domain(space); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::aff::subtract_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::to_multi_pw_aff() const { auto res = isl::aff::to_multi_pw_aff(); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::aff, Anonymous>::to_multi_union_pw_aff() const { auto res = isl::aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::to_pw_multi_aff() const { auto res = isl::aff::to_pw_multi_aff(); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::to_union_pw_aff() const { auto res = isl::aff::to_union_pw_aff(); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::aff, Anonymous>::to_union_pw_multi_aff() const { auto res = isl::aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::aff, Anonymous>::union_add(const typed::multi_pw_aff, Anonymous> &mpa2) const { auto res = isl::aff::union_add(mpa2); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::aff, Anonymous>::union_add(const typed::multi_union_pw_aff, Anonymous> &mupa2) const { auto res = isl::aff::union_add(mupa2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::aff, Anonymous>::union_add(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::aff::union_add(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::aff, Anonymous>::union_add(const typed::pw_multi_aff, Anonymous> &pma2) const { auto res = isl::aff::union_add(pma2); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::aff, Anonymous>::union_add(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::aff::union_add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::aff, Anonymous>::union_add(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::aff::union_add(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } typed::aff_list::aff_list(const isl::ctx &ctx, int n) : isl::aff_list(ctx, n) { } typed::aff_list::aff_list(const typed::aff &el) : isl::aff_list(el) { } typed::aff_list::aff_list(const isl::ctx &ctx, const std::string &str) : isl::aff_list(ctx, str) { } typed::aff_list typed::aff_list::add(const typed::aff &el) const { auto res = isl::aff_list::add(el); return typed::aff_list(res); } typed::aff typed::aff_list::at(int index) const { auto res = isl::aff_list::at(index); return typed::aff(res); } typed::aff_list typed::aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::aff_list::drop(first, n); return typed::aff_list(res); } void typed::aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::aff arg0) { return fn(typed::aff(arg0)); }; return isl::aff_list::foreach(lambda_fn); } void typed::aff_list::foreach_scc(const std::function, typed::aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::aff arg0, isl::aff arg1) { return follows(typed::aff(arg0), typed::aff(arg1)); }; auto lambda_fn = [&] (isl::aff_list arg0) { return fn(typed::aff_list(arg0)); }; return isl::aff_list::foreach_scc(lambda_follows, lambda_fn); } typed::aff_list typed::aff_list::set_at(int index, const typed::aff &el) const { auto res = isl::aff_list::set_at(index, el); return typed::aff_list(res); } template typed::aff_list::aff_list(const isl::ctx &ctx, int n) : isl::aff_list(ctx, n) { } template typed::aff_list::aff_list(const typed::aff &el) : isl::aff_list(el) { } template typed::aff_list::aff_list(const isl::ctx &ctx, const std::string &str) : isl::aff_list(ctx, str) { } template typed::aff_list typed::aff_list::add(const typed::aff &el) const { auto res = isl::aff_list::add(el); return typed::aff_list(res); } template typed::aff typed::aff_list::at(int index) const { auto res = isl::aff_list::at(index); return typed::aff(res); } template typed::aff_list typed::aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::aff_list::drop(first, n); return typed::aff_list(res); } template void typed::aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::aff arg0) { return fn(typed::aff(arg0)); }; return isl::aff_list::foreach(lambda_fn); } template void typed::aff_list::foreach_scc(const std::function, typed::aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::aff arg0, isl::aff arg1) { return follows(typed::aff(arg0), typed::aff(arg1)); }; auto lambda_fn = [&] (isl::aff_list arg0) { return fn(typed::aff_list(arg0)); }; return isl::aff_list::foreach_scc(lambda_follows, lambda_fn); } template typed::aff_list typed::aff_list::set_at(int index, const typed::aff &el) const { auto res = isl::aff_list::set_at(index, el); return typed::aff_list(res); } template typed::basic_map::basic_map(const isl::ctx &ctx, const std::string &str) : isl::basic_map(ctx, str) { } template template typed::basic_map typed::basic_map::apply_domain(const typed::basic_map &bmap2) const { auto res = isl::basic_map::apply_domain(bmap2); return typed::basic_map(res); } template template typed::map typed::basic_map::apply_domain(const typed::map &map2) const { auto res = isl::basic_map::apply_domain(map2); return typed::map(res); } template template typed::union_map typed::basic_map::apply_domain(const typed::union_map &umap2) const { auto res = isl::basic_map::apply_domain(umap2); return typed::union_map(res); } template template typed::basic_map typed::basic_map::apply_range(const typed::basic_map &bmap2) const { auto res = isl::basic_map::apply_range(bmap2); return typed::basic_map(res); } template template typed::map typed::basic_map::apply_range(const typed::map &map2) const { auto res = isl::basic_map::apply_range(map2); return typed::map(res); } template template typed::union_map typed::basic_map::apply_range(const typed::union_map &umap2) const { auto res = isl::basic_map::apply_range(umap2); return typed::union_map(res); } template typed::map typed::basic_map::as_map() const { auto res = isl::basic_map::as_map(); return typed::map(res); } template typed::multi_union_pw_aff typed::basic_map::as_multi_union_pw_aff() const { auto res = isl::basic_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::basic_map::as_pw_multi_aff() const { auto res = isl::basic_map::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::basic_map::as_union_pw_multi_aff() const { auto res = isl::basic_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::set typed::basic_map::bind_domain(const typed::multi_id &tuple) const { auto res = isl::basic_map::bind_domain(tuple); return typed::set(res); } template typed::set typed::basic_map::bind_range(const typed::multi_id &tuple) const { auto res = isl::basic_map::bind_range(tuple); return typed::set(res); } template typed::map typed::basic_map::coalesce() const { auto res = isl::basic_map::coalesce(); return typed::map(res); } template typed::basic_map typed::basic_map::detect_equalities() const { auto res = isl::basic_map::detect_equalities(); return typed::basic_map(res); } template typed::set typed::basic_map::domain() const { auto res = isl::basic_map::domain(); return typed::set(res); } template typed::union_map, Domain> typed::basic_map::domain_map() const { auto res = isl::basic_map::domain_map(); return typed::union_map, Domain>(res); } template typed::union_pw_multi_aff, Domain> typed::basic_map::domain_map_union_pw_multi_aff() const { auto res = isl::basic_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Domain>(res); } template template typed::map, Range> typed::basic_map::domain_product(const typed::map &map2) const { auto res = isl::basic_map::domain_product(map2); return typed::map, Range>(res); } template template typed::union_map, Range> typed::basic_map::domain_product(const typed::union_map &umap2) const { auto res = isl::basic_map::domain_product(umap2); return typed::union_map, Range>(res); } template typed::map typed::basic_map::drop_unused_params() const { auto res = isl::basic_map::drop_unused_params(); return typed::map(res); } template bool typed::basic_map::every_map(const std::function)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map(arg0)); }; return isl::basic_map::every_map(lambda_test); } template typed::map typed::basic_map::extract_map(const typed::space &space) const { auto res = isl::basic_map::extract_map(space); return typed::map(res); } template void typed::basic_map::foreach_basic_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map(arg0)); }; return isl::basic_map::foreach_basic_map(lambda_fn); } template void typed::basic_map::foreach_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::basic_map::foreach_map(lambda_fn); } template typed::basic_map typed::basic_map::gist(const typed::basic_map &context) const { auto res = isl::basic_map::gist(context); return typed::basic_map(res); } template typed::map typed::basic_map::gist(const typed::map &context) const { auto res = isl::basic_map::gist(context); return typed::map(res); } template typed::union_map typed::basic_map::gist(const typed::union_map &context) const { auto res = isl::basic_map::gist(context); return typed::union_map(res); } template typed::map typed::basic_map::gist_domain(const typed::set &context) const { auto res = isl::basic_map::gist_domain(context); return typed::map(res); } template typed::union_map typed::basic_map::gist_domain(const typed::union_set &uset) const { auto res = isl::basic_map::gist_domain(uset); return typed::union_map(res); } template typed::map typed::basic_map::gist_params(const typed::set<> &context) const { auto res = isl::basic_map::gist_params(context); return typed::map(res); } template typed::basic_map typed::basic_map::intersect(const typed::basic_map &bmap2) const { auto res = isl::basic_map::intersect(bmap2); return typed::basic_map(res); } template typed::map typed::basic_map::intersect(const typed::map &map2) const { auto res = isl::basic_map::intersect(map2); return typed::map(res); } template typed::union_map typed::basic_map::intersect(const typed::union_map &umap2) const { auto res = isl::basic_map::intersect(umap2); return typed::union_map(res); } template typed::basic_map typed::basic_map::intersect_domain(const typed::basic_set &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map(res); } template typed::map typed::basic_map::intersect_domain(const typed::set &set) const { auto res = isl::basic_map::intersect_domain(set); return typed::map(res); } template typed::union_map typed::basic_map::intersect_domain(const typed::space &space) const { auto res = isl::basic_map::intersect_domain(space); return typed::union_map(res); } template typed::union_map typed::basic_map::intersect_domain(const typed::union_set &uset) const { auto res = isl::basic_map::intersect_domain(uset); return typed::union_map(res); } template typed::basic_map typed::basic_map::intersect_domain(const typed::point &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map(res); } template typed::map typed::basic_map::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_map::intersect_params(params); return typed::map(res); } template typed::basic_map typed::basic_map::intersect_range(const typed::basic_set &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map(res); } template typed::map typed::basic_map::intersect_range(const typed::set &set) const { auto res = isl::basic_map::intersect_range(set); return typed::map(res); } template typed::union_map typed::basic_map::intersect_range(const typed::space &space) const { auto res = isl::basic_map::intersect_range(space); return typed::union_map(res); } template typed::union_map typed::basic_map::intersect_range(const typed::union_set &uset) const { auto res = isl::basic_map::intersect_range(uset); return typed::union_map(res); } template typed::basic_map typed::basic_map::intersect_range(const typed::point &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map(res); } template typed::map typed::basic_map::lexmax() const { auto res = isl::basic_map::lexmax(); return typed::map(res); } template typed::pw_multi_aff typed::basic_map::lexmax_pw_multi_aff() const { auto res = isl::basic_map::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::basic_map::lexmin() const { auto res = isl::basic_map::lexmin(); return typed::map(res); } template typed::pw_multi_aff typed::basic_map::lexmin_pw_multi_aff() const { auto res = isl::basic_map::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::basic_map::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::basic_map::lower_bound(lower); return typed::map(res); } template typed::map_list typed::basic_map::map_list() const { auto res = isl::basic_map::map_list(); return typed::map_list(res); } template typed::multi_pw_aff typed::basic_map::max_multi_pw_aff() const { auto res = isl::basic_map::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::basic_map::min_multi_pw_aff() const { auto res = isl::basic_map::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::set<> typed::basic_map::params() const { auto res = isl::basic_map::params(); return typed::set<>(res); } template template typed::map typed::basic_map::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::basic_map::preimage_domain(ma); return typed::map(res); } template template typed::map typed::basic_map::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::preimage_domain(mpa); return typed::map(res); } template template typed::map typed::basic_map::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::basic_map::preimage_domain(pma); return typed::map(res); } template template typed::union_map typed::basic_map::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_map::preimage_domain(upma); return typed::union_map(res); } template template typed::map typed::basic_map::preimage_range(const typed::multi_aff &ma) const { auto res = isl::basic_map::preimage_range(ma); return typed::map(res); } template template typed::map typed::basic_map::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::basic_map::preimage_range(pma); return typed::map(res); } template template typed::union_map typed::basic_map::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_map::preimage_range(upma); return typed::union_map(res); } template template typed::map, pair> typed::basic_map::product(const typed::map &map2) const { auto res = isl::basic_map::product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::basic_map::product(const typed::union_map &umap2) const { auto res = isl::basic_map::product(umap2); return typed::union_map, pair>(res); } template typed::map typed::basic_map::project_out_all_params() const { auto res = isl::basic_map::project_out_all_params(); return typed::map(res); } template typed::map typed::basic_map::project_out_param(const typed::id &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map(res); } template typed::map typed::basic_map::project_out_param(const std::string &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map(res); } template typed::map typed::basic_map::project_out_param(const typed::id_list &list) const { auto res = isl::basic_map::project_out_param(list); return typed::map(res); } template typed::set typed::basic_map::range() const { auto res = isl::basic_map::range(); return typed::set(res); } template typed::fixed_box typed::basic_map::range_lattice_tile() const { auto res = isl::basic_map::range_lattice_tile(); return typed::fixed_box(res); } template typed::union_map, Range> typed::basic_map::range_map() const { auto res = isl::basic_map::range_map(); return typed::union_map, Range>(res); } template template typed::map> typed::basic_map::range_product(const typed::map &map2) const { auto res = isl::basic_map::range_product(map2); return typed::map>(res); } template template typed::union_map> typed::basic_map::range_product(const typed::union_map &umap2) const { auto res = isl::basic_map::range_product(umap2); return typed::union_map>(res); } template typed::fixed_box typed::basic_map::range_simple_fixed_box_hull() const { auto res = isl::basic_map::range_simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::basic_map typed::basic_map::reverse() const { auto res = isl::basic_map::reverse(); return typed::basic_map(res); } template template typed::map typed::basic_map::set_domain_tuple(const typed::id &id) const { auto res = isl::basic_map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::basic_map::set_domain_tuple(const std::string &id) const { auto res = isl::basic_map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::basic_map::set_range_tuple(const typed::id &id) const { auto res = isl::basic_map::set_range_tuple(id); return typed::map(res); } template template typed::map typed::basic_map::set_range_tuple(const std::string &id) const { auto res = isl::basic_map::set_range_tuple(id); return typed::map(res); } template typed::space typed::basic_map::space() const { auto res = isl::basic_map::space(); return typed::space(res); } template typed::map typed::basic_map::subtract(const typed::map &map2) const { auto res = isl::basic_map::subtract(map2); return typed::map(res); } template typed::union_map typed::basic_map::subtract(const typed::union_map &umap2) const { auto res = isl::basic_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::basic_map::subtract_domain(const typed::union_set &dom) const { auto res = isl::basic_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::basic_map::subtract_range(const typed::union_set &dom) const { auto res = isl::basic_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::basic_map::to_union_map() const { auto res = isl::basic_map::to_union_map(); return typed::union_map(res); } template typed::map typed::basic_map::unite(const typed::basic_map &bmap2) const { auto res = isl::basic_map::unite(bmap2); return typed::map(res); } template typed::map typed::basic_map::unite(const typed::map &map2) const { auto res = isl::basic_map::unite(map2); return typed::map(res); } template typed::union_map typed::basic_map::unite(const typed::union_map &umap2) const { auto res = isl::basic_map::unite(umap2); return typed::union_map(res); } template typed::map typed::basic_map::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::basic_map::upper_bound(upper); return typed::map(res); } template typed::set> typed::basic_map::wrap() const { auto res = isl::basic_map::wrap(); return typed::set>(res); } template typed::basic_map, Range2>::basic_map(const isl::ctx &ctx, const std::string &str) : isl::basic_map(ctx, str) { } template template typed::basic_map typed::basic_map, Range2>::apply_domain(const typed::basic_map, Domain2> &bmap2) const { auto res = isl::basic_map::apply_domain(bmap2); return typed::basic_map(res); } template template typed::map typed::basic_map, Range2>::apply_domain(const typed::map, Domain2> &map2) const { auto res = isl::basic_map::apply_domain(map2); return typed::map(res); } template template typed::union_map typed::basic_map, Range2>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::basic_map::apply_domain(umap2); return typed::union_map(res); } template template typed::basic_map, Arg3> typed::basic_map, Range2>::apply_range(const typed::basic_map &bmap2) const { auto res = isl::basic_map::apply_range(bmap2); return typed::basic_map, Arg3>(res); } template template typed::map, Arg3> typed::basic_map, Range2>::apply_range(const typed::map &map2) const { auto res = isl::basic_map::apply_range(map2); return typed::map, Arg3>(res); } template template typed::union_map, Arg3> typed::basic_map, Range2>::apply_range(const typed::union_map &umap2) const { auto res = isl::basic_map::apply_range(umap2); return typed::union_map, Arg3>(res); } template typed::map, Range2> typed::basic_map, Range2>::as_map() const { auto res = isl::basic_map::as_map(); return typed::map, Range2>(res); } template typed::multi_union_pw_aff, Range2> typed::basic_map, Range2>::as_multi_union_pw_aff() const { auto res = isl::basic_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range2>(res); } template typed::pw_multi_aff, Range2> typed::basic_map, Range2>::as_pw_multi_aff() const { auto res = isl::basic_map::as_pw_multi_aff(); return typed::pw_multi_aff, Range2>(res); } template typed::union_pw_multi_aff, Range2> typed::basic_map, Range2>::as_union_pw_multi_aff() const { auto res = isl::basic_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range2>(res); } template typed::set typed::basic_map, Range2>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::basic_map::bind_domain(tuple); return typed::set(res); } template typed::set> typed::basic_map, Range2>::bind_range(const typed::multi_id &tuple) const { auto res = isl::basic_map::bind_range(tuple); return typed::set>(res); } template typed::map, Range2> typed::basic_map, Range2>::coalesce() const { auto res = isl::basic_map::coalesce(); return typed::map, Range2>(res); } template typed::map> typed::basic_map, Range2>::curry() const { auto res = isl::basic_map::curry(); return typed::map>(res); } template typed::basic_map, Range2> typed::basic_map, Range2>::detect_equalities() const { auto res = isl::basic_map::detect_equalities(); return typed::basic_map, Range2>(res); } template typed::set> typed::basic_map, Range2>::domain() const { auto res = isl::basic_map::domain(); return typed::set>(res); } template typed::map typed::basic_map, Range2>::domain_factor_domain() const { auto res = isl::basic_map::domain_factor_domain(); return typed::map(res); } template typed::map typed::basic_map, Range2>::domain_factor_range() const { auto res = isl::basic_map::domain_factor_range(); return typed::map(res); } template typed::union_map, Range2>, pair> typed::basic_map, Range2>::domain_map() const { auto res = isl::basic_map::domain_map(); return typed::union_map, Range2>, pair>(res); } template typed::union_pw_multi_aff, Range2>, pair> typed::basic_map, Range2>::domain_map_union_pw_multi_aff() const { auto res = isl::basic_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range2>, pair>(res); } template template typed::map, Domain2>, Range2> typed::basic_map, Range2>::domain_product(const typed::map &map2) const { auto res = isl::basic_map::domain_product(map2); return typed::map, Domain2>, Range2>(res); } template template typed::union_map, Domain2>, Range2> typed::basic_map, Range2>::domain_product(const typed::union_map &umap2) const { auto res = isl::basic_map::domain_product(umap2); return typed::union_map, Domain2>, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::domain_reverse() const { auto res = isl::basic_map::domain_reverse(); return typed::map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::drop_unused_params() const { auto res = isl::basic_map::drop_unused_params(); return typed::map, Range2>(res); } template bool typed::basic_map, Range2>::every_map(const std::function, Range2>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, Range2>(arg0)); }; return isl::basic_map::every_map(lambda_test); } template typed::map, Range2> typed::basic_map, Range2>::extract_map(const typed::space, Range2> &space) const { auto res = isl::basic_map::extract_map(space); return typed::map, Range2>(res); } template typed::basic_map typed::basic_map, Range2>::flatten_domain() const { auto res = isl::basic_map::flatten_domain(); return typed::basic_map(res); } template void typed::basic_map, Range2>::foreach_basic_map(const std::function, Range2>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map, Range2>(arg0)); }; return isl::basic_map::foreach_basic_map(lambda_fn); } template void typed::basic_map, Range2>::foreach_map(const std::function, Range2>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, Range2>(arg0)); }; return isl::basic_map::foreach_map(lambda_fn); } template typed::basic_map, Range2> typed::basic_map, Range2>::gist(const typed::basic_map, Range2> &context) const { auto res = isl::basic_map::gist(context); return typed::basic_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::gist(const typed::map, Range2> &context) const { auto res = isl::basic_map::gist(context); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::gist(const typed::union_map, Range2> &context) const { auto res = isl::basic_map::gist(context); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::gist_domain(const typed::set> &context) const { auto res = isl::basic_map::gist_domain(context); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::gist_domain(const typed::union_set> &uset) const { auto res = isl::basic_map::gist_domain(uset); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::gist_params(const typed::set<> &context) const { auto res = isl::basic_map::gist_params(context); return typed::map, Range2>(res); } template typed::basic_map, Range2> typed::basic_map, Range2>::intersect(const typed::basic_map, Range2> &bmap2) const { auto res = isl::basic_map::intersect(bmap2); return typed::basic_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::intersect(const typed::map, Range2> &map2) const { auto res = isl::basic_map::intersect(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::intersect(const typed::union_map, Range2> &umap2) const { auto res = isl::basic_map::intersect(umap2); return typed::union_map, Range2>(res); } template typed::basic_map, Range2> typed::basic_map, Range2>::intersect_domain(const typed::basic_set> &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::intersect_domain(const typed::set> &set) const { auto res = isl::basic_map::intersect_domain(set); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::intersect_domain(const typed::space> &space) const { auto res = isl::basic_map::intersect_domain(space); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::basic_map::intersect_domain(uset); return typed::union_map, Range2>(res); } template typed::basic_map, Range2> typed::basic_map, Range2>::intersect_domain(const typed::point> &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::basic_map::intersect_domain_wrapped_domain(domain); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::basic_map::intersect_domain_wrapped_domain(domain); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_map::intersect_params(params); return typed::map, Range2>(res); } template typed::basic_map, Range2> typed::basic_map, Range2>::intersect_range(const typed::basic_set &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::intersect_range(const typed::set &set) const { auto res = isl::basic_map::intersect_range(set); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::intersect_range(const typed::space &space) const { auto res = isl::basic_map::intersect_range(space); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::intersect_range(const typed::union_set &uset) const { auto res = isl::basic_map::intersect_range(uset); return typed::union_map, Range2>(res); } template typed::basic_map, Range2> typed::basic_map, Range2>::intersect_range(const typed::point &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::lexmax() const { auto res = isl::basic_map::lexmax(); return typed::map, Range2>(res); } template typed::pw_multi_aff, Range2> typed::basic_map, Range2>::lexmax_pw_multi_aff() const { auto res = isl::basic_map::lexmax_pw_multi_aff(); return typed::pw_multi_aff, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::lexmin() const { auto res = isl::basic_map::lexmin(); return typed::map, Range2>(res); } template typed::pw_multi_aff, Range2> typed::basic_map, Range2>::lexmin_pw_multi_aff() const { auto res = isl::basic_map::lexmin_pw_multi_aff(); return typed::pw_multi_aff, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::lower_bound(const typed::multi_pw_aff, Range2> &lower) const { auto res = isl::basic_map::lower_bound(lower); return typed::map, Range2>(res); } template typed::map_list, Range2> typed::basic_map, Range2>::map_list() const { auto res = isl::basic_map::map_list(); return typed::map_list, Range2>(res); } template typed::multi_pw_aff, Range2> typed::basic_map, Range2>::max_multi_pw_aff() const { auto res = isl::basic_map::max_multi_pw_aff(); return typed::multi_pw_aff, Range2>(res); } template typed::multi_pw_aff, Range2> typed::basic_map, Range2>::min_multi_pw_aff() const { auto res = isl::basic_map::min_multi_pw_aff(); return typed::multi_pw_aff, Range2>(res); } template typed::set<> typed::basic_map, Range2>::params() const { auto res = isl::basic_map::params(); return typed::set<>(res); } template template typed::map typed::basic_map, Range2>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::basic_map::preimage_domain(ma); return typed::map(res); } template template typed::map typed::basic_map, Range2>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::basic_map::preimage_domain(mpa); return typed::map(res); } template template typed::map typed::basic_map, Range2>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_map::preimage_domain(pma); return typed::map(res); } template template typed::union_map typed::basic_map, Range2>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_map::preimage_domain(upma); return typed::union_map(res); } template template typed::map, Arg3> typed::basic_map, Range2>::preimage_range(const typed::multi_aff &ma) const { auto res = isl::basic_map::preimage_range(ma); return typed::map, Arg3>(res); } template template typed::map, Arg3> typed::basic_map, Range2>::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::basic_map::preimage_range(pma); return typed::map, Arg3>(res); } template template typed::union_map, Arg3> typed::basic_map, Range2>::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_map::preimage_range(upma); return typed::union_map, Arg3>(res); } template template typed::map, Domain2>, pair> typed::basic_map, Range2>::product(const typed::map &map2) const { auto res = isl::basic_map::product(map2); return typed::map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::basic_map, Range2>::product(const typed::union_map &umap2) const { auto res = isl::basic_map::product(umap2); return typed::union_map, Domain2>, pair>(res); } template typed::map, Range2> typed::basic_map, Range2>::project_out_all_params() const { auto res = isl::basic_map::project_out_all_params(); return typed::map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::project_out_param(const typed::id &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::project_out_param(const std::string &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::project_out_param(const typed::id_list &list) const { auto res = isl::basic_map::project_out_param(list); return typed::map, Range2>(res); } template typed::set typed::basic_map, Range2>::range() const { auto res = isl::basic_map::range(); return typed::set(res); } template typed::fixed_box, Range2> typed::basic_map, Range2>::range_lattice_tile() const { auto res = isl::basic_map::range_lattice_tile(); return typed::fixed_box, Range2>(res); } template typed::union_map, Range2>, Range2> typed::basic_map, Range2>::range_map() const { auto res = isl::basic_map::range_map(); return typed::union_map, Range2>, Range2>(res); } template template typed::map, pair> typed::basic_map, Range2>::range_product(const typed::map, Arg3> &map2) const { auto res = isl::basic_map::range_product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::basic_map, Range2>::range_product(const typed::union_map, Arg3> &umap2) const { auto res = isl::basic_map::range_product(umap2); return typed::union_map, pair>(res); } template typed::fixed_box, Range2> typed::basic_map, Range2>::range_simple_fixed_box_hull() const { auto res = isl::basic_map::range_simple_fixed_box_hull(); return typed::fixed_box, Range2>(res); } template typed::basic_map> typed::basic_map, Range2>::reverse() const { auto res = isl::basic_map::reverse(); return typed::basic_map>(res); } template template typed::map, Arg2> typed::basic_map, Range2>::set_range_tuple(const typed::id &id) const { auto res = isl::basic_map::set_range_tuple(id); return typed::map, Arg2>(res); } template template typed::map, Arg2> typed::basic_map, Range2>::set_range_tuple(const std::string &id) const { auto res = isl::basic_map::set_range_tuple(id); return typed::map, Arg2>(res); } template typed::space, Range2> typed::basic_map, Range2>::space() const { auto res = isl::basic_map::space(); return typed::space, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::subtract(const typed::map, Range2> &map2) const { auto res = isl::basic_map::subtract(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::subtract(const typed::union_map, Range2> &umap2) const { auto res = isl::basic_map::subtract(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::basic_map::subtract_domain(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::subtract_range(const typed::union_set &dom) const { auto res = isl::basic_map::subtract_range(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::to_union_map() const { auto res = isl::basic_map::to_union_map(); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::unite(const typed::basic_map, Range2> &bmap2) const { auto res = isl::basic_map::unite(bmap2); return typed::map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::unite(const typed::map, Range2> &map2) const { auto res = isl::basic_map::unite(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::basic_map, Range2>::unite(const typed::union_map, Range2> &umap2) const { auto res = isl::basic_map::unite(umap2); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::basic_map, Range2>::upper_bound(const typed::multi_pw_aff, Range2> &upper) const { auto res = isl::basic_map::upper_bound(upper); return typed::map, Range2>(res); } template typed::set, Range2>> typed::basic_map, Range2>::wrap() const { auto res = isl::basic_map::wrap(); return typed::set, Range2>>(res); } template typed::basic_map::basic_map(const isl::ctx &ctx, const std::string &str) : isl::basic_map(ctx, str) { } template template typed::basic_map typed::basic_map::apply_domain(const typed::basic_map &bmap2) const { auto res = isl::basic_map::apply_domain(bmap2); return typed::basic_map(res); } template template typed::map typed::basic_map::apply_domain(const typed::map &map2) const { auto res = isl::basic_map::apply_domain(map2); return typed::map(res); } template template typed::union_map typed::basic_map::apply_domain(const typed::union_map &umap2) const { auto res = isl::basic_map::apply_domain(umap2); return typed::union_map(res); } template template typed::basic_map typed::basic_map::apply_range(const typed::basic_map &bmap2) const { auto res = isl::basic_map::apply_range(bmap2); return typed::basic_map(res); } template template typed::map typed::basic_map::apply_range(const typed::map &map2) const { auto res = isl::basic_map::apply_range(map2); return typed::map(res); } template template typed::union_map typed::basic_map::apply_range(const typed::union_map &umap2) const { auto res = isl::basic_map::apply_range(umap2); return typed::union_map(res); } template typed::map typed::basic_map::as_map() const { auto res = isl::basic_map::as_map(); return typed::map(res); } template typed::multi_union_pw_aff typed::basic_map::as_multi_union_pw_aff() const { auto res = isl::basic_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::basic_map::as_pw_multi_aff() const { auto res = isl::basic_map::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::basic_map::as_union_pw_multi_aff() const { auto res = isl::basic_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::set typed::basic_map::bind_domain(const typed::multi_id &tuple) const { auto res = isl::basic_map::bind_domain(tuple); return typed::set(res); } template typed::set typed::basic_map::bind_range(const typed::multi_id &tuple) const { auto res = isl::basic_map::bind_range(tuple); return typed::set(res); } template typed::map typed::basic_map::coalesce() const { auto res = isl::basic_map::coalesce(); return typed::map(res); } template typed::basic_set typed::basic_map::deltas() const { auto res = isl::basic_map::deltas(); return typed::basic_set(res); } template typed::basic_map typed::basic_map::detect_equalities() const { auto res = isl::basic_map::detect_equalities(); return typed::basic_map(res); } template typed::set typed::basic_map::domain() const { auto res = isl::basic_map::domain(); return typed::set(res); } template typed::union_map, Domain> typed::basic_map::domain_map() const { auto res = isl::basic_map::domain_map(); return typed::union_map, Domain>(res); } template typed::union_pw_multi_aff, Domain> typed::basic_map::domain_map_union_pw_multi_aff() const { auto res = isl::basic_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Domain>(res); } template template typed::map, Domain> typed::basic_map::domain_product(const typed::map &map2) const { auto res = isl::basic_map::domain_product(map2); return typed::map, Domain>(res); } template template typed::union_map, Domain> typed::basic_map::domain_product(const typed::union_map &umap2) const { auto res = isl::basic_map::domain_product(umap2); return typed::union_map, Domain>(res); } template typed::map typed::basic_map::drop_unused_params() const { auto res = isl::basic_map::drop_unused_params(); return typed::map(res); } template template typed::map typed::basic_map::eq_at(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::eq_at(mpa); return typed::map(res); } template template typed::union_map typed::basic_map::eq_at(const typed::multi_union_pw_aff &mupa) const { auto res = isl::basic_map::eq_at(mupa); return typed::union_map(res); } template bool typed::basic_map::every_map(const std::function)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map(arg0)); }; return isl::basic_map::every_map(lambda_test); } template typed::map typed::basic_map::extract_map(const typed::space &space) const { auto res = isl::basic_map::extract_map(space); return typed::map(res); } template void typed::basic_map::foreach_basic_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map(arg0)); }; return isl::basic_map::foreach_basic_map(lambda_fn); } template void typed::basic_map::foreach_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::basic_map::foreach_map(lambda_fn); } template typed::basic_map typed::basic_map::gist(const typed::basic_map &context) const { auto res = isl::basic_map::gist(context); return typed::basic_map(res); } template typed::map typed::basic_map::gist(const typed::map &context) const { auto res = isl::basic_map::gist(context); return typed::map(res); } template typed::union_map typed::basic_map::gist(const typed::union_map &context) const { auto res = isl::basic_map::gist(context); return typed::union_map(res); } template typed::map typed::basic_map::gist_domain(const typed::set &context) const { auto res = isl::basic_map::gist_domain(context); return typed::map(res); } template typed::union_map typed::basic_map::gist_domain(const typed::union_set &uset) const { auto res = isl::basic_map::gist_domain(uset); return typed::union_map(res); } template typed::map typed::basic_map::gist_params(const typed::set<> &context) const { auto res = isl::basic_map::gist_params(context); return typed::map(res); } template typed::basic_map typed::basic_map::intersect(const typed::basic_map &bmap2) const { auto res = isl::basic_map::intersect(bmap2); return typed::basic_map(res); } template typed::map typed::basic_map::intersect(const typed::map &map2) const { auto res = isl::basic_map::intersect(map2); return typed::map(res); } template typed::union_map typed::basic_map::intersect(const typed::union_map &umap2) const { auto res = isl::basic_map::intersect(umap2); return typed::union_map(res); } template typed::basic_map typed::basic_map::intersect_domain(const typed::basic_set &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map(res); } template typed::map typed::basic_map::intersect_domain(const typed::set &set) const { auto res = isl::basic_map::intersect_domain(set); return typed::map(res); } template typed::union_map typed::basic_map::intersect_domain(const typed::space &space) const { auto res = isl::basic_map::intersect_domain(space); return typed::union_map(res); } template typed::union_map typed::basic_map::intersect_domain(const typed::union_set &uset) const { auto res = isl::basic_map::intersect_domain(uset); return typed::union_map(res); } template typed::basic_map typed::basic_map::intersect_domain(const typed::point &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map(res); } template typed::map typed::basic_map::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_map::intersect_params(params); return typed::map(res); } template typed::basic_map typed::basic_map::intersect_range(const typed::basic_set &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map(res); } template typed::map typed::basic_map::intersect_range(const typed::set &set) const { auto res = isl::basic_map::intersect_range(set); return typed::map(res); } template typed::union_map typed::basic_map::intersect_range(const typed::space &space) const { auto res = isl::basic_map::intersect_range(space); return typed::union_map(res); } template typed::union_map typed::basic_map::intersect_range(const typed::union_set &uset) const { auto res = isl::basic_map::intersect_range(uset); return typed::union_map(res); } template typed::basic_map typed::basic_map::intersect_range(const typed::point &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map(res); } template template typed::map typed::basic_map::lex_ge_at(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::lex_ge_at(mpa); return typed::map(res); } template template typed::map typed::basic_map::lex_gt_at(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::lex_gt_at(mpa); return typed::map(res); } template template typed::map typed::basic_map::lex_le_at(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::lex_le_at(mpa); return typed::map(res); } template template typed::map typed::basic_map::lex_lt_at(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::lex_lt_at(mpa); return typed::map(res); } template typed::map typed::basic_map::lexmax() const { auto res = isl::basic_map::lexmax(); return typed::map(res); } template typed::pw_multi_aff typed::basic_map::lexmax_pw_multi_aff() const { auto res = isl::basic_map::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::basic_map::lexmin() const { auto res = isl::basic_map::lexmin(); return typed::map(res); } template typed::pw_multi_aff typed::basic_map::lexmin_pw_multi_aff() const { auto res = isl::basic_map::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::basic_map::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::basic_map::lower_bound(lower); return typed::map(res); } template typed::map_list typed::basic_map::map_list() const { auto res = isl::basic_map::map_list(); return typed::map_list(res); } template typed::multi_pw_aff typed::basic_map::max_multi_pw_aff() const { auto res = isl::basic_map::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::basic_map::min_multi_pw_aff() const { auto res = isl::basic_map::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::set<> typed::basic_map::params() const { auto res = isl::basic_map::params(); return typed::set<>(res); } template template typed::map typed::basic_map::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::basic_map::preimage_domain(ma); return typed::map(res); } template template typed::map typed::basic_map::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::preimage_domain(mpa); return typed::map(res); } template template typed::map typed::basic_map::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::basic_map::preimage_domain(pma); return typed::map(res); } template template typed::union_map typed::basic_map::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_map::preimage_domain(upma); return typed::union_map(res); } template template typed::map typed::basic_map::preimage_range(const typed::multi_aff &ma) const { auto res = isl::basic_map::preimage_range(ma); return typed::map(res); } template template typed::map typed::basic_map::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::basic_map::preimage_range(pma); return typed::map(res); } template template typed::union_map typed::basic_map::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_map::preimage_range(upma); return typed::union_map(res); } template template typed::map, pair> typed::basic_map::product(const typed::map &map2) const { auto res = isl::basic_map::product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::basic_map::product(const typed::union_map &umap2) const { auto res = isl::basic_map::product(umap2); return typed::union_map, pair>(res); } template typed::map typed::basic_map::project_out_all_params() const { auto res = isl::basic_map::project_out_all_params(); return typed::map(res); } template typed::map typed::basic_map::project_out_param(const typed::id &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map(res); } template typed::map typed::basic_map::project_out_param(const std::string &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map(res); } template typed::map typed::basic_map::project_out_param(const typed::id_list &list) const { auto res = isl::basic_map::project_out_param(list); return typed::map(res); } template typed::set typed::basic_map::range() const { auto res = isl::basic_map::range(); return typed::set(res); } template typed::fixed_box typed::basic_map::range_lattice_tile() const { auto res = isl::basic_map::range_lattice_tile(); return typed::fixed_box(res); } template typed::union_map, Domain> typed::basic_map::range_map() const { auto res = isl::basic_map::range_map(); return typed::union_map, Domain>(res); } template template typed::map> typed::basic_map::range_product(const typed::map &map2) const { auto res = isl::basic_map::range_product(map2); return typed::map>(res); } template template typed::union_map> typed::basic_map::range_product(const typed::union_map &umap2) const { auto res = isl::basic_map::range_product(umap2); return typed::union_map>(res); } template typed::fixed_box typed::basic_map::range_simple_fixed_box_hull() const { auto res = isl::basic_map::range_simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::basic_map typed::basic_map::reverse() const { auto res = isl::basic_map::reverse(); return typed::basic_map(res); } template template typed::map typed::basic_map::set_domain_tuple(const typed::id &id) const { auto res = isl::basic_map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::basic_map::set_domain_tuple(const std::string &id) const { auto res = isl::basic_map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::basic_map::set_range_tuple(const typed::id &id) const { auto res = isl::basic_map::set_range_tuple(id); return typed::map(res); } template template typed::map typed::basic_map::set_range_tuple(const std::string &id) const { auto res = isl::basic_map::set_range_tuple(id); return typed::map(res); } template typed::space typed::basic_map::space() const { auto res = isl::basic_map::space(); return typed::space(res); } template typed::map typed::basic_map::subtract(const typed::map &map2) const { auto res = isl::basic_map::subtract(map2); return typed::map(res); } template typed::union_map typed::basic_map::subtract(const typed::union_map &umap2) const { auto res = isl::basic_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::basic_map::subtract_domain(const typed::union_set &dom) const { auto res = isl::basic_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::basic_map::subtract_range(const typed::union_set &dom) const { auto res = isl::basic_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::basic_map::to_union_map() const { auto res = isl::basic_map::to_union_map(); return typed::union_map(res); } template typed::map typed::basic_map::unite(const typed::basic_map &bmap2) const { auto res = isl::basic_map::unite(bmap2); return typed::map(res); } template typed::map typed::basic_map::unite(const typed::map &map2) const { auto res = isl::basic_map::unite(map2); return typed::map(res); } template typed::union_map typed::basic_map::unite(const typed::union_map &umap2) const { auto res = isl::basic_map::unite(umap2); return typed::union_map(res); } template typed::map typed::basic_map::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::basic_map::upper_bound(upper); return typed::map(res); } template typed::set> typed::basic_map::wrap() const { auto res = isl::basic_map::wrap(); return typed::set>(res); } template typed::basic_map>::basic_map(const isl::ctx &ctx, const std::string &str) : isl::basic_map(ctx, str) { } template template typed::basic_map> typed::basic_map>::apply_domain(const typed::basic_map &bmap2) const { auto res = isl::basic_map::apply_domain(bmap2); return typed::basic_map>(res); } template template typed::map> typed::basic_map>::apply_domain(const typed::map &map2) const { auto res = isl::basic_map::apply_domain(map2); return typed::map>(res); } template template typed::union_map> typed::basic_map>::apply_domain(const typed::union_map &umap2) const { auto res = isl::basic_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::basic_map typed::basic_map>::apply_range(const typed::basic_map, Arg3> &bmap2) const { auto res = isl::basic_map::apply_range(bmap2); return typed::basic_map(res); } template template typed::map typed::basic_map>::apply_range(const typed::map, Arg3> &map2) const { auto res = isl::basic_map::apply_range(map2); return typed::map(res); } template template typed::union_map typed::basic_map>::apply_range(const typed::union_map, Arg3> &umap2) const { auto res = isl::basic_map::apply_range(umap2); return typed::union_map(res); } template typed::map> typed::basic_map>::as_map() const { auto res = isl::basic_map::as_map(); return typed::map>(res); } template typed::multi_union_pw_aff> typed::basic_map>::as_multi_union_pw_aff() const { auto res = isl::basic_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::basic_map>::as_pw_multi_aff() const { auto res = isl::basic_map::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::basic_map>::as_union_pw_multi_aff() const { auto res = isl::basic_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff>(res); } template typed::set> typed::basic_map>::bind_domain(const typed::multi_id &tuple) const { auto res = isl::basic_map::bind_domain(tuple); return typed::set>(res); } template typed::set typed::basic_map>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::basic_map::bind_range(tuple); return typed::set(res); } template typed::map> typed::basic_map>::coalesce() const { auto res = isl::basic_map::coalesce(); return typed::map>(res); } template typed::basic_map> typed::basic_map>::detect_equalities() const { auto res = isl::basic_map::detect_equalities(); return typed::basic_map>(res); } template typed::set typed::basic_map>::domain() const { auto res = isl::basic_map::domain(); return typed::set(res); } template typed::union_map>, Domain> typed::basic_map>::domain_map() const { auto res = isl::basic_map::domain_map(); return typed::union_map>, Domain>(res); } template typed::union_pw_multi_aff>, Domain> typed::basic_map>::domain_map_union_pw_multi_aff() const { auto res = isl::basic_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff>, Domain>(res); } template template typed::map, pair> typed::basic_map>::domain_product(const typed::map> &map2) const { auto res = isl::basic_map::domain_product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::basic_map>::domain_product(const typed::union_map> &umap2) const { auto res = isl::basic_map::domain_product(umap2); return typed::union_map, pair>(res); } template typed::map> typed::basic_map>::drop_unused_params() const { auto res = isl::basic_map::drop_unused_params(); return typed::map>(res); } template bool typed::basic_map>::every_map(const std::function>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map>(arg0)); }; return isl::basic_map::every_map(lambda_test); } template typed::map> typed::basic_map>::extract_map(const typed::space> &space) const { auto res = isl::basic_map::extract_map(space); return typed::map>(res); } template typed::basic_map typed::basic_map>::flatten_range() const { auto res = isl::basic_map::flatten_range(); return typed::basic_map(res); } template void typed::basic_map>::foreach_basic_map(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map>(arg0)); }; return isl::basic_map::foreach_basic_map(lambda_fn); } template void typed::basic_map>::foreach_map(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map>(arg0)); }; return isl::basic_map::foreach_map(lambda_fn); } template typed::basic_map> typed::basic_map>::gist(const typed::basic_map> &context) const { auto res = isl::basic_map::gist(context); return typed::basic_map>(res); } template typed::map> typed::basic_map>::gist(const typed::map> &context) const { auto res = isl::basic_map::gist(context); return typed::map>(res); } template typed::union_map> typed::basic_map>::gist(const typed::union_map> &context) const { auto res = isl::basic_map::gist(context); return typed::union_map>(res); } template typed::map> typed::basic_map>::gist_domain(const typed::set &context) const { auto res = isl::basic_map::gist_domain(context); return typed::map>(res); } template typed::union_map> typed::basic_map>::gist_domain(const typed::union_set &uset) const { auto res = isl::basic_map::gist_domain(uset); return typed::union_map>(res); } template typed::map> typed::basic_map>::gist_params(const typed::set<> &context) const { auto res = isl::basic_map::gist_params(context); return typed::map>(res); } template typed::basic_map> typed::basic_map>::intersect(const typed::basic_map> &bmap2) const { auto res = isl::basic_map::intersect(bmap2); return typed::basic_map>(res); } template typed::map> typed::basic_map>::intersect(const typed::map> &map2) const { auto res = isl::basic_map::intersect(map2); return typed::map>(res); } template typed::union_map> typed::basic_map>::intersect(const typed::union_map> &umap2) const { auto res = isl::basic_map::intersect(umap2); return typed::union_map>(res); } template typed::basic_map> typed::basic_map>::intersect_domain(const typed::basic_set &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map>(res); } template typed::map> typed::basic_map>::intersect_domain(const typed::set &set) const { auto res = isl::basic_map::intersect_domain(set); return typed::map>(res); } template typed::union_map> typed::basic_map>::intersect_domain(const typed::space &space) const { auto res = isl::basic_map::intersect_domain(space); return typed::union_map>(res); } template typed::union_map> typed::basic_map>::intersect_domain(const typed::union_set &uset) const { auto res = isl::basic_map::intersect_domain(uset); return typed::union_map>(res); } template typed::basic_map> typed::basic_map>::intersect_domain(const typed::point &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map>(res); } template typed::map> typed::basic_map>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_map::intersect_params(params); return typed::map>(res); } template typed::basic_map> typed::basic_map>::intersect_range(const typed::basic_set> &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map>(res); } template typed::map> typed::basic_map>::intersect_range(const typed::set> &set) const { auto res = isl::basic_map::intersect_range(set); return typed::map>(res); } template typed::union_map> typed::basic_map>::intersect_range(const typed::space> &space) const { auto res = isl::basic_map::intersect_range(space); return typed::union_map>(res); } template typed::union_map> typed::basic_map>::intersect_range(const typed::union_set> &uset) const { auto res = isl::basic_map::intersect_range(uset); return typed::union_map>(res); } template typed::basic_map> typed::basic_map>::intersect_range(const typed::point> &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map>(res); } template typed::map> typed::basic_map>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::basic_map::intersect_range_wrapped_domain(domain); return typed::map>(res); } template typed::union_map> typed::basic_map>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::basic_map::intersect_range_wrapped_domain(domain); return typed::union_map>(res); } template typed::map> typed::basic_map>::lexmax() const { auto res = isl::basic_map::lexmax(); return typed::map>(res); } template typed::pw_multi_aff> typed::basic_map>::lexmax_pw_multi_aff() const { auto res = isl::basic_map::lexmax_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::map> typed::basic_map>::lexmin() const { auto res = isl::basic_map::lexmin(); return typed::map>(res); } template typed::pw_multi_aff> typed::basic_map>::lexmin_pw_multi_aff() const { auto res = isl::basic_map::lexmin_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::map> typed::basic_map>::lower_bound(const typed::multi_pw_aff> &lower) const { auto res = isl::basic_map::lower_bound(lower); return typed::map>(res); } template typed::map_list> typed::basic_map>::map_list() const { auto res = isl::basic_map::map_list(); return typed::map_list>(res); } template typed::multi_pw_aff> typed::basic_map>::max_multi_pw_aff() const { auto res = isl::basic_map::max_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::basic_map>::min_multi_pw_aff() const { auto res = isl::basic_map::min_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::set<> typed::basic_map>::params() const { auto res = isl::basic_map::params(); return typed::set<>(res); } template template typed::map> typed::basic_map>::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::basic_map::preimage_domain(ma); return typed::map>(res); } template template typed::map> typed::basic_map>::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_map::preimage_domain(mpa); return typed::map>(res); } template template typed::map> typed::basic_map>::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::basic_map::preimage_domain(pma); return typed::map>(res); } template template typed::union_map> typed::basic_map>::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_map::preimage_domain(upma); return typed::union_map>(res); } template template typed::map typed::basic_map>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::basic_map::preimage_range(ma); return typed::map(res); } template template typed::map typed::basic_map>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_map::preimage_range(pma); return typed::map(res); } template template typed::union_map typed::basic_map>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_map::preimage_range(upma); return typed::union_map(res); } template template typed::map, pair, Arg3>> typed::basic_map>::product(const typed::map &map2) const { auto res = isl::basic_map::product(map2); return typed::map, pair, Arg3>>(res); } template template typed::union_map, pair, Arg3>> typed::basic_map>::product(const typed::union_map &umap2) const { auto res = isl::basic_map::product(umap2); return typed::union_map, pair, Arg3>>(res); } template typed::map> typed::basic_map>::project_out_all_params() const { auto res = isl::basic_map::project_out_all_params(); return typed::map>(res); } template typed::map> typed::basic_map>::project_out_param(const typed::id &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map>(res); } template typed::map> typed::basic_map>::project_out_param(const std::string &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map>(res); } template typed::map> typed::basic_map>::project_out_param(const typed::id_list &list) const { auto res = isl::basic_map::project_out_param(list); return typed::map>(res); } template typed::set> typed::basic_map>::range() const { auto res = isl::basic_map::range(); return typed::set>(res); } template typed::map typed::basic_map>::range_factor_domain() const { auto res = isl::basic_map::range_factor_domain(); return typed::map(res); } template typed::map typed::basic_map>::range_factor_range() const { auto res = isl::basic_map::range_factor_range(); return typed::map(res); } template typed::fixed_box> typed::basic_map>::range_lattice_tile() const { auto res = isl::basic_map::range_lattice_tile(); return typed::fixed_box>(res); } template typed::union_map>, pair> typed::basic_map>::range_map() const { auto res = isl::basic_map::range_map(); return typed::union_map>, pair>(res); } template template typed::map, Arg3>> typed::basic_map>::range_product(const typed::map &map2) const { auto res = isl::basic_map::range_product(map2); return typed::map, Arg3>>(res); } template template typed::union_map, Arg3>> typed::basic_map>::range_product(const typed::union_map &umap2) const { auto res = isl::basic_map::range_product(umap2); return typed::union_map, Arg3>>(res); } template typed::map> typed::basic_map>::range_reverse() const { auto res = isl::basic_map::range_reverse(); return typed::map>(res); } template typed::fixed_box> typed::basic_map>::range_simple_fixed_box_hull() const { auto res = isl::basic_map::range_simple_fixed_box_hull(); return typed::fixed_box>(res); } template typed::basic_map, Domain> typed::basic_map>::reverse() const { auto res = isl::basic_map::reverse(); return typed::basic_map, Domain>(res); } template template typed::map> typed::basic_map>::set_domain_tuple(const typed::id &id) const { auto res = isl::basic_map::set_domain_tuple(id); return typed::map>(res); } template template typed::map> typed::basic_map>::set_domain_tuple(const std::string &id) const { auto res = isl::basic_map::set_domain_tuple(id); return typed::map>(res); } template typed::space> typed::basic_map>::space() const { auto res = isl::basic_map::space(); return typed::space>(res); } template typed::map> typed::basic_map>::subtract(const typed::map> &map2) const { auto res = isl::basic_map::subtract(map2); return typed::map>(res); } template typed::union_map> typed::basic_map>::subtract(const typed::union_map> &umap2) const { auto res = isl::basic_map::subtract(umap2); return typed::union_map>(res); } template typed::union_map> typed::basic_map>::subtract_domain(const typed::union_set &dom) const { auto res = isl::basic_map::subtract_domain(dom); return typed::union_map>(res); } template typed::union_map> typed::basic_map>::subtract_range(const typed::union_set> &dom) const { auto res = isl::basic_map::subtract_range(dom); return typed::union_map>(res); } template typed::union_map> typed::basic_map>::to_union_map() const { auto res = isl::basic_map::to_union_map(); return typed::union_map>(res); } template typed::map, Range2> typed::basic_map>::uncurry() const { auto res = isl::basic_map::uncurry(); return typed::map, Range2>(res); } template typed::map> typed::basic_map>::unite(const typed::basic_map> &bmap2) const { auto res = isl::basic_map::unite(bmap2); return typed::map>(res); } template typed::map> typed::basic_map>::unite(const typed::map> &map2) const { auto res = isl::basic_map::unite(map2); return typed::map>(res); } template typed::union_map> typed::basic_map>::unite(const typed::union_map> &umap2) const { auto res = isl::basic_map::unite(umap2); return typed::union_map>(res); } template typed::map> typed::basic_map>::upper_bound(const typed::multi_pw_aff> &upper) const { auto res = isl::basic_map::upper_bound(upper); return typed::map>(res); } template typed::set>> typed::basic_map>::wrap() const { auto res = isl::basic_map::wrap(); return typed::set>>(res); } template typed::basic_map, pair>::basic_map(const isl::ctx &ctx, const std::string &str) : isl::basic_map(ctx, str) { } template template typed::basic_map> typed::basic_map, pair>::apply_domain(const typed::basic_map, Domain2> &bmap2) const { auto res = isl::basic_map::apply_domain(bmap2); return typed::basic_map>(res); } template template typed::map> typed::basic_map, pair>::apply_domain(const typed::map, Domain2> &map2) const { auto res = isl::basic_map::apply_domain(map2); return typed::map>(res); } template template typed::union_map> typed::basic_map, pair>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::basic_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::basic_map, Range2> typed::basic_map, pair>::apply_range(const typed::basic_map, Range2> &bmap2) const { auto res = isl::basic_map::apply_range(bmap2); return typed::basic_map, Range2>(res); } template template typed::map, Range2> typed::basic_map, pair>::apply_range(const typed::map, Range2> &map2) const { auto res = isl::basic_map::apply_range(map2); return typed::map, Range2>(res); } template template typed::union_map, Range2> typed::basic_map, pair>::apply_range(const typed::union_map, Range2> &umap2) const { auto res = isl::basic_map::apply_range(umap2); return typed::union_map, Range2>(res); } template typed::map, pair> typed::basic_map, pair>::as_map() const { auto res = isl::basic_map::as_map(); return typed::map, pair>(res); } template typed::multi_union_pw_aff, pair> typed::basic_map, pair>::as_multi_union_pw_aff() const { auto res = isl::basic_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::basic_map, pair>::as_pw_multi_aff() const { auto res = isl::basic_map::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::basic_map, pair>::as_union_pw_multi_aff() const { auto res = isl::basic_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::set> typed::basic_map, pair>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::basic_map::bind_domain(tuple); return typed::set>(res); } template typed::set> typed::basic_map, pair>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::basic_map::bind_range(tuple); return typed::set>(res); } template typed::map, pair> typed::basic_map, pair>::coalesce() const { auto res = isl::basic_map::coalesce(); return typed::map, pair>(res); } template typed::map>> typed::basic_map, pair>::curry() const { auto res = isl::basic_map::curry(); return typed::map>>(res); } template typed::basic_set> typed::basic_map, pair>::deltas() const { auto res = isl::basic_map::deltas(); return typed::basic_set>(res); } template typed::basic_map, pair> typed::basic_map, pair>::detect_equalities() const { auto res = isl::basic_map::detect_equalities(); return typed::basic_map, pair>(res); } template typed::set> typed::basic_map, pair>::domain() const { auto res = isl::basic_map::domain(); return typed::set>(res); } template typed::map> typed::basic_map, pair>::domain_factor_domain() const { auto res = isl::basic_map::domain_factor_domain(); return typed::map>(res); } template typed::map> typed::basic_map, pair>::domain_factor_range() const { auto res = isl::basic_map::domain_factor_range(); return typed::map>(res); } template typed::union_map, pair>, pair> typed::basic_map, pair>::domain_map() const { auto res = isl::basic_map::domain_map(); return typed::union_map, pair>, pair>(res); } template typed::union_pw_multi_aff, pair>, pair> typed::basic_map, pair>::domain_map_union_pw_multi_aff() const { auto res = isl::basic_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>, pair>(res); } template template typed::map, Domain2>, pair> typed::basic_map, pair>::domain_product(const typed::map> &map2) const { auto res = isl::basic_map::domain_product(map2); return typed::map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::basic_map, pair>::domain_product(const typed::union_map> &umap2) const { auto res = isl::basic_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template typed::map, pair> typed::basic_map, pair>::domain_reverse() const { auto res = isl::basic_map::domain_reverse(); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::drop_unused_params() const { auto res = isl::basic_map::drop_unused_params(); return typed::map, pair>(res); } template template typed::map, pair> typed::basic_map, pair>::eq_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::basic_map::eq_at(mpa); return typed::map, pair>(res); } template template typed::union_map, pair> typed::basic_map, pair>::eq_at(const typed::multi_union_pw_aff, Range> &mupa) const { auto res = isl::basic_map::eq_at(mupa); return typed::union_map, pair>(res); } template bool typed::basic_map, pair>::every_map(const std::function, pair>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, pair>(arg0)); }; return isl::basic_map::every_map(lambda_test); } template typed::map, pair> typed::basic_map, pair>::extract_map(const typed::space, pair> &space) const { auto res = isl::basic_map::extract_map(space); return typed::map, pair>(res); } template typed::basic_map> typed::basic_map, pair>::flatten_domain() const { auto res = isl::basic_map::flatten_domain(); return typed::basic_map>(res); } template typed::basic_map, Anonymous> typed::basic_map, pair>::flatten_range() const { auto res = isl::basic_map::flatten_range(); return typed::basic_map, Anonymous>(res); } template void typed::basic_map, pair>::foreach_basic_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map, pair>(arg0)); }; return isl::basic_map::foreach_basic_map(lambda_fn); } template void typed::basic_map, pair>::foreach_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, pair>(arg0)); }; return isl::basic_map::foreach_map(lambda_fn); } template typed::basic_map, pair> typed::basic_map, pair>::gist(const typed::basic_map, pair> &context) const { auto res = isl::basic_map::gist(context); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::gist(const typed::map, pair> &context) const { auto res = isl::basic_map::gist(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::gist(const typed::union_map, pair> &context) const { auto res = isl::basic_map::gist(context); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::gist_domain(const typed::set> &context) const { auto res = isl::basic_map::gist_domain(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::gist_domain(const typed::union_set> &uset) const { auto res = isl::basic_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::gist_params(const typed::set<> &context) const { auto res = isl::basic_map::gist_params(context); return typed::map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect(const typed::basic_map, pair> &bmap2) const { auto res = isl::basic_map::intersect(bmap2); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect(const typed::map, pair> &map2) const { auto res = isl::basic_map::intersect(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect(const typed::union_map, pair> &umap2) const { auto res = isl::basic_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_domain(const typed::basic_set> &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_domain(const typed::set> &set) const { auto res = isl::basic_map::intersect_domain(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::basic_map::intersect_domain(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::basic_map::intersect_domain(uset); return typed::union_map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_domain(const typed::point> &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::basic_map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::basic_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_map::intersect_params(params); return typed::map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_range(const typed::basic_set> &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_range(const typed::set> &set) const { auto res = isl::basic_map::intersect_range(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_range(const typed::space> &space) const { auto res = isl::basic_map::intersect_range(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_range(const typed::union_set> &uset) const { auto res = isl::basic_map::intersect_range(uset); return typed::union_map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_range(const typed::point> &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::basic_map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::basic_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template template typed::map, pair> typed::basic_map, pair>::lex_ge_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::basic_map::lex_ge_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::basic_map, pair>::lex_gt_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::basic_map::lex_gt_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::basic_map, pair>::lex_le_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::basic_map::lex_le_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::basic_map, pair>::lex_lt_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::basic_map::lex_lt_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::lexmax() const { auto res = isl::basic_map::lexmax(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::basic_map, pair>::lexmax_pw_multi_aff() const { auto res = isl::basic_map::lexmax_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::basic_map, pair>::lexmin() const { auto res = isl::basic_map::lexmin(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::basic_map, pair>::lexmin_pw_multi_aff() const { auto res = isl::basic_map::lexmin_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::basic_map, pair>::lower_bound(const typed::multi_pw_aff, pair> &lower) const { auto res = isl::basic_map::lower_bound(lower); return typed::map, pair>(res); } template typed::map_list, pair> typed::basic_map, pair>::map_list() const { auto res = isl::basic_map::map_list(); return typed::map_list, pair>(res); } template typed::multi_pw_aff, pair> typed::basic_map, pair>::max_multi_pw_aff() const { auto res = isl::basic_map::max_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::basic_map, pair>::min_multi_pw_aff() const { auto res = isl::basic_map::min_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::set<> typed::basic_map, pair>::params() const { auto res = isl::basic_map::params(); return typed::set<>(res); } template template typed::map> typed::basic_map, pair>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::basic_map::preimage_domain(ma); return typed::map>(res); } template template typed::map> typed::basic_map, pair>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::basic_map::preimage_domain(mpa); return typed::map>(res); } template template typed::map> typed::basic_map, pair>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_map::preimage_domain(pma); return typed::map>(res); } template template typed::union_map> typed::basic_map, pair>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_map::preimage_domain(upma); return typed::union_map>(res); } template template typed::map, Range2> typed::basic_map, pair>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::basic_map::preimage_range(ma); return typed::map, Range2>(res); } template template typed::map, Range2> typed::basic_map, pair>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_map::preimage_range(pma); return typed::map, Range2>(res); } template template typed::union_map, Range2> typed::basic_map, pair>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_map::preimage_range(upma); return typed::union_map, Range2>(res); } template template typed::map, Domain2>, pair, Range2>> typed::basic_map, pair>::product(const typed::map &map2) const { auto res = isl::basic_map::product(map2); return typed::map, Domain2>, pair, Range2>>(res); } template template typed::union_map, Domain2>, pair, Range2>> typed::basic_map, pair>::product(const typed::union_map &umap2) const { auto res = isl::basic_map::product(umap2); return typed::union_map, Domain2>, pair, Range2>>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_all_params() const { auto res = isl::basic_map::project_out_all_params(); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_param(const typed::id &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_param(const std::string &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_param(const typed::id_list &list) const { auto res = isl::basic_map::project_out_param(list); return typed::map, pair>(res); } template typed::set> typed::basic_map, pair>::range() const { auto res = isl::basic_map::range(); return typed::set>(res); } template typed::map, T1> typed::basic_map, pair>::range_factor_domain() const { auto res = isl::basic_map::range_factor_domain(); return typed::map, T1>(res); } template typed::map, T2> typed::basic_map, pair>::range_factor_range() const { auto res = isl::basic_map::range_factor_range(); return typed::map, T2>(res); } template typed::fixed_box, pair> typed::basic_map, pair>::range_lattice_tile() const { auto res = isl::basic_map::range_lattice_tile(); return typed::fixed_box, pair>(res); } template typed::union_map, pair>, pair> typed::basic_map, pair>::range_map() const { auto res = isl::basic_map::range_map(); return typed::union_map, pair>, pair>(res); } template template typed::map, pair, Range2>> typed::basic_map, pair>::range_product(const typed::map, Range2> &map2) const { auto res = isl::basic_map::range_product(map2); return typed::map, pair, Range2>>(res); } template template typed::union_map, pair, Range2>> typed::basic_map, pair>::range_product(const typed::union_map, Range2> &umap2) const { auto res = isl::basic_map::range_product(umap2); return typed::union_map, pair, Range2>>(res); } template typed::map, pair> typed::basic_map, pair>::range_reverse() const { auto res = isl::basic_map::range_reverse(); return typed::map, pair>(res); } template typed::fixed_box, pair> typed::basic_map, pair>::range_simple_fixed_box_hull() const { auto res = isl::basic_map::range_simple_fixed_box_hull(); return typed::fixed_box, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::reverse() const { auto res = isl::basic_map::reverse(); return typed::basic_map, pair>(res); } template typed::space, pair> typed::basic_map, pair>::space() const { auto res = isl::basic_map::space(); return typed::space, pair>(res); } template typed::map, pair> typed::basic_map, pair>::subtract(const typed::map, pair> &map2) const { auto res = isl::basic_map::subtract(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::subtract(const typed::union_map, pair> &umap2) const { auto res = isl::basic_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::basic_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::subtract_range(const typed::union_set> &dom) const { auto res = isl::basic_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::to_union_map() const { auto res = isl::basic_map::to_union_map(); return typed::union_map, pair>(res); } template typed::map, T1>, T2> typed::basic_map, pair>::uncurry() const { auto res = isl::basic_map::uncurry(); return typed::map, T1>, T2>(res); } template typed::map, pair> typed::basic_map, pair>::unite(const typed::basic_map, pair> &bmap2) const { auto res = isl::basic_map::unite(bmap2); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::unite(const typed::map, pair> &map2) const { auto res = isl::basic_map::unite(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::unite(const typed::union_map, pair> &umap2) const { auto res = isl::basic_map::unite(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::upper_bound(const typed::multi_pw_aff, pair> &upper) const { auto res = isl::basic_map::upper_bound(upper); return typed::map, pair>(res); } template typed::set, pair>> typed::basic_map, pair>::wrap() const { auto res = isl::basic_map::wrap(); return typed::set, pair>>(res); } template typed::basic_map, pair>::basic_map(const isl::ctx &ctx, const std::string &str) : isl::basic_map(ctx, str) { } template template typed::basic_map> typed::basic_map, pair>::apply_domain(const typed::basic_map, Domain2> &bmap2) const { auto res = isl::basic_map::apply_domain(bmap2); return typed::basic_map>(res); } template template typed::map> typed::basic_map, pair>::apply_domain(const typed::map, Domain2> &map2) const { auto res = isl::basic_map::apply_domain(map2); return typed::map>(res); } template template typed::union_map> typed::basic_map, pair>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::basic_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::basic_map, Arg2> typed::basic_map, pair>::apply_range(const typed::basic_map, Arg2> &bmap2) const { auto res = isl::basic_map::apply_range(bmap2); return typed::basic_map, Arg2>(res); } template template typed::map, Arg2> typed::basic_map, pair>::apply_range(const typed::map, Arg2> &map2) const { auto res = isl::basic_map::apply_range(map2); return typed::map, Arg2>(res); } template template typed::union_map, Arg2> typed::basic_map, pair>::apply_range(const typed::union_map, Arg2> &umap2) const { auto res = isl::basic_map::apply_range(umap2); return typed::union_map, Arg2>(res); } template typed::map, pair> typed::basic_map, pair>::as_map() const { auto res = isl::basic_map::as_map(); return typed::map, pair>(res); } template typed::multi_union_pw_aff, pair> typed::basic_map, pair>::as_multi_union_pw_aff() const { auto res = isl::basic_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::basic_map, pair>::as_pw_multi_aff() const { auto res = isl::basic_map::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::basic_map, pair>::as_union_pw_multi_aff() const { auto res = isl::basic_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::set> typed::basic_map, pair>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::basic_map::bind_domain(tuple); return typed::set>(res); } template typed::set> typed::basic_map, pair>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::basic_map::bind_range(tuple); return typed::set>(res); } template typed::map, pair> typed::basic_map, pair>::coalesce() const { auto res = isl::basic_map::coalesce(); return typed::map, pair>(res); } template typed::map>> typed::basic_map, pair>::curry() const { auto res = isl::basic_map::curry(); return typed::map>>(res); } template typed::basic_map, pair> typed::basic_map, pair>::detect_equalities() const { auto res = isl::basic_map::detect_equalities(); return typed::basic_map, pair>(res); } template typed::set> typed::basic_map, pair>::domain() const { auto res = isl::basic_map::domain(); return typed::set>(res); } template typed::map> typed::basic_map, pair>::domain_factor_domain() const { auto res = isl::basic_map::domain_factor_domain(); return typed::map>(res); } template typed::map> typed::basic_map, pair>::domain_factor_range() const { auto res = isl::basic_map::domain_factor_range(); return typed::map>(res); } template typed::union_map, pair>, pair> typed::basic_map, pair>::domain_map() const { auto res = isl::basic_map::domain_map(); return typed::union_map, pair>, pair>(res); } template typed::union_pw_multi_aff, pair>, pair> typed::basic_map, pair>::domain_map_union_pw_multi_aff() const { auto res = isl::basic_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>, pair>(res); } template template typed::map, Domain2>, pair> typed::basic_map, pair>::domain_product(const typed::map> &map2) const { auto res = isl::basic_map::domain_product(map2); return typed::map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::basic_map, pair>::domain_product(const typed::union_map> &umap2) const { auto res = isl::basic_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template typed::map, pair> typed::basic_map, pair>::domain_reverse() const { auto res = isl::basic_map::domain_reverse(); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::drop_unused_params() const { auto res = isl::basic_map::drop_unused_params(); return typed::map, pair>(res); } template bool typed::basic_map, pair>::every_map(const std::function, pair>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, pair>(arg0)); }; return isl::basic_map::every_map(lambda_test); } template typed::map, pair> typed::basic_map, pair>::extract_map(const typed::space, pair> &space) const { auto res = isl::basic_map::extract_map(space); return typed::map, pair>(res); } template typed::basic_map> typed::basic_map, pair>::flatten_domain() const { auto res = isl::basic_map::flatten_domain(); return typed::basic_map>(res); } template typed::basic_map, Anonymous> typed::basic_map, pair>::flatten_range() const { auto res = isl::basic_map::flatten_range(); return typed::basic_map, Anonymous>(res); } template void typed::basic_map, pair>::foreach_basic_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map, pair>(arg0)); }; return isl::basic_map::foreach_basic_map(lambda_fn); } template void typed::basic_map, pair>::foreach_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, pair>(arg0)); }; return isl::basic_map::foreach_map(lambda_fn); } template typed::basic_map, pair> typed::basic_map, pair>::gist(const typed::basic_map, pair> &context) const { auto res = isl::basic_map::gist(context); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::gist(const typed::map, pair> &context) const { auto res = isl::basic_map::gist(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::gist(const typed::union_map, pair> &context) const { auto res = isl::basic_map::gist(context); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::gist_domain(const typed::set> &context) const { auto res = isl::basic_map::gist_domain(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::gist_domain(const typed::union_set> &uset) const { auto res = isl::basic_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::gist_params(const typed::set<> &context) const { auto res = isl::basic_map::gist_params(context); return typed::map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect(const typed::basic_map, pair> &bmap2) const { auto res = isl::basic_map::intersect(bmap2); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect(const typed::map, pair> &map2) const { auto res = isl::basic_map::intersect(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect(const typed::union_map, pair> &umap2) const { auto res = isl::basic_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_domain(const typed::basic_set> &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_domain(const typed::set> &set) const { auto res = isl::basic_map::intersect_domain(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::basic_map::intersect_domain(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::basic_map::intersect_domain(uset); return typed::union_map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_domain(const typed::point> &bset) const { auto res = isl::basic_map::intersect_domain(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::basic_map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::basic_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_map::intersect_params(params); return typed::map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_range(const typed::basic_set> &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_range(const typed::set> &set) const { auto res = isl::basic_map::intersect_range(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_range(const typed::space> &space) const { auto res = isl::basic_map::intersect_range(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_range(const typed::union_set> &uset) const { auto res = isl::basic_map::intersect_range(uset); return typed::union_map, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::intersect_range(const typed::point> &bset) const { auto res = isl::basic_map::intersect_range(bset); return typed::basic_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::basic_map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::basic_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::lexmax() const { auto res = isl::basic_map::lexmax(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::basic_map, pair>::lexmax_pw_multi_aff() const { auto res = isl::basic_map::lexmax_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::basic_map, pair>::lexmin() const { auto res = isl::basic_map::lexmin(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::basic_map, pair>::lexmin_pw_multi_aff() const { auto res = isl::basic_map::lexmin_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::basic_map, pair>::lower_bound(const typed::multi_pw_aff, pair> &lower) const { auto res = isl::basic_map::lower_bound(lower); return typed::map, pair>(res); } template typed::map_list, pair> typed::basic_map, pair>::map_list() const { auto res = isl::basic_map::map_list(); return typed::map_list, pair>(res); } template typed::multi_pw_aff, pair> typed::basic_map, pair>::max_multi_pw_aff() const { auto res = isl::basic_map::max_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::basic_map, pair>::min_multi_pw_aff() const { auto res = isl::basic_map::min_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::set<> typed::basic_map, pair>::params() const { auto res = isl::basic_map::params(); return typed::set<>(res); } template template typed::map> typed::basic_map, pair>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::basic_map::preimage_domain(ma); return typed::map>(res); } template template typed::map> typed::basic_map, pair>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::basic_map::preimage_domain(mpa); return typed::map>(res); } template template typed::map> typed::basic_map, pair>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_map::preimage_domain(pma); return typed::map>(res); } template template typed::union_map> typed::basic_map, pair>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_map::preimage_domain(upma); return typed::union_map>(res); } template template typed::map, Arg2> typed::basic_map, pair>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::basic_map::preimage_range(ma); return typed::map, Arg2>(res); } template template typed::map, Arg2> typed::basic_map, pair>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_map::preimage_range(pma); return typed::map, Arg2>(res); } template template typed::union_map, Arg2> typed::basic_map, pair>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_map::preimage_range(upma); return typed::union_map, Arg2>(res); } template template typed::map, Domain2>, pair, Arg2>> typed::basic_map, pair>::product(const typed::map &map2) const { auto res = isl::basic_map::product(map2); return typed::map, Domain2>, pair, Arg2>>(res); } template template typed::union_map, Domain2>, pair, Arg2>> typed::basic_map, pair>::product(const typed::union_map &umap2) const { auto res = isl::basic_map::product(umap2); return typed::union_map, Domain2>, pair, Arg2>>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_all_params() const { auto res = isl::basic_map::project_out_all_params(); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_param(const typed::id &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_param(const std::string &id) const { auto res = isl::basic_map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::project_out_param(const typed::id_list &list) const { auto res = isl::basic_map::project_out_param(list); return typed::map, pair>(res); } template typed::set> typed::basic_map, pair>::range() const { auto res = isl::basic_map::range(); return typed::set>(res); } template typed::map, Range> typed::basic_map, pair>::range_factor_domain() const { auto res = isl::basic_map::range_factor_domain(); return typed::map, Range>(res); } template typed::map, Range2> typed::basic_map, pair>::range_factor_range() const { auto res = isl::basic_map::range_factor_range(); return typed::map, Range2>(res); } template typed::fixed_box, pair> typed::basic_map, pair>::range_lattice_tile() const { auto res = isl::basic_map::range_lattice_tile(); return typed::fixed_box, pair>(res); } template typed::union_map, pair>, pair> typed::basic_map, pair>::range_map() const { auto res = isl::basic_map::range_map(); return typed::union_map, pair>, pair>(res); } template template typed::map, pair, Arg2>> typed::basic_map, pair>::range_product(const typed::map, Arg2> &map2) const { auto res = isl::basic_map::range_product(map2); return typed::map, pair, Arg2>>(res); } template template typed::union_map, pair, Arg2>> typed::basic_map, pair>::range_product(const typed::union_map, Arg2> &umap2) const { auto res = isl::basic_map::range_product(umap2); return typed::union_map, pair, Arg2>>(res); } template typed::map, pair> typed::basic_map, pair>::range_reverse() const { auto res = isl::basic_map::range_reverse(); return typed::map, pair>(res); } template typed::fixed_box, pair> typed::basic_map, pair>::range_simple_fixed_box_hull() const { auto res = isl::basic_map::range_simple_fixed_box_hull(); return typed::fixed_box, pair>(res); } template typed::basic_map, pair> typed::basic_map, pair>::reverse() const { auto res = isl::basic_map::reverse(); return typed::basic_map, pair>(res); } template typed::space, pair> typed::basic_map, pair>::space() const { auto res = isl::basic_map::space(); return typed::space, pair>(res); } template typed::map, pair> typed::basic_map, pair>::subtract(const typed::map, pair> &map2) const { auto res = isl::basic_map::subtract(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::subtract(const typed::union_map, pair> &umap2) const { auto res = isl::basic_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::basic_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::subtract_range(const typed::union_set> &dom) const { auto res = isl::basic_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::to_union_map() const { auto res = isl::basic_map::to_union_map(); return typed::union_map, pair>(res); } template typed::map, Range>, Range2> typed::basic_map, pair>::uncurry() const { auto res = isl::basic_map::uncurry(); return typed::map, Range>, Range2>(res); } template typed::map, pair> typed::basic_map, pair>::unite(const typed::basic_map, pair> &bmap2) const { auto res = isl::basic_map::unite(bmap2); return typed::map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::unite(const typed::map, pair> &map2) const { auto res = isl::basic_map::unite(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::basic_map, pair>::unite(const typed::union_map, pair> &umap2) const { auto res = isl::basic_map::unite(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::basic_map, pair>::upper_bound(const typed::multi_pw_aff, pair> &upper) const { auto res = isl::basic_map::upper_bound(upper); return typed::map, pair>(res); } template typed::set, pair>> typed::basic_map, pair>::wrap() const { auto res = isl::basic_map::wrap(); return typed::set, pair>>(res); } typed::basic_set<>::basic_set(const typed::point<> &pnt) : isl::basic_set(pnt) { } typed::basic_set<>::basic_set(const isl::ctx &ctx, const std::string &str) : isl::basic_set(ctx, str) { } typed::set<> typed::basic_set<>::coalesce() const { auto res = isl::basic_set::coalesce(); return typed::set<>(res); } typed::basic_set<> typed::basic_set<>::detect_equalities() const { auto res = isl::basic_set::detect_equalities(); return typed::basic_set<>(res); } typed::set<> typed::basic_set<>::drop_unused_params() const { auto res = isl::basic_set::drop_unused_params(); return typed::set<>(res); } bool typed::basic_set<>::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set<>(arg0)); }; return isl::basic_set::every_set(lambda_test); } typed::set<> typed::basic_set<>::extract_set(const typed::space<> &space) const { auto res = isl::basic_set::extract_set(space); return typed::set<>(res); } void typed::basic_set<>::foreach_basic_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set<>(arg0)); }; return isl::basic_set::foreach_basic_set(lambda_fn); } void typed::basic_set<>::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point<>(arg0)); }; return isl::basic_set::foreach_point(lambda_fn); } void typed::basic_set<>::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set<>(arg0)); }; return isl::basic_set::foreach_set(lambda_fn); } typed::basic_set<> typed::basic_set<>::gist(const typed::basic_set<> &context) const { auto res = isl::basic_set::gist(context); return typed::basic_set<>(res); } typed::set<> typed::basic_set<>::gist(const typed::set<> &context) const { auto res = isl::basic_set::gist(context); return typed::set<>(res); } typed::union_set<> typed::basic_set<>::gist(const typed::union_set<> &context) const { auto res = isl::basic_set::gist(context); return typed::union_set<>(res); } typed::basic_set<> typed::basic_set<>::gist(const typed::point<> &context) const { auto res = isl::basic_set::gist(context); return typed::basic_set<>(res); } typed::pw_aff typed::basic_set<>::indicator_function() const { auto res = isl::basic_set::indicator_function(); return typed::pw_aff(res); } typed::basic_set<> typed::basic_set<>::intersect(const typed::basic_set<> &bset2) const { auto res = isl::basic_set::intersect(bset2); return typed::basic_set<>(res); } typed::set<> typed::basic_set<>::intersect(const typed::set<> &set2) const { auto res = isl::basic_set::intersect(set2); return typed::set<>(res); } typed::union_set<> typed::basic_set<>::intersect(const typed::union_set<> &uset2) const { auto res = isl::basic_set::intersect(uset2); return typed::union_set<>(res); } typed::basic_set<> typed::basic_set<>::intersect(const typed::point<> &bset2) const { auto res = isl::basic_set::intersect(bset2); return typed::basic_set<>(res); } typed::pw_aff typed::basic_set<>::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::basic_set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } typed::pw_aff typed::basic_set<>::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::basic_set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } typed::set<> typed::basic_set<>::project_out_all_params() const { auto res = isl::basic_set::project_out_all_params(); return typed::set<>(res); } typed::set<> typed::basic_set<>::project_out_param(const typed::id &id) const { auto res = isl::basic_set::project_out_param(id); return typed::set<>(res); } typed::set<> typed::basic_set<>::project_out_param(const std::string &id) const { auto res = isl::basic_set::project_out_param(id); return typed::set<>(res); } typed::set<> typed::basic_set<>::project_out_param(const typed::id_list &list) const { auto res = isl::basic_set::project_out_param(list); return typed::set<>(res); } typed::pw_aff typed::basic_set<>::pw_aff_on_domain(const typed::val &v) const { auto res = isl::basic_set::pw_aff_on_domain(v); return typed::pw_aff(res); } typed::pw_aff typed::basic_set<>::pw_aff_on_domain(long v) const { auto res = isl::basic_set::pw_aff_on_domain(v); return typed::pw_aff(res); } template typed::pw_multi_aff typed::basic_set<>::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::basic_set::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff(res); } typed::set_list<> typed::basic_set<>::set_list() const { auto res = isl::basic_set::set_list(); return typed::set_list<>(res); } typed::space<> typed::basic_set<>::space() const { auto res = isl::basic_set::space(); return typed::space<>(res); } typed::set<> typed::basic_set<>::subtract(const typed::set<> &set2) const { auto res = isl::basic_set::subtract(set2); return typed::set<>(res); } typed::union_set<> typed::basic_set<>::subtract(const typed::union_set<> &uset2) const { auto res = isl::basic_set::subtract(uset2); return typed::union_set<>(res); } typed::set<> typed::basic_set<>::to_set() const { auto res = isl::basic_set::to_set(); return typed::set<>(res); } typed::union_set<> typed::basic_set<>::to_union_set() const { auto res = isl::basic_set::to_union_set(); return typed::union_set<>(res); } template typed::set typed::basic_set<>::unbind_params(const typed::multi_id &tuple) const { auto res = isl::basic_set::unbind_params(tuple); return typed::set(res); } typed::set<> typed::basic_set<>::unite(const typed::basic_set<> &bset2) const { auto res = isl::basic_set::unite(bset2); return typed::set<>(res); } typed::set<> typed::basic_set<>::unite(const typed::set<> &set2) const { auto res = isl::basic_set::unite(set2); return typed::set<>(res); } typed::union_set<> typed::basic_set<>::unite(const typed::union_set<> &uset2) const { auto res = isl::basic_set::unite(uset2); return typed::union_set<>(res); } typed::set<> typed::basic_set<>::unite(const typed::point<> &bset2) const { auto res = isl::basic_set::unite(bset2); return typed::set<>(res); } template typed::basic_set::basic_set(const typed::point &pnt) : isl::basic_set(pnt) { } template typed::basic_set::basic_set(const isl::ctx &ctx, const std::string &str) : isl::basic_set(ctx, str) { } template template typed::basic_set typed::basic_set::apply(const typed::basic_map &bmap) const { auto res = isl::basic_set::apply(bmap); return typed::basic_set(res); } template template typed::set typed::basic_set::apply(const typed::map &map) const { auto res = isl::basic_set::apply(map); return typed::set(res); } template template typed::union_set typed::basic_set::apply(const typed::union_map &umap) const { auto res = isl::basic_set::apply(umap); return typed::union_set(res); } template typed::pw_multi_aff typed::basic_set::as_pw_multi_aff() const { auto res = isl::basic_set::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::basic_set::as_set() const { auto res = isl::basic_set::as_set(); return typed::set(res); } template typed::set<> typed::basic_set::bind(const typed::multi_id &tuple) const { auto res = isl::basic_set::bind(tuple); return typed::set<>(res); } template typed::set typed::basic_set::coalesce() const { auto res = isl::basic_set::coalesce(); return typed::set(res); } template typed::basic_set typed::basic_set::detect_equalities() const { auto res = isl::basic_set::detect_equalities(); return typed::basic_set(res); } template typed::set typed::basic_set::drop_unused_params() const { auto res = isl::basic_set::drop_unused_params(); return typed::set(res); } template bool typed::basic_set::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set(arg0)); }; return isl::basic_set::every_set(lambda_test); } template typed::set typed::basic_set::extract_set(const typed::space &space) const { auto res = isl::basic_set::extract_set(space); return typed::set(res); } template void typed::basic_set::foreach_basic_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set(arg0)); }; return isl::basic_set::foreach_basic_set(lambda_fn); } template void typed::basic_set::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point(arg0)); }; return isl::basic_set::foreach_point(lambda_fn); } template void typed::basic_set::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set(arg0)); }; return isl::basic_set::foreach_set(lambda_fn); } template typed::basic_set typed::basic_set::gist(const typed::basic_set &context) const { auto res = isl::basic_set::gist(context); return typed::basic_set(res); } template typed::set typed::basic_set::gist(const typed::set &context) const { auto res = isl::basic_set::gist(context); return typed::set(res); } template typed::union_set typed::basic_set::gist(const typed::union_set &context) const { auto res = isl::basic_set::gist(context); return typed::union_set(res); } template typed::basic_set typed::basic_set::gist(const typed::point &context) const { auto res = isl::basic_set::gist(context); return typed::basic_set(res); } template typed::set typed::basic_set::gist_params(const typed::set<> &context) const { auto res = isl::basic_set::gist_params(context); return typed::set(res); } template typed::map typed::basic_set::identity() const { auto res = isl::basic_set::identity(); return typed::map(res); } template typed::pw_aff typed::basic_set::indicator_function() const { auto res = isl::basic_set::indicator_function(); return typed::pw_aff(res); } template template typed::map typed::basic_set::insert_domain(const typed::space &domain) const { auto res = isl::basic_set::insert_domain(domain); return typed::map(res); } template typed::basic_set typed::basic_set::intersect(const typed::basic_set &bset2) const { auto res = isl::basic_set::intersect(bset2); return typed::basic_set(res); } template typed::set typed::basic_set::intersect(const typed::set &set2) const { auto res = isl::basic_set::intersect(set2); return typed::set(res); } template typed::union_set typed::basic_set::intersect(const typed::union_set &uset2) const { auto res = isl::basic_set::intersect(uset2); return typed::union_set(res); } template typed::basic_set typed::basic_set::intersect(const typed::point &bset2) const { auto res = isl::basic_set::intersect(bset2); return typed::basic_set(res); } template typed::basic_set typed::basic_set::intersect_params(const typed::basic_set<> &bset2) const { auto res = isl::basic_set::intersect_params(bset2); return typed::basic_set(res); } template typed::set typed::basic_set::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_set::intersect_params(params); return typed::set(res); } template typed::basic_set typed::basic_set::intersect_params(const typed::point<> &bset2) const { auto res = isl::basic_set::intersect_params(bset2); return typed::basic_set(res); } template typed::fixed_box typed::basic_set::lattice_tile() const { auto res = isl::basic_set::lattice_tile(); return typed::fixed_box(res); } template typed::set typed::basic_set::lexmax() const { auto res = isl::basic_set::lexmax(); return typed::set(res); } template typed::pw_multi_aff typed::basic_set::lexmax_pw_multi_aff() const { auto res = isl::basic_set::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::basic_set::lexmin() const { auto res = isl::basic_set::lexmin(); return typed::set(res); } template typed::pw_multi_aff typed::basic_set::lexmin_pw_multi_aff() const { auto res = isl::basic_set::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::basic_set::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::basic_set::lower_bound(lower); return typed::set(res); } template typed::set typed::basic_set::lower_bound(const typed::multi_val &lower) const { auto res = isl::basic_set::lower_bound(lower); return typed::set(res); } template typed::multi_pw_aff typed::basic_set::max_multi_pw_aff() const { auto res = isl::basic_set::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::basic_set::min_multi_pw_aff() const { auto res = isl::basic_set::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::pw_aff typed::basic_set::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::basic_set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } template typed::pw_aff typed::basic_set::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::basic_set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } template typed::basic_set<> typed::basic_set::params() const { auto res = isl::basic_set::params(); return typed::basic_set<>(res); } template typed::multi_val typed::basic_set::plain_multi_val_if_fixed() const { auto res = isl::basic_set::plain_multi_val_if_fixed(); return typed::multi_val(res); } template template typed::set typed::basic_set::preimage(const typed::multi_aff &ma) const { auto res = isl::basic_set::preimage(ma); return typed::set(res); } template template typed::set typed::basic_set::preimage(const typed::multi_pw_aff &mpa) const { auto res = isl::basic_set::preimage(mpa); return typed::set(res); } template template typed::set typed::basic_set::preimage(const typed::pw_multi_aff &pma) const { auto res = isl::basic_set::preimage(pma); return typed::set(res); } template template typed::union_set typed::basic_set::preimage(const typed::union_pw_multi_aff &upma) const { auto res = isl::basic_set::preimage(upma); return typed::union_set(res); } template template typed::set> typed::basic_set::product(const typed::set &set2) const { auto res = isl::basic_set::product(set2); return typed::set>(res); } template typed::set typed::basic_set::project_out_all_params() const { auto res = isl::basic_set::project_out_all_params(); return typed::set(res); } template typed::set typed::basic_set::project_out_param(const typed::id &id) const { auto res = isl::basic_set::project_out_param(id); return typed::set(res); } template typed::set typed::basic_set::project_out_param(const std::string &id) const { auto res = isl::basic_set::project_out_param(id); return typed::set(res); } template typed::set typed::basic_set::project_out_param(const typed::id_list &list) const { auto res = isl::basic_set::project_out_param(list); return typed::set(res); } template typed::pw_aff typed::basic_set::pw_aff_on_domain(const typed::val &v) const { auto res = isl::basic_set::pw_aff_on_domain(v); return typed::pw_aff(res); } template typed::pw_aff typed::basic_set::pw_aff_on_domain(long v) const { auto res = isl::basic_set::pw_aff_on_domain(v); return typed::pw_aff(res); } template template typed::pw_multi_aff typed::basic_set::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::basic_set::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff(res); } template typed::set_list typed::basic_set::set_list() const { auto res = isl::basic_set::set_list(); return typed::set_list(res); } template typed::fixed_box typed::basic_set::simple_fixed_box_hull() const { auto res = isl::basic_set::simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::space typed::basic_set::space() const { auto res = isl::basic_set::space(); return typed::space(res); } template typed::set typed::basic_set::subtract(const typed::set &set2) const { auto res = isl::basic_set::subtract(set2); return typed::set(res); } template typed::union_set typed::basic_set::subtract(const typed::union_set &uset2) const { auto res = isl::basic_set::subtract(uset2); return typed::union_set(res); } template typed::set typed::basic_set::to_set() const { auto res = isl::basic_set::to_set(); return typed::set(res); } template typed::union_set typed::basic_set::to_union_set() const { auto res = isl::basic_set::to_union_set(); return typed::union_set(res); } template typed::map typed::basic_set::translation() const { auto res = isl::basic_set::translation(); return typed::map(res); } template template typed::map typed::basic_set::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::basic_set::unbind_params_insert_domain(domain); return typed::map(res); } template typed::set typed::basic_set::unite(const typed::basic_set &bset2) const { auto res = isl::basic_set::unite(bset2); return typed::set(res); } template typed::set typed::basic_set::unite(const typed::set &set2) const { auto res = isl::basic_set::unite(set2); return typed::set(res); } template typed::union_set typed::basic_set::unite(const typed::union_set &uset2) const { auto res = isl::basic_set::unite(uset2); return typed::union_set(res); } template typed::set typed::basic_set::unite(const typed::point &bset2) const { auto res = isl::basic_set::unite(bset2); return typed::set(res); } template typed::set typed::basic_set::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::basic_set::upper_bound(upper); return typed::set(res); } template typed::set typed::basic_set::upper_bound(const typed::multi_val &upper) const { auto res = isl::basic_set::upper_bound(upper); return typed::set(res); } template typed::basic_set>::basic_set(const typed::point> &pnt) : isl::basic_set(pnt) { } template typed::basic_set>::basic_set(const isl::ctx &ctx, const std::string &str) : isl::basic_set(ctx, str) { } template template typed::basic_set typed::basic_set>::apply(const typed::basic_map, Arg2> &bmap) const { auto res = isl::basic_set::apply(bmap); return typed::basic_set(res); } template template typed::set typed::basic_set>::apply(const typed::map, Arg2> &map) const { auto res = isl::basic_set::apply(map); return typed::set(res); } template template typed::union_set typed::basic_set>::apply(const typed::union_map, Arg2> &umap) const { auto res = isl::basic_set::apply(umap); return typed::union_set(res); } template typed::pw_multi_aff> typed::basic_set>::as_pw_multi_aff() const { auto res = isl::basic_set::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::basic_set>::as_set() const { auto res = isl::basic_set::as_set(); return typed::set>(res); } template typed::set<> typed::basic_set>::bind(const typed::multi_id> &tuple) const { auto res = isl::basic_set::bind(tuple); return typed::set<>(res); } template typed::set> typed::basic_set>::coalesce() const { auto res = isl::basic_set::coalesce(); return typed::set>(res); } template typed::basic_set> typed::basic_set>::detect_equalities() const { auto res = isl::basic_set::detect_equalities(); return typed::basic_set>(res); } template typed::set> typed::basic_set>::drop_unused_params() const { auto res = isl::basic_set::drop_unused_params(); return typed::set>(res); } template bool typed::basic_set>::every_set(const std::function>)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set>(arg0)); }; return isl::basic_set::every_set(lambda_test); } template typed::set> typed::basic_set>::extract_set(const typed::space> &space) const { auto res = isl::basic_set::extract_set(space); return typed::set>(res); } template void typed::basic_set>::foreach_basic_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set>(arg0)); }; return isl::basic_set::foreach_basic_set(lambda_fn); } template void typed::basic_set>::foreach_point(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point>(arg0)); }; return isl::basic_set::foreach_point(lambda_fn); } template void typed::basic_set>::foreach_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set>(arg0)); }; return isl::basic_set::foreach_set(lambda_fn); } template typed::basic_set> typed::basic_set>::gist(const typed::basic_set> &context) const { auto res = isl::basic_set::gist(context); return typed::basic_set>(res); } template typed::set> typed::basic_set>::gist(const typed::set> &context) const { auto res = isl::basic_set::gist(context); return typed::set>(res); } template typed::union_set> typed::basic_set>::gist(const typed::union_set> &context) const { auto res = isl::basic_set::gist(context); return typed::union_set>(res); } template typed::basic_set> typed::basic_set>::gist(const typed::point> &context) const { auto res = isl::basic_set::gist(context); return typed::basic_set>(res); } template typed::set> typed::basic_set>::gist_params(const typed::set<> &context) const { auto res = isl::basic_set::gist_params(context); return typed::set>(res); } template typed::map, pair> typed::basic_set>::identity() const { auto res = isl::basic_set::identity(); return typed::map, pair>(res); } template typed::pw_aff, Anonymous> typed::basic_set>::indicator_function() const { auto res = isl::basic_set::indicator_function(); return typed::pw_aff, Anonymous>(res); } template template typed::map> typed::basic_set>::insert_domain(const typed::space &domain) const { auto res = isl::basic_set::insert_domain(domain); return typed::map>(res); } template typed::basic_set> typed::basic_set>::intersect(const typed::basic_set> &bset2) const { auto res = isl::basic_set::intersect(bset2); return typed::basic_set>(res); } template typed::set> typed::basic_set>::intersect(const typed::set> &set2) const { auto res = isl::basic_set::intersect(set2); return typed::set>(res); } template typed::union_set> typed::basic_set>::intersect(const typed::union_set> &uset2) const { auto res = isl::basic_set::intersect(uset2); return typed::union_set>(res); } template typed::basic_set> typed::basic_set>::intersect(const typed::point> &bset2) const { auto res = isl::basic_set::intersect(bset2); return typed::basic_set>(res); } template typed::basic_set> typed::basic_set>::intersect_params(const typed::basic_set<> &bset2) const { auto res = isl::basic_set::intersect_params(bset2); return typed::basic_set>(res); } template typed::set> typed::basic_set>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::basic_set::intersect_params(params); return typed::set>(res); } template typed::basic_set> typed::basic_set>::intersect_params(const typed::point<> &bset2) const { auto res = isl::basic_set::intersect_params(bset2); return typed::basic_set>(res); } template typed::fixed_box> typed::basic_set>::lattice_tile() const { auto res = isl::basic_set::lattice_tile(); return typed::fixed_box>(res); } template typed::set> typed::basic_set>::lexmax() const { auto res = isl::basic_set::lexmax(); return typed::set>(res); } template typed::pw_multi_aff> typed::basic_set>::lexmax_pw_multi_aff() const { auto res = isl::basic_set::lexmax_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::basic_set>::lexmin() const { auto res = isl::basic_set::lexmin(); return typed::set>(res); } template typed::pw_multi_aff> typed::basic_set>::lexmin_pw_multi_aff() const { auto res = isl::basic_set::lexmin_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::basic_set>::lower_bound(const typed::multi_pw_aff> &lower) const { auto res = isl::basic_set::lower_bound(lower); return typed::set>(res); } template typed::set> typed::basic_set>::lower_bound(const typed::multi_val> &lower) const { auto res = isl::basic_set::lower_bound(lower); return typed::set>(res); } template typed::multi_pw_aff> typed::basic_set>::max_multi_pw_aff() const { auto res = isl::basic_set::max_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::basic_set>::min_multi_pw_aff() const { auto res = isl::basic_set::min_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::pw_aff, Anonymous> typed::basic_set>::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::basic_set::param_pw_aff_on_domain(id); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::basic_set>::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::basic_set::param_pw_aff_on_domain(id); return typed::pw_aff, Anonymous>(res); } template typed::basic_set<> typed::basic_set>::params() const { auto res = isl::basic_set::params(); return typed::basic_set<>(res); } template typed::multi_val> typed::basic_set>::plain_multi_val_if_fixed() const { auto res = isl::basic_set::plain_multi_val_if_fixed(); return typed::multi_val>(res); } template template typed::set typed::basic_set>::preimage(const typed::multi_aff> &ma) const { auto res = isl::basic_set::preimage(ma); return typed::set(res); } template template typed::set typed::basic_set>::preimage(const typed::multi_pw_aff> &mpa) const { auto res = isl::basic_set::preimage(mpa); return typed::set(res); } template template typed::set typed::basic_set>::preimage(const typed::pw_multi_aff> &pma) const { auto res = isl::basic_set::preimage(pma); return typed::set(res); } template template typed::union_set typed::basic_set>::preimage(const typed::union_pw_multi_aff> &upma) const { auto res = isl::basic_set::preimage(upma); return typed::union_set(res); } template template typed::set, Arg2>> typed::basic_set>::product(const typed::set &set2) const { auto res = isl::basic_set::product(set2); return typed::set, Arg2>>(res); } template typed::set> typed::basic_set>::project_out_all_params() const { auto res = isl::basic_set::project_out_all_params(); return typed::set>(res); } template typed::set> typed::basic_set>::project_out_param(const typed::id &id) const { auto res = isl::basic_set::project_out_param(id); return typed::set>(res); } template typed::set> typed::basic_set>::project_out_param(const std::string &id) const { auto res = isl::basic_set::project_out_param(id); return typed::set>(res); } template typed::set> typed::basic_set>::project_out_param(const typed::id_list &list) const { auto res = isl::basic_set::project_out_param(list); return typed::set>(res); } template typed::pw_aff, Anonymous> typed::basic_set>::pw_aff_on_domain(const typed::val &v) const { auto res = isl::basic_set::pw_aff_on_domain(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::basic_set>::pw_aff_on_domain(long v) const { auto res = isl::basic_set::pw_aff_on_domain(v); return typed::pw_aff, Anonymous>(res); } template template typed::pw_multi_aff, Arg2> typed::basic_set>::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::basic_set::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff, Arg2>(res); } template typed::set_list> typed::basic_set>::set_list() const { auto res = isl::basic_set::set_list(); return typed::set_list>(res); } template typed::fixed_box> typed::basic_set>::simple_fixed_box_hull() const { auto res = isl::basic_set::simple_fixed_box_hull(); return typed::fixed_box>(res); } template typed::space> typed::basic_set>::space() const { auto res = isl::basic_set::space(); return typed::space>(res); } template typed::set> typed::basic_set>::subtract(const typed::set> &set2) const { auto res = isl::basic_set::subtract(set2); return typed::set>(res); } template typed::union_set> typed::basic_set>::subtract(const typed::union_set> &uset2) const { auto res = isl::basic_set::subtract(uset2); return typed::union_set>(res); } template typed::set> typed::basic_set>::to_set() const { auto res = isl::basic_set::to_set(); return typed::set>(res); } template typed::union_set> typed::basic_set>::to_union_set() const { auto res = isl::basic_set::to_union_set(); return typed::union_set>(res); } template typed::map, pair> typed::basic_set>::translation() const { auto res = isl::basic_set::translation(); return typed::map, pair>(res); } template template typed::map> typed::basic_set>::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::basic_set::unbind_params_insert_domain(domain); return typed::map>(res); } template typed::set> typed::basic_set>::unite(const typed::basic_set> &bset2) const { auto res = isl::basic_set::unite(bset2); return typed::set>(res); } template typed::set> typed::basic_set>::unite(const typed::set> &set2) const { auto res = isl::basic_set::unite(set2); return typed::set>(res); } template typed::union_set> typed::basic_set>::unite(const typed::union_set> &uset2) const { auto res = isl::basic_set::unite(uset2); return typed::union_set>(res); } template typed::set> typed::basic_set>::unite(const typed::point> &bset2) const { auto res = isl::basic_set::unite(bset2); return typed::set>(res); } template typed::map typed::basic_set>::unwrap() const { auto res = isl::basic_set::unwrap(); return typed::map(res); } template typed::set> typed::basic_set>::upper_bound(const typed::multi_pw_aff> &upper) const { auto res = isl::basic_set::upper_bound(upper); return typed::set>(res); } template typed::set> typed::basic_set>::upper_bound(const typed::multi_val> &upper) const { auto res = isl::basic_set::upper_bound(upper); return typed::set>(res); } template typed::set> typed::basic_set>::wrapped_reverse() const { auto res = isl::basic_set::wrapped_reverse(); return typed::set>(res); } template typed::fixed_box::fixed_box(const isl::ctx &ctx, const std::string &str) : isl::fixed_box(ctx, str) { } template typed::multi_aff typed::fixed_box::offset() const { auto res = isl::fixed_box::offset(); return typed::multi_aff(res); } template typed::multi_val typed::fixed_box::size() const { auto res = isl::fixed_box::size(); return typed::multi_val(res); } template typed::space typed::fixed_box::space() const { auto res = isl::fixed_box::space(); return typed::space(res); } template typed::fixed_box::fixed_box(const isl::ctx &ctx, const std::string &str) : isl::fixed_box(ctx, str) { } template typed::multi_aff typed::fixed_box::offset() const { auto res = isl::fixed_box::offset(); return typed::multi_aff(res); } template typed::multi_val typed::fixed_box::size() const { auto res = isl::fixed_box::size(); return typed::multi_val(res); } template typed::space typed::fixed_box::space() const { auto res = isl::fixed_box::space(); return typed::space(res); } typed::id::id(const isl::ctx &ctx, const std::string &str) : isl::id(ctx, str) { } typed::id_list::id_list(const isl::ctx &ctx, int n) : isl::id_list(ctx, n) { } typed::id_list::id_list(const typed::id &el) : isl::id_list(el) { } typed::id_list::id_list(const isl::ctx &ctx, const std::string &str) : isl::id_list(ctx, str) { } typed::id_list typed::id_list::add(const typed::id &el) const { auto res = isl::id_list::add(el); return typed::id_list(res); } typed::id_list typed::id_list::add(const std::string &el) const { auto res = isl::id_list::add(el); return typed::id_list(res); } typed::id typed::id_list::at(int index) const { auto res = isl::id_list::at(index); return typed::id(res); } typed::id_list typed::id_list::drop(unsigned int first, unsigned int n) const { auto res = isl::id_list::drop(first, n); return typed::id_list(res); } void typed::id_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::id arg0) { return fn(typed::id(arg0)); }; return isl::id_list::foreach(lambda_fn); } void typed::id_list::foreach_scc(const std::function, typed::id)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::id arg0, isl::id arg1) { return follows(typed::id(arg0), typed::id(arg1)); }; auto lambda_fn = [&] (isl::id_list arg0) { return fn(typed::id_list(arg0)); }; return isl::id_list::foreach_scc(lambda_follows, lambda_fn); } typed::id_list typed::id_list::set_at(int index, const typed::id &el) const { auto res = isl::id_list::set_at(index, el); return typed::id_list(res); } typed::id_list typed::id_list::set_at(int index, const std::string &el) const { auto res = isl::id_list::set_at(index, el); return typed::id_list(res); } template typed::map::map(const typed::basic_map &bmap) : isl::map(bmap) { } template typed::map::map(const isl::ctx &ctx, const std::string &str) : isl::map(ctx, str) { } template template typed::map typed::map::apply_domain(const typed::map &map2) const { auto res = isl::map::apply_domain(map2); return typed::map(res); } template template typed::union_map typed::map::apply_domain(const typed::union_map &umap2) const { auto res = isl::map::apply_domain(umap2); return typed::union_map(res); } template template typed::map typed::map::apply_domain(const typed::basic_map &map2) const { auto res = isl::map::apply_domain(map2); return typed::map(res); } template template typed::map typed::map::apply_range(const typed::map &map2) const { auto res = isl::map::apply_range(map2); return typed::map(res); } template template typed::union_map typed::map::apply_range(const typed::union_map &umap2) const { auto res = isl::map::apply_range(umap2); return typed::union_map(res); } template template typed::map typed::map::apply_range(const typed::basic_map &map2) const { auto res = isl::map::apply_range(map2); return typed::map(res); } template typed::map typed::map::as_map() const { auto res = isl::map::as_map(); return typed::map(res); } template typed::multi_union_pw_aff typed::map::as_multi_union_pw_aff() const { auto res = isl::map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::map::as_pw_multi_aff() const { auto res = isl::map::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::map::as_union_pw_multi_aff() const { auto res = isl::map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::set typed::map::bind_domain(const typed::multi_id &tuple) const { auto res = isl::map::bind_domain(tuple); return typed::set(res); } template typed::set typed::map::bind_range(const typed::multi_id &tuple) const { auto res = isl::map::bind_range(tuple); return typed::set(res); } template typed::map typed::map::coalesce() const { auto res = isl::map::coalesce(); return typed::map(res); } template typed::map typed::map::detect_equalities() const { auto res = isl::map::detect_equalities(); return typed::map(res); } template typed::set typed::map::domain() const { auto res = isl::map::domain(); return typed::set(res); } template typed::union_map, Domain> typed::map::domain_map() const { auto res = isl::map::domain_map(); return typed::union_map, Domain>(res); } template typed::union_pw_multi_aff, Domain> typed::map::domain_map_union_pw_multi_aff() const { auto res = isl::map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Domain>(res); } template template typed::map, Range> typed::map::domain_product(const typed::map &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Range>(res); } template template typed::union_map, Range> typed::map::domain_product(const typed::union_map &umap2) const { auto res = isl::map::domain_product(umap2); return typed::union_map, Range>(res); } template template typed::map, Range> typed::map::domain_product(const typed::basic_map &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Range>(res); } template typed::map typed::map::drop_unused_params() const { auto res = isl::map::drop_unused_params(); return typed::map(res); } template bool typed::map::every_map(const std::function)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map(arg0)); }; return isl::map::every_map(lambda_test); } template typed::map typed::map::extract_map(const typed::space &space) const { auto res = isl::map::extract_map(space); return typed::map(res); } template void typed::map::foreach_basic_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map(arg0)); }; return isl::map::foreach_basic_map(lambda_fn); } template void typed::map::foreach_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::map::foreach_map(lambda_fn); } template typed::map typed::map::gist(const typed::map &context) const { auto res = isl::map::gist(context); return typed::map(res); } template typed::union_map typed::map::gist(const typed::union_map &context) const { auto res = isl::map::gist(context); return typed::union_map(res); } template typed::map typed::map::gist(const typed::basic_map &context) const { auto res = isl::map::gist(context); return typed::map(res); } template typed::map typed::map::gist_domain(const typed::set &context) const { auto res = isl::map::gist_domain(context); return typed::map(res); } template typed::union_map typed::map::gist_domain(const typed::union_set &uset) const { auto res = isl::map::gist_domain(uset); return typed::union_map(res); } template typed::map typed::map::gist_domain(const typed::basic_set &context) const { auto res = isl::map::gist_domain(context); return typed::map(res); } template typed::map typed::map::gist_domain(const typed::point &context) const { auto res = isl::map::gist_domain(context); return typed::map(res); } template typed::map typed::map::gist_params(const typed::set<> &context) const { auto res = isl::map::gist_params(context); return typed::map(res); } template typed::map typed::map::gist_params(const typed::basic_set<> &context) const { auto res = isl::map::gist_params(context); return typed::map(res); } template typed::map typed::map::gist_params(const typed::point<> &context) const { auto res = isl::map::gist_params(context); return typed::map(res); } template typed::map typed::map::intersect(const typed::map &map2) const { auto res = isl::map::intersect(map2); return typed::map(res); } template typed::union_map typed::map::intersect(const typed::union_map &umap2) const { auto res = isl::map::intersect(umap2); return typed::union_map(res); } template typed::map typed::map::intersect(const typed::basic_map &map2) const { auto res = isl::map::intersect(map2); return typed::map(res); } template typed::map typed::map::intersect_domain(const typed::set &set) const { auto res = isl::map::intersect_domain(set); return typed::map(res); } template typed::union_map typed::map::intersect_domain(const typed::space &space) const { auto res = isl::map::intersect_domain(space); return typed::union_map(res); } template typed::union_map typed::map::intersect_domain(const typed::union_set &uset) const { auto res = isl::map::intersect_domain(uset); return typed::union_map(res); } template typed::map typed::map::intersect_domain(const typed::basic_set &set) const { auto res = isl::map::intersect_domain(set); return typed::map(res); } template typed::map typed::map::intersect_domain(const typed::point &set) const { auto res = isl::map::intersect_domain(set); return typed::map(res); } template typed::map typed::map::intersect_params(const typed::set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map(res); } template typed::map typed::map::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map(res); } template typed::map typed::map::intersect_params(const typed::point<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map(res); } template typed::map typed::map::intersect_range(const typed::set &set) const { auto res = isl::map::intersect_range(set); return typed::map(res); } template typed::union_map typed::map::intersect_range(const typed::space &space) const { auto res = isl::map::intersect_range(space); return typed::union_map(res); } template typed::union_map typed::map::intersect_range(const typed::union_set &uset) const { auto res = isl::map::intersect_range(uset); return typed::union_map(res); } template typed::map typed::map::intersect_range(const typed::basic_set &set) const { auto res = isl::map::intersect_range(set); return typed::map(res); } template typed::map typed::map::intersect_range(const typed::point &set) const { auto res = isl::map::intersect_range(set); return typed::map(res); } template typed::map typed::map::lexmax() const { auto res = isl::map::lexmax(); return typed::map(res); } template typed::pw_multi_aff typed::map::lexmax_pw_multi_aff() const { auto res = isl::map::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::map::lexmin() const { auto res = isl::map::lexmin(); return typed::map(res); } template typed::pw_multi_aff typed::map::lexmin_pw_multi_aff() const { auto res = isl::map::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::map::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::multi_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::pw_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::pw_multi_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map_list typed::map::map_list() const { auto res = isl::map::map_list(); return typed::map_list(res); } template typed::multi_pw_aff typed::map::max_multi_pw_aff() const { auto res = isl::map::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::map::min_multi_pw_aff() const { auto res = isl::map::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::set<> typed::map::params() const { auto res = isl::map::params(); return typed::set<>(res); } template template typed::map typed::map::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::map::preimage_domain(ma); return typed::map(res); } template template typed::map typed::map::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::map::preimage_domain(mpa); return typed::map(res); } template template typed::map typed::map::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::map::preimage_domain(pma); return typed::map(res); } template template typed::union_map typed::map::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::map::preimage_domain(upma); return typed::union_map(res); } template template typed::map typed::map::preimage_range(const typed::multi_aff &ma) const { auto res = isl::map::preimage_range(ma); return typed::map(res); } template template typed::map typed::map::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::map::preimage_range(pma); return typed::map(res); } template template typed::union_map typed::map::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::map::preimage_range(upma); return typed::union_map(res); } template template typed::map, pair> typed::map::product(const typed::map &map2) const { auto res = isl::map::product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::map::product(const typed::union_map &umap2) const { auto res = isl::map::product(umap2); return typed::union_map, pair>(res); } template template typed::map, pair> typed::map::product(const typed::basic_map &map2) const { auto res = isl::map::product(map2); return typed::map, pair>(res); } template typed::map typed::map::project_out_all_params() const { auto res = isl::map::project_out_all_params(); return typed::map(res); } template typed::map typed::map::project_out_param(const typed::id &id) const { auto res = isl::map::project_out_param(id); return typed::map(res); } template typed::map typed::map::project_out_param(const std::string &id) const { auto res = isl::map::project_out_param(id); return typed::map(res); } template typed::map typed::map::project_out_param(const typed::id_list &list) const { auto res = isl::map::project_out_param(list); return typed::map(res); } template typed::set typed::map::range() const { auto res = isl::map::range(); return typed::set(res); } template typed::fixed_box typed::map::range_lattice_tile() const { auto res = isl::map::range_lattice_tile(); return typed::fixed_box(res); } template typed::union_map, Range> typed::map::range_map() const { auto res = isl::map::range_map(); return typed::union_map, Range>(res); } template template typed::map> typed::map::range_product(const typed::map &map2) const { auto res = isl::map::range_product(map2); return typed::map>(res); } template template typed::union_map> typed::map::range_product(const typed::union_map &umap2) const { auto res = isl::map::range_product(umap2); return typed::union_map>(res); } template template typed::map> typed::map::range_product(const typed::basic_map &map2) const { auto res = isl::map::range_product(map2); return typed::map>(res); } template typed::fixed_box typed::map::range_simple_fixed_box_hull() const { auto res = isl::map::range_simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::map typed::map::reverse() const { auto res = isl::map::reverse(); return typed::map(res); } template template typed::map typed::map::set_domain_tuple(const typed::id &id) const { auto res = isl::map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::map::set_domain_tuple(const std::string &id) const { auto res = isl::map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::map::set_range_tuple(const typed::id &id) const { auto res = isl::map::set_range_tuple(id); return typed::map(res); } template template typed::map typed::map::set_range_tuple(const std::string &id) const { auto res = isl::map::set_range_tuple(id); return typed::map(res); } template typed::space typed::map::space() const { auto res = isl::map::space(); return typed::space(res); } template typed::map typed::map::subtract(const typed::map &map2) const { auto res = isl::map::subtract(map2); return typed::map(res); } template typed::union_map typed::map::subtract(const typed::union_map &umap2) const { auto res = isl::map::subtract(umap2); return typed::union_map(res); } template typed::map typed::map::subtract(const typed::basic_map &map2) const { auto res = isl::map::subtract(map2); return typed::map(res); } template typed::union_map typed::map::subtract_domain(const typed::union_set &dom) const { auto res = isl::map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::map::subtract_range(const typed::union_set &dom) const { auto res = isl::map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::map::to_union_map() const { auto res = isl::map::to_union_map(); return typed::union_map(res); } template typed::map typed::map::unite(const typed::map &map2) const { auto res = isl::map::unite(map2); return typed::map(res); } template typed::union_map typed::map::unite(const typed::union_map &umap2) const { auto res = isl::map::unite(umap2); return typed::union_map(res); } template typed::map typed::map::unite(const typed::basic_map &map2) const { auto res = isl::map::unite(map2); return typed::map(res); } template typed::map typed::map::universe(const typed::space &space) { auto res = isl::map::universe(space); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::multi_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::pw_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::pw_multi_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::set> typed::map::wrap() const { auto res = isl::map::wrap(); return typed::set>(res); } template typed::map, Range2>::map(const typed::basic_map, Range2> &bmap) : isl::map(bmap) { } template typed::map, Range2>::map(const isl::ctx &ctx, const std::string &str) : isl::map(ctx, str) { } template template typed::map typed::map, Range2>::apply_domain(const typed::map, Domain2> &map2) const { auto res = isl::map::apply_domain(map2); return typed::map(res); } template template typed::union_map typed::map, Range2>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::map::apply_domain(umap2); return typed::union_map(res); } template template typed::map typed::map, Range2>::apply_domain(const typed::basic_map, Domain2> &map2) const { auto res = isl::map::apply_domain(map2); return typed::map(res); } template template typed::map, Arg3> typed::map, Range2>::apply_range(const typed::map &map2) const { auto res = isl::map::apply_range(map2); return typed::map, Arg3>(res); } template template typed::union_map, Arg3> typed::map, Range2>::apply_range(const typed::union_map &umap2) const { auto res = isl::map::apply_range(umap2); return typed::union_map, Arg3>(res); } template template typed::map, Arg3> typed::map, Range2>::apply_range(const typed::basic_map &map2) const { auto res = isl::map::apply_range(map2); return typed::map, Arg3>(res); } template typed::map, Range2> typed::map, Range2>::as_map() const { auto res = isl::map::as_map(); return typed::map, Range2>(res); } template typed::multi_union_pw_aff, Range2> typed::map, Range2>::as_multi_union_pw_aff() const { auto res = isl::map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range2>(res); } template typed::pw_multi_aff, Range2> typed::map, Range2>::as_pw_multi_aff() const { auto res = isl::map::as_pw_multi_aff(); return typed::pw_multi_aff, Range2>(res); } template typed::union_pw_multi_aff, Range2> typed::map, Range2>::as_union_pw_multi_aff() const { auto res = isl::map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range2>(res); } template typed::set typed::map, Range2>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::map::bind_domain(tuple); return typed::set(res); } template typed::set> typed::map, Range2>::bind_range(const typed::multi_id &tuple) const { auto res = isl::map::bind_range(tuple); return typed::set>(res); } template typed::map, Range2> typed::map, Range2>::coalesce() const { auto res = isl::map::coalesce(); return typed::map, Range2>(res); } template typed::map> typed::map, Range2>::curry() const { auto res = isl::map::curry(); return typed::map>(res); } template typed::map, Range2> typed::map, Range2>::detect_equalities() const { auto res = isl::map::detect_equalities(); return typed::map, Range2>(res); } template typed::set> typed::map, Range2>::domain() const { auto res = isl::map::domain(); return typed::set>(res); } template typed::map typed::map, Range2>::domain_factor_domain() const { auto res = isl::map::domain_factor_domain(); return typed::map(res); } template typed::map typed::map, Range2>::domain_factor_range() const { auto res = isl::map::domain_factor_range(); return typed::map(res); } template typed::union_map, Range2>, pair> typed::map, Range2>::domain_map() const { auto res = isl::map::domain_map(); return typed::union_map, Range2>, pair>(res); } template typed::union_pw_multi_aff, Range2>, pair> typed::map, Range2>::domain_map_union_pw_multi_aff() const { auto res = isl::map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range2>, pair>(res); } template template typed::map, Domain2>, Range2> typed::map, Range2>::domain_product(const typed::map &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain2>, Range2>(res); } template template typed::union_map, Domain2>, Range2> typed::map, Range2>::domain_product(const typed::union_map &umap2) const { auto res = isl::map::domain_product(umap2); return typed::union_map, Domain2>, Range2>(res); } template template typed::map, Domain2>, Range2> typed::map, Range2>::domain_product(const typed::basic_map &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain2>, Range2>(res); } template typed::map, Range2> typed::map, Range2>::domain_reverse() const { auto res = isl::map::domain_reverse(); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::drop_unused_params() const { auto res = isl::map::drop_unused_params(); return typed::map, Range2>(res); } template bool typed::map, Range2>::every_map(const std::function, Range2>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, Range2>(arg0)); }; return isl::map::every_map(lambda_test); } template typed::map, Range2> typed::map, Range2>::extract_map(const typed::space, Range2> &space) const { auto res = isl::map::extract_map(space); return typed::map, Range2>(res); } template typed::map typed::map, Range2>::flatten_domain() const { auto res = isl::map::flatten_domain(); return typed::map(res); } template void typed::map, Range2>::foreach_basic_map(const std::function, Range2>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map, Range2>(arg0)); }; return isl::map::foreach_basic_map(lambda_fn); } template void typed::map, Range2>::foreach_map(const std::function, Range2>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, Range2>(arg0)); }; return isl::map::foreach_map(lambda_fn); } template typed::map, Range2> typed::map, Range2>::gist(const typed::map, Range2> &context) const { auto res = isl::map::gist(context); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::gist(const typed::union_map, Range2> &context) const { auto res = isl::map::gist(context); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist(const typed::basic_map, Range2> &context) const { auto res = isl::map::gist(context); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist_domain(const typed::set> &context) const { auto res = isl::map::gist_domain(context); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::gist_domain(const typed::union_set> &uset) const { auto res = isl::map::gist_domain(uset); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist_domain(const typed::basic_set> &context) const { auto res = isl::map::gist_domain(context); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist_domain(const typed::point> &context) const { auto res = isl::map::gist_domain(context); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist_params(const typed::set<> &context) const { auto res = isl::map::gist_params(context); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist_params(const typed::basic_set<> &context) const { auto res = isl::map::gist_params(context); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::gist_params(const typed::point<> &context) const { auto res = isl::map::gist_params(context); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect(const typed::map, Range2> &map2) const { auto res = isl::map::intersect(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::intersect(const typed::union_map, Range2> &umap2) const { auto res = isl::map::intersect(umap2); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect(const typed::basic_map, Range2> &map2) const { auto res = isl::map::intersect(map2); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_domain(const typed::set> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::intersect_domain(const typed::space> &space) const { auto res = isl::map::intersect_domain(space); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::map::intersect_domain(uset); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_domain(const typed::basic_set> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_domain(const typed::point> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_domain_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_domain_wrapped_domain(const typed::point &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_params(const typed::point<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_range(const typed::set &set) const { auto res = isl::map::intersect_range(set); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::intersect_range(const typed::space &space) const { auto res = isl::map::intersect_range(space); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::intersect_range(const typed::union_set &uset) const { auto res = isl::map::intersect_range(uset); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_range(const typed::basic_set &set) const { auto res = isl::map::intersect_range(set); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::intersect_range(const typed::point &set) const { auto res = isl::map::intersect_range(set); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lexmax() const { auto res = isl::map::lexmax(); return typed::map, Range2>(res); } template typed::pw_multi_aff, Range2> typed::map, Range2>::lexmax_pw_multi_aff() const { auto res = isl::map::lexmax_pw_multi_aff(); return typed::pw_multi_aff, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lexmin() const { auto res = isl::map::lexmin(); return typed::map, Range2>(res); } template typed::pw_multi_aff, Range2> typed::map, Range2>::lexmin_pw_multi_aff() const { auto res = isl::map::lexmin_pw_multi_aff(); return typed::pw_multi_aff, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lower_bound(const typed::multi_pw_aff, Range2> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lower_bound(const typed::aff, Range2> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lower_bound(const typed::multi_aff, Range2> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lower_bound(const typed::pw_aff, Range2> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::lower_bound(const typed::pw_multi_aff, Range2> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, Range2>(res); } template typed::map_list, Range2> typed::map, Range2>::map_list() const { auto res = isl::map::map_list(); return typed::map_list, Range2>(res); } template typed::multi_pw_aff, Range2> typed::map, Range2>::max_multi_pw_aff() const { auto res = isl::map::max_multi_pw_aff(); return typed::multi_pw_aff, Range2>(res); } template typed::multi_pw_aff, Range2> typed::map, Range2>::min_multi_pw_aff() const { auto res = isl::map::min_multi_pw_aff(); return typed::multi_pw_aff, Range2>(res); } template typed::set<> typed::map, Range2>::params() const { auto res = isl::map::params(); return typed::set<>(res); } template template typed::map typed::map, Range2>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::map::preimage_domain(ma); return typed::map(res); } template template typed::map typed::map, Range2>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::map::preimage_domain(mpa); return typed::map(res); } template template typed::map typed::map, Range2>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::map::preimage_domain(pma); return typed::map(res); } template template typed::union_map typed::map, Range2>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::map::preimage_domain(upma); return typed::union_map(res); } template template typed::map, Arg3> typed::map, Range2>::preimage_range(const typed::multi_aff &ma) const { auto res = isl::map::preimage_range(ma); return typed::map, Arg3>(res); } template template typed::map, Arg3> typed::map, Range2>::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::map::preimage_range(pma); return typed::map, Arg3>(res); } template template typed::union_map, Arg3> typed::map, Range2>::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::map::preimage_range(upma); return typed::union_map, Arg3>(res); } template template typed::map, Domain2>, pair> typed::map, Range2>::product(const typed::map &map2) const { auto res = isl::map::product(map2); return typed::map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::map, Range2>::product(const typed::union_map &umap2) const { auto res = isl::map::product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::map, Domain2>, pair> typed::map, Range2>::product(const typed::basic_map &map2) const { auto res = isl::map::product(map2); return typed::map, Domain2>, pair>(res); } template typed::map, Range2> typed::map, Range2>::project_out_all_params() const { auto res = isl::map::project_out_all_params(); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::project_out_param(const typed::id &id) const { auto res = isl::map::project_out_param(id); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::project_out_param(const std::string &id) const { auto res = isl::map::project_out_param(id); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::project_out_param(const typed::id_list &list) const { auto res = isl::map::project_out_param(list); return typed::map, Range2>(res); } template typed::set typed::map, Range2>::range() const { auto res = isl::map::range(); return typed::set(res); } template typed::fixed_box, Range2> typed::map, Range2>::range_lattice_tile() const { auto res = isl::map::range_lattice_tile(); return typed::fixed_box, Range2>(res); } template typed::union_map, Range2>, Range2> typed::map, Range2>::range_map() const { auto res = isl::map::range_map(); return typed::union_map, Range2>, Range2>(res); } template template typed::map, pair> typed::map, Range2>::range_product(const typed::map, Arg3> &map2) const { auto res = isl::map::range_product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::map, Range2>::range_product(const typed::union_map, Arg3> &umap2) const { auto res = isl::map::range_product(umap2); return typed::union_map, pair>(res); } template template typed::map, pair> typed::map, Range2>::range_product(const typed::basic_map, Arg3> &map2) const { auto res = isl::map::range_product(map2); return typed::map, pair>(res); } template typed::fixed_box, Range2> typed::map, Range2>::range_simple_fixed_box_hull() const { auto res = isl::map::range_simple_fixed_box_hull(); return typed::fixed_box, Range2>(res); } template typed::map> typed::map, Range2>::reverse() const { auto res = isl::map::reverse(); return typed::map>(res); } template template typed::map, Arg2> typed::map, Range2>::set_range_tuple(const typed::id &id) const { auto res = isl::map::set_range_tuple(id); return typed::map, Arg2>(res); } template template typed::map, Arg2> typed::map, Range2>::set_range_tuple(const std::string &id) const { auto res = isl::map::set_range_tuple(id); return typed::map, Arg2>(res); } template typed::space, Range2> typed::map, Range2>::space() const { auto res = isl::map::space(); return typed::space, Range2>(res); } template typed::map, Range2> typed::map, Range2>::subtract(const typed::map, Range2> &map2) const { auto res = isl::map::subtract(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::subtract(const typed::union_map, Range2> &umap2) const { auto res = isl::map::subtract(umap2); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::subtract(const typed::basic_map, Range2> &map2) const { auto res = isl::map::subtract(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::map::subtract_domain(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::subtract_range(const typed::union_set &dom) const { auto res = isl::map::subtract_range(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::to_union_map() const { auto res = isl::map::to_union_map(); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::unite(const typed::map, Range2> &map2) const { auto res = isl::map::unite(map2); return typed::map, Range2>(res); } template typed::union_map, Range2> typed::map, Range2>::unite(const typed::union_map, Range2> &umap2) const { auto res = isl::map::unite(umap2); return typed::union_map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::unite(const typed::basic_map, Range2> &map2) const { auto res = isl::map::unite(map2); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::universe(const typed::space, Range2> &space) { auto res = isl::map::universe(space); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::upper_bound(const typed::multi_pw_aff, Range2> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::upper_bound(const typed::aff, Range2> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::upper_bound(const typed::multi_aff, Range2> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::upper_bound(const typed::pw_aff, Range2> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, Range2>(res); } template typed::map, Range2> typed::map, Range2>::upper_bound(const typed::pw_multi_aff, Range2> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, Range2>(res); } template typed::set, Range2>> typed::map, Range2>::wrap() const { auto res = isl::map::wrap(); return typed::set, Range2>>(res); } template typed::map::map(const typed::basic_map &bmap) : isl::map(bmap) { } template typed::map::map(const isl::ctx &ctx, const std::string &str) : isl::map(ctx, str) { } template template typed::map typed::map::apply_domain(const typed::map &map2) const { auto res = isl::map::apply_domain(map2); return typed::map(res); } template template typed::union_map typed::map::apply_domain(const typed::union_map &umap2) const { auto res = isl::map::apply_domain(umap2); return typed::union_map(res); } template template typed::map typed::map::apply_domain(const typed::basic_map &map2) const { auto res = isl::map::apply_domain(map2); return typed::map(res); } template template typed::map typed::map::apply_range(const typed::map &map2) const { auto res = isl::map::apply_range(map2); return typed::map(res); } template template typed::union_map typed::map::apply_range(const typed::union_map &umap2) const { auto res = isl::map::apply_range(umap2); return typed::union_map(res); } template template typed::map typed::map::apply_range(const typed::basic_map &map2) const { auto res = isl::map::apply_range(map2); return typed::map(res); } template typed::map typed::map::as_map() const { auto res = isl::map::as_map(); return typed::map(res); } template typed::multi_union_pw_aff typed::map::as_multi_union_pw_aff() const { auto res = isl::map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::map::as_pw_multi_aff() const { auto res = isl::map::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::map::as_union_pw_multi_aff() const { auto res = isl::map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::set typed::map::bind_domain(const typed::multi_id &tuple) const { auto res = isl::map::bind_domain(tuple); return typed::set(res); } template typed::set typed::map::bind_range(const typed::multi_id &tuple) const { auto res = isl::map::bind_range(tuple); return typed::set(res); } template typed::map typed::map::coalesce() const { auto res = isl::map::coalesce(); return typed::map(res); } template typed::set typed::map::deltas() const { auto res = isl::map::deltas(); return typed::set(res); } template typed::map typed::map::detect_equalities() const { auto res = isl::map::detect_equalities(); return typed::map(res); } template typed::set typed::map::domain() const { auto res = isl::map::domain(); return typed::set(res); } template typed::union_map, Domain> typed::map::domain_map() const { auto res = isl::map::domain_map(); return typed::union_map, Domain>(res); } template typed::union_pw_multi_aff, Domain> typed::map::domain_map_union_pw_multi_aff() const { auto res = isl::map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Domain>(res); } template template typed::map, Domain> typed::map::domain_product(const typed::map &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain>(res); } template template typed::union_map, Domain> typed::map::domain_product(const typed::union_map &umap2) const { auto res = isl::map::domain_product(umap2); return typed::union_map, Domain>(res); } template template typed::map, Domain> typed::map::domain_product(const typed::basic_map &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain>(res); } template typed::map typed::map::drop_unused_params() const { auto res = isl::map::drop_unused_params(); return typed::map(res); } template template typed::map typed::map::eq_at(const typed::multi_pw_aff &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map(res); } template template typed::union_map typed::map::eq_at(const typed::multi_union_pw_aff &mupa) const { auto res = isl::map::eq_at(mupa); return typed::union_map(res); } template typed::map typed::map::eq_at(const typed::aff &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map(res); } template template typed::map typed::map::eq_at(const typed::multi_aff &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map(res); } template typed::map typed::map::eq_at(const typed::pw_aff &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map(res); } template template typed::map typed::map::eq_at(const typed::pw_multi_aff &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map(res); } template bool typed::map::every_map(const std::function)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map(arg0)); }; return isl::map::every_map(lambda_test); } template typed::map typed::map::extract_map(const typed::space &space) const { auto res = isl::map::extract_map(space); return typed::map(res); } template void typed::map::foreach_basic_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map(arg0)); }; return isl::map::foreach_basic_map(lambda_fn); } template void typed::map::foreach_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::map::foreach_map(lambda_fn); } template typed::map typed::map::gist(const typed::map &context) const { auto res = isl::map::gist(context); return typed::map(res); } template typed::union_map typed::map::gist(const typed::union_map &context) const { auto res = isl::map::gist(context); return typed::union_map(res); } template typed::map typed::map::gist(const typed::basic_map &context) const { auto res = isl::map::gist(context); return typed::map(res); } template typed::map typed::map::gist_domain(const typed::set &context) const { auto res = isl::map::gist_domain(context); return typed::map(res); } template typed::union_map typed::map::gist_domain(const typed::union_set &uset) const { auto res = isl::map::gist_domain(uset); return typed::union_map(res); } template typed::map typed::map::gist_domain(const typed::basic_set &context) const { auto res = isl::map::gist_domain(context); return typed::map(res); } template typed::map typed::map::gist_domain(const typed::point &context) const { auto res = isl::map::gist_domain(context); return typed::map(res); } template typed::map typed::map::gist_params(const typed::set<> &context) const { auto res = isl::map::gist_params(context); return typed::map(res); } template typed::map typed::map::gist_params(const typed::basic_set<> &context) const { auto res = isl::map::gist_params(context); return typed::map(res); } template typed::map typed::map::gist_params(const typed::point<> &context) const { auto res = isl::map::gist_params(context); return typed::map(res); } template typed::map typed::map::intersect(const typed::map &map2) const { auto res = isl::map::intersect(map2); return typed::map(res); } template typed::union_map typed::map::intersect(const typed::union_map &umap2) const { auto res = isl::map::intersect(umap2); return typed::union_map(res); } template typed::map typed::map::intersect(const typed::basic_map &map2) const { auto res = isl::map::intersect(map2); return typed::map(res); } template typed::map typed::map::intersect_domain(const typed::set &set) const { auto res = isl::map::intersect_domain(set); return typed::map(res); } template typed::union_map typed::map::intersect_domain(const typed::space &space) const { auto res = isl::map::intersect_domain(space); return typed::union_map(res); } template typed::union_map typed::map::intersect_domain(const typed::union_set &uset) const { auto res = isl::map::intersect_domain(uset); return typed::union_map(res); } template typed::map typed::map::intersect_domain(const typed::basic_set &set) const { auto res = isl::map::intersect_domain(set); return typed::map(res); } template typed::map typed::map::intersect_domain(const typed::point &set) const { auto res = isl::map::intersect_domain(set); return typed::map(res); } template typed::map typed::map::intersect_params(const typed::set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map(res); } template typed::map typed::map::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map(res); } template typed::map typed::map::intersect_params(const typed::point<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map(res); } template typed::map typed::map::intersect_range(const typed::set &set) const { auto res = isl::map::intersect_range(set); return typed::map(res); } template typed::union_map typed::map::intersect_range(const typed::space &space) const { auto res = isl::map::intersect_range(space); return typed::union_map(res); } template typed::union_map typed::map::intersect_range(const typed::union_set &uset) const { auto res = isl::map::intersect_range(uset); return typed::union_map(res); } template typed::map typed::map::intersect_range(const typed::basic_set &set) const { auto res = isl::map::intersect_range(set); return typed::map(res); } template typed::map typed::map::intersect_range(const typed::point &set) const { auto res = isl::map::intersect_range(set); return typed::map(res); } template template typed::map typed::map::lex_ge_at(const typed::multi_pw_aff &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map(res); } template typed::map typed::map::lex_ge_at(const typed::aff &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_ge_at(const typed::multi_aff &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map(res); } template typed::map typed::map::lex_ge_at(const typed::pw_aff &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_ge_at(const typed::pw_multi_aff &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_gt_at(const typed::multi_pw_aff &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map(res); } template typed::map typed::map::lex_gt_at(const typed::aff &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_gt_at(const typed::multi_aff &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map(res); } template typed::map typed::map::lex_gt_at(const typed::pw_aff &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_gt_at(const typed::pw_multi_aff &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_le_at(const typed::multi_pw_aff &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map(res); } template typed::map typed::map::lex_le_at(const typed::aff &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_le_at(const typed::multi_aff &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map(res); } template typed::map typed::map::lex_le_at(const typed::pw_aff &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_le_at(const typed::pw_multi_aff &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_lt_at(const typed::multi_pw_aff &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map(res); } template typed::map typed::map::lex_lt_at(const typed::aff &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_lt_at(const typed::multi_aff &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map(res); } template typed::map typed::map::lex_lt_at(const typed::pw_aff &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map(res); } template template typed::map typed::map::lex_lt_at(const typed::pw_multi_aff &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map(res); } template typed::map typed::map::lexmax() const { auto res = isl::map::lexmax(); return typed::map(res); } template typed::pw_multi_aff typed::map::lexmax_pw_multi_aff() const { auto res = isl::map::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::map::lexmin() const { auto res = isl::map::lexmin(); return typed::map(res); } template typed::pw_multi_aff typed::map::lexmin_pw_multi_aff() const { auto res = isl::map::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::map typed::map::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::multi_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::pw_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map typed::map::lower_bound(const typed::pw_multi_aff &lower) const { auto res = isl::map::lower_bound(lower); return typed::map(res); } template typed::map_list typed::map::map_list() const { auto res = isl::map::map_list(); return typed::map_list(res); } template typed::multi_pw_aff typed::map::max_multi_pw_aff() const { auto res = isl::map::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::map::min_multi_pw_aff() const { auto res = isl::map::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::set<> typed::map::params() const { auto res = isl::map::params(); return typed::set<>(res); } template template typed::map typed::map::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::map::preimage_domain(ma); return typed::map(res); } template template typed::map typed::map::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::map::preimage_domain(mpa); return typed::map(res); } template template typed::map typed::map::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::map::preimage_domain(pma); return typed::map(res); } template template typed::union_map typed::map::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::map::preimage_domain(upma); return typed::union_map(res); } template template typed::map typed::map::preimage_range(const typed::multi_aff &ma) const { auto res = isl::map::preimage_range(ma); return typed::map(res); } template template typed::map typed::map::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::map::preimage_range(pma); return typed::map(res); } template template typed::union_map typed::map::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::map::preimage_range(upma); return typed::union_map(res); } template template typed::map, pair> typed::map::product(const typed::map &map2) const { auto res = isl::map::product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::map::product(const typed::union_map &umap2) const { auto res = isl::map::product(umap2); return typed::union_map, pair>(res); } template template typed::map, pair> typed::map::product(const typed::basic_map &map2) const { auto res = isl::map::product(map2); return typed::map, pair>(res); } template typed::map typed::map::project_out_all_params() const { auto res = isl::map::project_out_all_params(); return typed::map(res); } template typed::map typed::map::project_out_param(const typed::id &id) const { auto res = isl::map::project_out_param(id); return typed::map(res); } template typed::map typed::map::project_out_param(const std::string &id) const { auto res = isl::map::project_out_param(id); return typed::map(res); } template typed::map typed::map::project_out_param(const typed::id_list &list) const { auto res = isl::map::project_out_param(list); return typed::map(res); } template typed::set typed::map::range() const { auto res = isl::map::range(); return typed::set(res); } template typed::fixed_box typed::map::range_lattice_tile() const { auto res = isl::map::range_lattice_tile(); return typed::fixed_box(res); } template typed::union_map, Domain> typed::map::range_map() const { auto res = isl::map::range_map(); return typed::union_map, Domain>(res); } template template typed::map> typed::map::range_product(const typed::map &map2) const { auto res = isl::map::range_product(map2); return typed::map>(res); } template template typed::union_map> typed::map::range_product(const typed::union_map &umap2) const { auto res = isl::map::range_product(umap2); return typed::union_map>(res); } template template typed::map> typed::map::range_product(const typed::basic_map &map2) const { auto res = isl::map::range_product(map2); return typed::map>(res); } template typed::fixed_box typed::map::range_simple_fixed_box_hull() const { auto res = isl::map::range_simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::map typed::map::reverse() const { auto res = isl::map::reverse(); return typed::map(res); } template template typed::map typed::map::set_domain_tuple(const typed::id &id) const { auto res = isl::map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::map::set_domain_tuple(const std::string &id) const { auto res = isl::map::set_domain_tuple(id); return typed::map(res); } template template typed::map typed::map::set_range_tuple(const typed::id &id) const { auto res = isl::map::set_range_tuple(id); return typed::map(res); } template template typed::map typed::map::set_range_tuple(const std::string &id) const { auto res = isl::map::set_range_tuple(id); return typed::map(res); } template typed::space typed::map::space() const { auto res = isl::map::space(); return typed::space(res); } template typed::map typed::map::subtract(const typed::map &map2) const { auto res = isl::map::subtract(map2); return typed::map(res); } template typed::union_map typed::map::subtract(const typed::union_map &umap2) const { auto res = isl::map::subtract(umap2); return typed::union_map(res); } template typed::map typed::map::subtract(const typed::basic_map &map2) const { auto res = isl::map::subtract(map2); return typed::map(res); } template typed::union_map typed::map::subtract_domain(const typed::union_set &dom) const { auto res = isl::map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::map::subtract_range(const typed::union_set &dom) const { auto res = isl::map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::map::to_union_map() const { auto res = isl::map::to_union_map(); return typed::union_map(res); } template typed::map typed::map::unite(const typed::map &map2) const { auto res = isl::map::unite(map2); return typed::map(res); } template typed::union_map typed::map::unite(const typed::union_map &umap2) const { auto res = isl::map::unite(umap2); return typed::union_map(res); } template typed::map typed::map::unite(const typed::basic_map &map2) const { auto res = isl::map::unite(map2); return typed::map(res); } template typed::map typed::map::universe(const typed::space &space) { auto res = isl::map::universe(space); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::multi_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::pw_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::map typed::map::upper_bound(const typed::pw_multi_aff &upper) const { auto res = isl::map::upper_bound(upper); return typed::map(res); } template typed::set> typed::map::wrap() const { auto res = isl::map::wrap(); return typed::set>(res); } template typed::map>::map(const typed::basic_map> &bmap) : isl::map(bmap) { } template typed::map>::map(const isl::ctx &ctx, const std::string &str) : isl::map(ctx, str) { } template template typed::map> typed::map>::apply_domain(const typed::map &map2) const { auto res = isl::map::apply_domain(map2); return typed::map>(res); } template template typed::union_map> typed::map>::apply_domain(const typed::union_map &umap2) const { auto res = isl::map::apply_domain(umap2); return typed::union_map>(res); } template template typed::map> typed::map>::apply_domain(const typed::basic_map &map2) const { auto res = isl::map::apply_domain(map2); return typed::map>(res); } template template typed::map typed::map>::apply_range(const typed::map, Arg3> &map2) const { auto res = isl::map::apply_range(map2); return typed::map(res); } template template typed::union_map typed::map>::apply_range(const typed::union_map, Arg3> &umap2) const { auto res = isl::map::apply_range(umap2); return typed::union_map(res); } template template typed::map typed::map>::apply_range(const typed::basic_map, Arg3> &map2) const { auto res = isl::map::apply_range(map2); return typed::map(res); } template typed::map> typed::map>::as_map() const { auto res = isl::map::as_map(); return typed::map>(res); } template typed::multi_union_pw_aff> typed::map>::as_multi_union_pw_aff() const { auto res = isl::map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::map>::as_pw_multi_aff() const { auto res = isl::map::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::map>::as_union_pw_multi_aff() const { auto res = isl::map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff>(res); } template typed::set> typed::map>::bind_domain(const typed::multi_id &tuple) const { auto res = isl::map::bind_domain(tuple); return typed::set>(res); } template typed::set typed::map>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::map::bind_range(tuple); return typed::set(res); } template typed::map> typed::map>::coalesce() const { auto res = isl::map::coalesce(); return typed::map>(res); } template typed::map> typed::map>::detect_equalities() const { auto res = isl::map::detect_equalities(); return typed::map>(res); } template typed::set typed::map>::domain() const { auto res = isl::map::domain(); return typed::set(res); } template typed::union_map>, Domain> typed::map>::domain_map() const { auto res = isl::map::domain_map(); return typed::union_map>, Domain>(res); } template typed::union_pw_multi_aff>, Domain> typed::map>::domain_map_union_pw_multi_aff() const { auto res = isl::map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff>, Domain>(res); } template template typed::map, pair> typed::map>::domain_product(const typed::map> &map2) const { auto res = isl::map::domain_product(map2); return typed::map, pair>(res); } template template typed::union_map, pair> typed::map>::domain_product(const typed::union_map> &umap2) const { auto res = isl::map::domain_product(umap2); return typed::union_map, pair>(res); } template template typed::map, pair> typed::map>::domain_product(const typed::basic_map> &map2) const { auto res = isl::map::domain_product(map2); return typed::map, pair>(res); } template typed::map> typed::map>::drop_unused_params() const { auto res = isl::map::drop_unused_params(); return typed::map>(res); } template bool typed::map>::every_map(const std::function>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map>(arg0)); }; return isl::map::every_map(lambda_test); } template typed::map> typed::map>::extract_map(const typed::space> &space) const { auto res = isl::map::extract_map(space); return typed::map>(res); } template typed::map typed::map>::flatten_range() const { auto res = isl::map::flatten_range(); return typed::map(res); } template void typed::map>::foreach_basic_map(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map>(arg0)); }; return isl::map::foreach_basic_map(lambda_fn); } template void typed::map>::foreach_map(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map>(arg0)); }; return isl::map::foreach_map(lambda_fn); } template typed::map> typed::map>::gist(const typed::map> &context) const { auto res = isl::map::gist(context); return typed::map>(res); } template typed::union_map> typed::map>::gist(const typed::union_map> &context) const { auto res = isl::map::gist(context); return typed::union_map>(res); } template typed::map> typed::map>::gist(const typed::basic_map> &context) const { auto res = isl::map::gist(context); return typed::map>(res); } template typed::map> typed::map>::gist_domain(const typed::set &context) const { auto res = isl::map::gist_domain(context); return typed::map>(res); } template typed::union_map> typed::map>::gist_domain(const typed::union_set &uset) const { auto res = isl::map::gist_domain(uset); return typed::union_map>(res); } template typed::map> typed::map>::gist_domain(const typed::basic_set &context) const { auto res = isl::map::gist_domain(context); return typed::map>(res); } template typed::map> typed::map>::gist_domain(const typed::point &context) const { auto res = isl::map::gist_domain(context); return typed::map>(res); } template typed::map> typed::map>::gist_params(const typed::set<> &context) const { auto res = isl::map::gist_params(context); return typed::map>(res); } template typed::map> typed::map>::gist_params(const typed::basic_set<> &context) const { auto res = isl::map::gist_params(context); return typed::map>(res); } template typed::map> typed::map>::gist_params(const typed::point<> &context) const { auto res = isl::map::gist_params(context); return typed::map>(res); } template typed::map> typed::map>::intersect(const typed::map> &map2) const { auto res = isl::map::intersect(map2); return typed::map>(res); } template typed::union_map> typed::map>::intersect(const typed::union_map> &umap2) const { auto res = isl::map::intersect(umap2); return typed::union_map>(res); } template typed::map> typed::map>::intersect(const typed::basic_map> &map2) const { auto res = isl::map::intersect(map2); return typed::map>(res); } template typed::map> typed::map>::intersect_domain(const typed::set &set) const { auto res = isl::map::intersect_domain(set); return typed::map>(res); } template typed::union_map> typed::map>::intersect_domain(const typed::space &space) const { auto res = isl::map::intersect_domain(space); return typed::union_map>(res); } template typed::union_map> typed::map>::intersect_domain(const typed::union_set &uset) const { auto res = isl::map::intersect_domain(uset); return typed::union_map>(res); } template typed::map> typed::map>::intersect_domain(const typed::basic_set &set) const { auto res = isl::map::intersect_domain(set); return typed::map>(res); } template typed::map> typed::map>::intersect_domain(const typed::point &set) const { auto res = isl::map::intersect_domain(set); return typed::map>(res); } template typed::map> typed::map>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map>(res); } template typed::map> typed::map>::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map>(res); } template typed::map> typed::map>::intersect_params(const typed::point<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map>(res); } template typed::map> typed::map>::intersect_range(const typed::set> &set) const { auto res = isl::map::intersect_range(set); return typed::map>(res); } template typed::union_map> typed::map>::intersect_range(const typed::space> &space) const { auto res = isl::map::intersect_range(space); return typed::union_map>(res); } template typed::union_map> typed::map>::intersect_range(const typed::union_set> &uset) const { auto res = isl::map::intersect_range(uset); return typed::union_map>(res); } template typed::map> typed::map>::intersect_range(const typed::basic_set> &set) const { auto res = isl::map::intersect_range(set); return typed::map>(res); } template typed::map> typed::map>::intersect_range(const typed::point> &set) const { auto res = isl::map::intersect_range(set); return typed::map>(res); } template typed::map> typed::map>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map>(res); } template typed::union_map> typed::map>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::union_map>(res); } template typed::map> typed::map>::intersect_range_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map>(res); } template typed::map> typed::map>::intersect_range_wrapped_domain(const typed::point &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map>(res); } template typed::map> typed::map>::lexmax() const { auto res = isl::map::lexmax(); return typed::map>(res); } template typed::pw_multi_aff> typed::map>::lexmax_pw_multi_aff() const { auto res = isl::map::lexmax_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::map> typed::map>::lexmin() const { auto res = isl::map::lexmin(); return typed::map>(res); } template typed::pw_multi_aff> typed::map>::lexmin_pw_multi_aff() const { auto res = isl::map::lexmin_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::map> typed::map>::lower_bound(const typed::multi_pw_aff> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map>(res); } template typed::map> typed::map>::lower_bound(const typed::aff> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map>(res); } template typed::map> typed::map>::lower_bound(const typed::multi_aff> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map>(res); } template typed::map> typed::map>::lower_bound(const typed::pw_aff> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map>(res); } template typed::map> typed::map>::lower_bound(const typed::pw_multi_aff> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map>(res); } template typed::map_list> typed::map>::map_list() const { auto res = isl::map::map_list(); return typed::map_list>(res); } template typed::multi_pw_aff> typed::map>::max_multi_pw_aff() const { auto res = isl::map::max_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::map>::min_multi_pw_aff() const { auto res = isl::map::min_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::set<> typed::map>::params() const { auto res = isl::map::params(); return typed::set<>(res); } template template typed::map> typed::map>::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::map::preimage_domain(ma); return typed::map>(res); } template template typed::map> typed::map>::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::map::preimage_domain(mpa); return typed::map>(res); } template template typed::map> typed::map>::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::map::preimage_domain(pma); return typed::map>(res); } template template typed::union_map> typed::map>::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::map::preimage_domain(upma); return typed::union_map>(res); } template template typed::map typed::map>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::map::preimage_range(ma); return typed::map(res); } template template typed::map typed::map>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::map::preimage_range(pma); return typed::map(res); } template template typed::union_map typed::map>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::map::preimage_range(upma); return typed::union_map(res); } template template typed::map, pair, Arg3>> typed::map>::product(const typed::map &map2) const { auto res = isl::map::product(map2); return typed::map, pair, Arg3>>(res); } template template typed::union_map, pair, Arg3>> typed::map>::product(const typed::union_map &umap2) const { auto res = isl::map::product(umap2); return typed::union_map, pair, Arg3>>(res); } template template typed::map, pair, Arg3>> typed::map>::product(const typed::basic_map &map2) const { auto res = isl::map::product(map2); return typed::map, pair, Arg3>>(res); } template typed::map> typed::map>::project_out_all_params() const { auto res = isl::map::project_out_all_params(); return typed::map>(res); } template typed::map> typed::map>::project_out_param(const typed::id &id) const { auto res = isl::map::project_out_param(id); return typed::map>(res); } template typed::map> typed::map>::project_out_param(const std::string &id) const { auto res = isl::map::project_out_param(id); return typed::map>(res); } template typed::map> typed::map>::project_out_param(const typed::id_list &list) const { auto res = isl::map::project_out_param(list); return typed::map>(res); } template typed::set> typed::map>::range() const { auto res = isl::map::range(); return typed::set>(res); } template typed::map typed::map>::range_factor_domain() const { auto res = isl::map::range_factor_domain(); return typed::map(res); } template typed::map typed::map>::range_factor_range() const { auto res = isl::map::range_factor_range(); return typed::map(res); } template typed::fixed_box> typed::map>::range_lattice_tile() const { auto res = isl::map::range_lattice_tile(); return typed::fixed_box>(res); } template typed::union_map>, pair> typed::map>::range_map() const { auto res = isl::map::range_map(); return typed::union_map>, pair>(res); } template template typed::map, Arg3>> typed::map>::range_product(const typed::map &map2) const { auto res = isl::map::range_product(map2); return typed::map, Arg3>>(res); } template template typed::union_map, Arg3>> typed::map>::range_product(const typed::union_map &umap2) const { auto res = isl::map::range_product(umap2); return typed::union_map, Arg3>>(res); } template template typed::map, Arg3>> typed::map>::range_product(const typed::basic_map &map2) const { auto res = isl::map::range_product(map2); return typed::map, Arg3>>(res); } template typed::map> typed::map>::range_reverse() const { auto res = isl::map::range_reverse(); return typed::map>(res); } template typed::fixed_box> typed::map>::range_simple_fixed_box_hull() const { auto res = isl::map::range_simple_fixed_box_hull(); return typed::fixed_box>(res); } template typed::map, Domain> typed::map>::reverse() const { auto res = isl::map::reverse(); return typed::map, Domain>(res); } template template typed::map> typed::map>::set_domain_tuple(const typed::id &id) const { auto res = isl::map::set_domain_tuple(id); return typed::map>(res); } template template typed::map> typed::map>::set_domain_tuple(const std::string &id) const { auto res = isl::map::set_domain_tuple(id); return typed::map>(res); } template typed::space> typed::map>::space() const { auto res = isl::map::space(); return typed::space>(res); } template typed::map> typed::map>::subtract(const typed::map> &map2) const { auto res = isl::map::subtract(map2); return typed::map>(res); } template typed::union_map> typed::map>::subtract(const typed::union_map> &umap2) const { auto res = isl::map::subtract(umap2); return typed::union_map>(res); } template typed::map> typed::map>::subtract(const typed::basic_map> &map2) const { auto res = isl::map::subtract(map2); return typed::map>(res); } template typed::union_map> typed::map>::subtract_domain(const typed::union_set &dom) const { auto res = isl::map::subtract_domain(dom); return typed::union_map>(res); } template typed::union_map> typed::map>::subtract_range(const typed::union_set> &dom) const { auto res = isl::map::subtract_range(dom); return typed::union_map>(res); } template typed::union_map> typed::map>::to_union_map() const { auto res = isl::map::to_union_map(); return typed::union_map>(res); } template typed::map, Range2> typed::map>::uncurry() const { auto res = isl::map::uncurry(); return typed::map, Range2>(res); } template typed::map> typed::map>::unite(const typed::map> &map2) const { auto res = isl::map::unite(map2); return typed::map>(res); } template typed::union_map> typed::map>::unite(const typed::union_map> &umap2) const { auto res = isl::map::unite(umap2); return typed::union_map>(res); } template typed::map> typed::map>::unite(const typed::basic_map> &map2) const { auto res = isl::map::unite(map2); return typed::map>(res); } template typed::map> typed::map>::universe(const typed::space> &space) { auto res = isl::map::universe(space); return typed::map>(res); } template typed::map> typed::map>::upper_bound(const typed::multi_pw_aff> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map>(res); } template typed::map> typed::map>::upper_bound(const typed::aff> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map>(res); } template typed::map> typed::map>::upper_bound(const typed::multi_aff> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map>(res); } template typed::map> typed::map>::upper_bound(const typed::pw_aff> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map>(res); } template typed::map> typed::map>::upper_bound(const typed::pw_multi_aff> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map>(res); } template typed::set>> typed::map>::wrap() const { auto res = isl::map::wrap(); return typed::set>>(res); } template typed::map, pair>::map(const typed::basic_map, pair> &bmap) : isl::map(bmap) { } template typed::map, pair>::map(const isl::ctx &ctx, const std::string &str) : isl::map(ctx, str) { } template template typed::map> typed::map, pair>::apply_domain(const typed::map, Domain2> &map2) const { auto res = isl::map::apply_domain(map2); return typed::map>(res); } template template typed::union_map> typed::map, pair>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::map::apply_domain(umap2); return typed::union_map>(res); } template template typed::map> typed::map, pair>::apply_domain(const typed::basic_map, Domain2> &map2) const { auto res = isl::map::apply_domain(map2); return typed::map>(res); } template template typed::map, Range2> typed::map, pair>::apply_range(const typed::map, Range2> &map2) const { auto res = isl::map::apply_range(map2); return typed::map, Range2>(res); } template template typed::union_map, Range2> typed::map, pair>::apply_range(const typed::union_map, Range2> &umap2) const { auto res = isl::map::apply_range(umap2); return typed::union_map, Range2>(res); } template template typed::map, Range2> typed::map, pair>::apply_range(const typed::basic_map, Range2> &map2) const { auto res = isl::map::apply_range(map2); return typed::map, Range2>(res); } template typed::map, pair> typed::map, pair>::as_map() const { auto res = isl::map::as_map(); return typed::map, pair>(res); } template typed::multi_union_pw_aff, pair> typed::map, pair>::as_multi_union_pw_aff() const { auto res = isl::map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::map, pair>::as_pw_multi_aff() const { auto res = isl::map::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::map, pair>::as_union_pw_multi_aff() const { auto res = isl::map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::set> typed::map, pair>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::map::bind_domain(tuple); return typed::set>(res); } template typed::set> typed::map, pair>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::map::bind_range(tuple); return typed::set>(res); } template typed::map, pair> typed::map, pair>::coalesce() const { auto res = isl::map::coalesce(); return typed::map, pair>(res); } template typed::map>> typed::map, pair>::curry() const { auto res = isl::map::curry(); return typed::map>>(res); } template typed::set> typed::map, pair>::deltas() const { auto res = isl::map::deltas(); return typed::set>(res); } template typed::map, pair> typed::map, pair>::detect_equalities() const { auto res = isl::map::detect_equalities(); return typed::map, pair>(res); } template typed::set> typed::map, pair>::domain() const { auto res = isl::map::domain(); return typed::set>(res); } template typed::map> typed::map, pair>::domain_factor_domain() const { auto res = isl::map::domain_factor_domain(); return typed::map>(res); } template typed::map> typed::map, pair>::domain_factor_range() const { auto res = isl::map::domain_factor_range(); return typed::map>(res); } template typed::union_map, pair>, pair> typed::map, pair>::domain_map() const { auto res = isl::map::domain_map(); return typed::union_map, pair>, pair>(res); } template typed::union_pw_multi_aff, pair>, pair> typed::map, pair>::domain_map_union_pw_multi_aff() const { auto res = isl::map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>, pair>(res); } template template typed::map, Domain2>, pair> typed::map, pair>::domain_product(const typed::map> &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::map, pair>::domain_product(const typed::union_map> &umap2) const { auto res = isl::map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::map, Domain2>, pair> typed::map, pair>::domain_product(const typed::basic_map> &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain2>, pair>(res); } template typed::map, pair> typed::map, pair>::domain_reverse() const { auto res = isl::map::domain_reverse(); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::drop_unused_params() const { auto res = isl::map::drop_unused_params(); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::eq_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map, pair>(res); } template template typed::union_map, pair> typed::map, pair>::eq_at(const typed::multi_union_pw_aff, Range> &mupa) const { auto res = isl::map::eq_at(mupa); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::eq_at(const typed::aff, Anonymous> &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::eq_at(const typed::multi_aff, Range> &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::eq_at(const typed::pw_aff, Anonymous> &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::eq_at(const typed::pw_multi_aff, Range> &mpa) const { auto res = isl::map::eq_at(mpa); return typed::map, pair>(res); } template bool typed::map, pair>::every_map(const std::function, pair>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, pair>(arg0)); }; return isl::map::every_map(lambda_test); } template typed::map, pair> typed::map, pair>::extract_map(const typed::space, pair> &space) const { auto res = isl::map::extract_map(space); return typed::map, pair>(res); } template typed::map> typed::map, pair>::flatten_domain() const { auto res = isl::map::flatten_domain(); return typed::map>(res); } template typed::map, Anonymous> typed::map, pair>::flatten_range() const { auto res = isl::map::flatten_range(); return typed::map, Anonymous>(res); } template void typed::map, pair>::foreach_basic_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map, pair>(arg0)); }; return isl::map::foreach_basic_map(lambda_fn); } template void typed::map, pair>::foreach_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, pair>(arg0)); }; return isl::map::foreach_map(lambda_fn); } template typed::map, pair> typed::map, pair>::gist(const typed::map, pair> &context) const { auto res = isl::map::gist(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::gist(const typed::union_map, pair> &context) const { auto res = isl::map::gist(context); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::gist(const typed::basic_map, pair> &context) const { auto res = isl::map::gist(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_domain(const typed::set> &context) const { auto res = isl::map::gist_domain(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::gist_domain(const typed::union_set> &uset) const { auto res = isl::map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_domain(const typed::basic_set> &context) const { auto res = isl::map::gist_domain(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_domain(const typed::point> &context) const { auto res = isl::map::gist_domain(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_params(const typed::set<> &context) const { auto res = isl::map::gist_params(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_params(const typed::basic_set<> &context) const { auto res = isl::map::gist_params(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_params(const typed::point<> &context) const { auto res = isl::map::gist_params(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect(const typed::map, pair> &map2) const { auto res = isl::map::intersect(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect(const typed::union_map, pair> &umap2) const { auto res = isl::map::intersect(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect(const typed::basic_map, pair> &map2) const { auto res = isl::map::intersect(map2); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain(const typed::set> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::map::intersect_domain(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::map::intersect_domain(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain(const typed::basic_set> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain(const typed::point> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::point &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_params(const typed::point<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range(const typed::set> &set) const { auto res = isl::map::intersect_range(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_range(const typed::space> &space) const { auto res = isl::map::intersect_range(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_range(const typed::union_set> &uset) const { auto res = isl::map::intersect_range(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range(const typed::basic_set> &set) const { auto res = isl::map::intersect_range(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range(const typed::point> &set) const { auto res = isl::map::intersect_range(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::point &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_ge_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_ge_at(const typed::aff, Anonymous> &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_ge_at(const typed::multi_aff, Range> &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_ge_at(const typed::pw_aff, Anonymous> &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_ge_at(const typed::pw_multi_aff, Range> &mpa) const { auto res = isl::map::lex_ge_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_gt_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_gt_at(const typed::aff, Anonymous> &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_gt_at(const typed::multi_aff, Range> &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_gt_at(const typed::pw_aff, Anonymous> &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_gt_at(const typed::pw_multi_aff, Range> &mpa) const { auto res = isl::map::lex_gt_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_le_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_le_at(const typed::aff, Anonymous> &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_le_at(const typed::multi_aff, Range> &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_le_at(const typed::pw_aff, Anonymous> &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_le_at(const typed::pw_multi_aff, Range> &mpa) const { auto res = isl::map::lex_le_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_lt_at(const typed::multi_pw_aff, Range> &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_lt_at(const typed::aff, Anonymous> &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_lt_at(const typed::multi_aff, Range> &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lex_lt_at(const typed::pw_aff, Anonymous> &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map, pair>(res); } template template typed::map, pair> typed::map, pair>::lex_lt_at(const typed::pw_multi_aff, Range> &mpa) const { auto res = isl::map::lex_lt_at(mpa); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lexmax() const { auto res = isl::map::lexmax(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::map, pair>::lexmax_pw_multi_aff() const { auto res = isl::map::lexmax_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::map, pair>::lexmin() const { auto res = isl::map::lexmin(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::map, pair>::lexmin_pw_multi_aff() const { auto res = isl::map::lexmin_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::multi_pw_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::multi_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::pw_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::pw_multi_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map_list, pair> typed::map, pair>::map_list() const { auto res = isl::map::map_list(); return typed::map_list, pair>(res); } template typed::multi_pw_aff, pair> typed::map, pair>::max_multi_pw_aff() const { auto res = isl::map::max_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::map, pair>::min_multi_pw_aff() const { auto res = isl::map::min_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::set<> typed::map, pair>::params() const { auto res = isl::map::params(); return typed::set<>(res); } template template typed::map> typed::map, pair>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::map::preimage_domain(ma); return typed::map>(res); } template template typed::map> typed::map, pair>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::map::preimage_domain(mpa); return typed::map>(res); } template template typed::map> typed::map, pair>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::map::preimage_domain(pma); return typed::map>(res); } template template typed::union_map> typed::map, pair>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::map::preimage_domain(upma); return typed::union_map>(res); } template template typed::map, Range2> typed::map, pair>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::map::preimage_range(ma); return typed::map, Range2>(res); } template template typed::map, Range2> typed::map, pair>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::map::preimage_range(pma); return typed::map, Range2>(res); } template template typed::union_map, Range2> typed::map, pair>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::map::preimage_range(upma); return typed::union_map, Range2>(res); } template template typed::map, Domain2>, pair, Range2>> typed::map, pair>::product(const typed::map &map2) const { auto res = isl::map::product(map2); return typed::map, Domain2>, pair, Range2>>(res); } template template typed::union_map, Domain2>, pair, Range2>> typed::map, pair>::product(const typed::union_map &umap2) const { auto res = isl::map::product(umap2); return typed::union_map, Domain2>, pair, Range2>>(res); } template template typed::map, Domain2>, pair, Range2>> typed::map, pair>::product(const typed::basic_map &map2) const { auto res = isl::map::product(map2); return typed::map, Domain2>, pair, Range2>>(res); } template typed::map, pair> typed::map, pair>::project_out_all_params() const { auto res = isl::map::project_out_all_params(); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::project_out_param(const typed::id &id) const { auto res = isl::map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::project_out_param(const std::string &id) const { auto res = isl::map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::project_out_param(const typed::id_list &list) const { auto res = isl::map::project_out_param(list); return typed::map, pair>(res); } template typed::set> typed::map, pair>::range() const { auto res = isl::map::range(); return typed::set>(res); } template typed::map, T1> typed::map, pair>::range_factor_domain() const { auto res = isl::map::range_factor_domain(); return typed::map, T1>(res); } template typed::map, T2> typed::map, pair>::range_factor_range() const { auto res = isl::map::range_factor_range(); return typed::map, T2>(res); } template typed::fixed_box, pair> typed::map, pair>::range_lattice_tile() const { auto res = isl::map::range_lattice_tile(); return typed::fixed_box, pair>(res); } template typed::union_map, pair>, pair> typed::map, pair>::range_map() const { auto res = isl::map::range_map(); return typed::union_map, pair>, pair>(res); } template template typed::map, pair, Range2>> typed::map, pair>::range_product(const typed::map, Range2> &map2) const { auto res = isl::map::range_product(map2); return typed::map, pair, Range2>>(res); } template template typed::union_map, pair, Range2>> typed::map, pair>::range_product(const typed::union_map, Range2> &umap2) const { auto res = isl::map::range_product(umap2); return typed::union_map, pair, Range2>>(res); } template template typed::map, pair, Range2>> typed::map, pair>::range_product(const typed::basic_map, Range2> &map2) const { auto res = isl::map::range_product(map2); return typed::map, pair, Range2>>(res); } template typed::map, pair> typed::map, pair>::range_reverse() const { auto res = isl::map::range_reverse(); return typed::map, pair>(res); } template typed::fixed_box, pair> typed::map, pair>::range_simple_fixed_box_hull() const { auto res = isl::map::range_simple_fixed_box_hull(); return typed::fixed_box, pair>(res); } template typed::map, pair> typed::map, pair>::reverse() const { auto res = isl::map::reverse(); return typed::map, pair>(res); } template typed::space, pair> typed::map, pair>::space() const { auto res = isl::map::space(); return typed::space, pair>(res); } template typed::map, pair> typed::map, pair>::subtract(const typed::map, pair> &map2) const { auto res = isl::map::subtract(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::subtract(const typed::union_map, pair> &umap2) const { auto res = isl::map::subtract(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::subtract(const typed::basic_map, pair> &map2) const { auto res = isl::map::subtract(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::subtract_range(const typed::union_set> &dom) const { auto res = isl::map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::to_union_map() const { auto res = isl::map::to_union_map(); return typed::union_map, pair>(res); } template typed::map, T1>, T2> typed::map, pair>::uncurry() const { auto res = isl::map::uncurry(); return typed::map, T1>, T2>(res); } template typed::map, pair> typed::map, pair>::unite(const typed::map, pair> &map2) const { auto res = isl::map::unite(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::unite(const typed::union_map, pair> &umap2) const { auto res = isl::map::unite(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::unite(const typed::basic_map, pair> &map2) const { auto res = isl::map::unite(map2); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::universe(const typed::space, pair> &space) { auto res = isl::map::universe(space); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::multi_pw_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::multi_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::pw_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::pw_multi_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::set, pair>> typed::map, pair>::wrap() const { auto res = isl::map::wrap(); return typed::set, pair>>(res); } template typed::map, pair>::map(const typed::basic_map, pair> &bmap) : isl::map(bmap) { } template typed::map, pair>::map(const isl::ctx &ctx, const std::string &str) : isl::map(ctx, str) { } template template typed::map> typed::map, pair>::apply_domain(const typed::map, Domain2> &map2) const { auto res = isl::map::apply_domain(map2); return typed::map>(res); } template template typed::union_map> typed::map, pair>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::map::apply_domain(umap2); return typed::union_map>(res); } template template typed::map> typed::map, pair>::apply_domain(const typed::basic_map, Domain2> &map2) const { auto res = isl::map::apply_domain(map2); return typed::map>(res); } template template typed::map, Arg2> typed::map, pair>::apply_range(const typed::map, Arg2> &map2) const { auto res = isl::map::apply_range(map2); return typed::map, Arg2>(res); } template template typed::union_map, Arg2> typed::map, pair>::apply_range(const typed::union_map, Arg2> &umap2) const { auto res = isl::map::apply_range(umap2); return typed::union_map, Arg2>(res); } template template typed::map, Arg2> typed::map, pair>::apply_range(const typed::basic_map, Arg2> &map2) const { auto res = isl::map::apply_range(map2); return typed::map, Arg2>(res); } template typed::map, pair> typed::map, pair>::as_map() const { auto res = isl::map::as_map(); return typed::map, pair>(res); } template typed::multi_union_pw_aff, pair> typed::map, pair>::as_multi_union_pw_aff() const { auto res = isl::map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::map, pair>::as_pw_multi_aff() const { auto res = isl::map::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::map, pair>::as_union_pw_multi_aff() const { auto res = isl::map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::set> typed::map, pair>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::map::bind_domain(tuple); return typed::set>(res); } template typed::set> typed::map, pair>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::map::bind_range(tuple); return typed::set>(res); } template typed::map, pair> typed::map, pair>::coalesce() const { auto res = isl::map::coalesce(); return typed::map, pair>(res); } template typed::map>> typed::map, pair>::curry() const { auto res = isl::map::curry(); return typed::map>>(res); } template typed::map, pair> typed::map, pair>::detect_equalities() const { auto res = isl::map::detect_equalities(); return typed::map, pair>(res); } template typed::set> typed::map, pair>::domain() const { auto res = isl::map::domain(); return typed::set>(res); } template typed::map> typed::map, pair>::domain_factor_domain() const { auto res = isl::map::domain_factor_domain(); return typed::map>(res); } template typed::map> typed::map, pair>::domain_factor_range() const { auto res = isl::map::domain_factor_range(); return typed::map>(res); } template typed::union_map, pair>, pair> typed::map, pair>::domain_map() const { auto res = isl::map::domain_map(); return typed::union_map, pair>, pair>(res); } template typed::union_pw_multi_aff, pair>, pair> typed::map, pair>::domain_map_union_pw_multi_aff() const { auto res = isl::map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>, pair>(res); } template template typed::map, Domain2>, pair> typed::map, pair>::domain_product(const typed::map> &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::map, pair>::domain_product(const typed::union_map> &umap2) const { auto res = isl::map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::map, Domain2>, pair> typed::map, pair>::domain_product(const typed::basic_map> &map2) const { auto res = isl::map::domain_product(map2); return typed::map, Domain2>, pair>(res); } template typed::map, pair> typed::map, pair>::domain_reverse() const { auto res = isl::map::domain_reverse(); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::drop_unused_params() const { auto res = isl::map::drop_unused_params(); return typed::map, pair>(res); } template bool typed::map, pair>::every_map(const std::function, pair>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, pair>(arg0)); }; return isl::map::every_map(lambda_test); } template typed::map, pair> typed::map, pair>::extract_map(const typed::space, pair> &space) const { auto res = isl::map::extract_map(space); return typed::map, pair>(res); } template typed::map> typed::map, pair>::flatten_domain() const { auto res = isl::map::flatten_domain(); return typed::map>(res); } template typed::map, Anonymous> typed::map, pair>::flatten_range() const { auto res = isl::map::flatten_range(); return typed::map, Anonymous>(res); } template void typed::map, pair>::foreach_basic_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::basic_map arg0) { return fn(typed::basic_map, pair>(arg0)); }; return isl::map::foreach_basic_map(lambda_fn); } template void typed::map, pair>::foreach_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, pair>(arg0)); }; return isl::map::foreach_map(lambda_fn); } template typed::map, pair> typed::map, pair>::gist(const typed::map, pair> &context) const { auto res = isl::map::gist(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::gist(const typed::union_map, pair> &context) const { auto res = isl::map::gist(context); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::gist(const typed::basic_map, pair> &context) const { auto res = isl::map::gist(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_domain(const typed::set> &context) const { auto res = isl::map::gist_domain(context); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::gist_domain(const typed::union_set> &uset) const { auto res = isl::map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_domain(const typed::basic_set> &context) const { auto res = isl::map::gist_domain(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_domain(const typed::point> &context) const { auto res = isl::map::gist_domain(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_params(const typed::set<> &context) const { auto res = isl::map::gist_params(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_params(const typed::basic_set<> &context) const { auto res = isl::map::gist_params(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::gist_params(const typed::point<> &context) const { auto res = isl::map::gist_params(context); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect(const typed::map, pair> &map2) const { auto res = isl::map::intersect(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect(const typed::union_map, pair> &umap2) const { auto res = isl::map::intersect(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect(const typed::basic_map, pair> &map2) const { auto res = isl::map::intersect(map2); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain(const typed::set> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::map::intersect_domain(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::map::intersect_domain(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain(const typed::basic_set> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain(const typed::point> &set) const { auto res = isl::map::intersect_domain(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_domain_wrapped_domain(const typed::point &domain) const { auto res = isl::map::intersect_domain_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_params(const typed::point<> ¶ms) const { auto res = isl::map::intersect_params(params); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range(const typed::set> &set) const { auto res = isl::map::intersect_range(set); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_range(const typed::space> &space) const { auto res = isl::map::intersect_range(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_range(const typed::union_set> &uset) const { auto res = isl::map::intersect_range(uset); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range(const typed::basic_set> &set) const { auto res = isl::map::intersect_range(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range(const typed::point> &set) const { auto res = isl::map::intersect_range(set); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::intersect_range_wrapped_domain(const typed::point &domain) const { auto res = isl::map::intersect_range_wrapped_domain(domain); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lexmax() const { auto res = isl::map::lexmax(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::map, pair>::lexmax_pw_multi_aff() const { auto res = isl::map::lexmax_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::map, pair>::lexmin() const { auto res = isl::map::lexmin(); return typed::map, pair>(res); } template typed::pw_multi_aff, pair> typed::map, pair>::lexmin_pw_multi_aff() const { auto res = isl::map::lexmin_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::multi_pw_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::multi_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::pw_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::lower_bound(const typed::pw_multi_aff, pair> &lower) const { auto res = isl::map::lower_bound(lower); return typed::map, pair>(res); } template typed::map_list, pair> typed::map, pair>::map_list() const { auto res = isl::map::map_list(); return typed::map_list, pair>(res); } template typed::multi_pw_aff, pair> typed::map, pair>::max_multi_pw_aff() const { auto res = isl::map::max_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::map, pair>::min_multi_pw_aff() const { auto res = isl::map::min_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::set<> typed::map, pair>::params() const { auto res = isl::map::params(); return typed::set<>(res); } template template typed::map> typed::map, pair>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::map::preimage_domain(ma); return typed::map>(res); } template template typed::map> typed::map, pair>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::map::preimage_domain(mpa); return typed::map>(res); } template template typed::map> typed::map, pair>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::map::preimage_domain(pma); return typed::map>(res); } template template typed::union_map> typed::map, pair>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::map::preimage_domain(upma); return typed::union_map>(res); } template template typed::map, Arg2> typed::map, pair>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::map::preimage_range(ma); return typed::map, Arg2>(res); } template template typed::map, Arg2> typed::map, pair>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::map::preimage_range(pma); return typed::map, Arg2>(res); } template template typed::union_map, Arg2> typed::map, pair>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::map::preimage_range(upma); return typed::union_map, Arg2>(res); } template template typed::map, Domain2>, pair, Arg2>> typed::map, pair>::product(const typed::map &map2) const { auto res = isl::map::product(map2); return typed::map, Domain2>, pair, Arg2>>(res); } template template typed::union_map, Domain2>, pair, Arg2>> typed::map, pair>::product(const typed::union_map &umap2) const { auto res = isl::map::product(umap2); return typed::union_map, Domain2>, pair, Arg2>>(res); } template template typed::map, Domain2>, pair, Arg2>> typed::map, pair>::product(const typed::basic_map &map2) const { auto res = isl::map::product(map2); return typed::map, Domain2>, pair, Arg2>>(res); } template typed::map, pair> typed::map, pair>::project_out_all_params() const { auto res = isl::map::project_out_all_params(); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::project_out_param(const typed::id &id) const { auto res = isl::map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::project_out_param(const std::string &id) const { auto res = isl::map::project_out_param(id); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::project_out_param(const typed::id_list &list) const { auto res = isl::map::project_out_param(list); return typed::map, pair>(res); } template typed::set> typed::map, pair>::range() const { auto res = isl::map::range(); return typed::set>(res); } template typed::map, Range> typed::map, pair>::range_factor_domain() const { auto res = isl::map::range_factor_domain(); return typed::map, Range>(res); } template typed::map, Range2> typed::map, pair>::range_factor_range() const { auto res = isl::map::range_factor_range(); return typed::map, Range2>(res); } template typed::fixed_box, pair> typed::map, pair>::range_lattice_tile() const { auto res = isl::map::range_lattice_tile(); return typed::fixed_box, pair>(res); } template typed::union_map, pair>, pair> typed::map, pair>::range_map() const { auto res = isl::map::range_map(); return typed::union_map, pair>, pair>(res); } template template typed::map, pair, Arg2>> typed::map, pair>::range_product(const typed::map, Arg2> &map2) const { auto res = isl::map::range_product(map2); return typed::map, pair, Arg2>>(res); } template template typed::union_map, pair, Arg2>> typed::map, pair>::range_product(const typed::union_map, Arg2> &umap2) const { auto res = isl::map::range_product(umap2); return typed::union_map, pair, Arg2>>(res); } template template typed::map, pair, Arg2>> typed::map, pair>::range_product(const typed::basic_map, Arg2> &map2) const { auto res = isl::map::range_product(map2); return typed::map, pair, Arg2>>(res); } template typed::map, pair> typed::map, pair>::range_reverse() const { auto res = isl::map::range_reverse(); return typed::map, pair>(res); } template typed::fixed_box, pair> typed::map, pair>::range_simple_fixed_box_hull() const { auto res = isl::map::range_simple_fixed_box_hull(); return typed::fixed_box, pair>(res); } template typed::map, pair> typed::map, pair>::reverse() const { auto res = isl::map::reverse(); return typed::map, pair>(res); } template typed::space, pair> typed::map, pair>::space() const { auto res = isl::map::space(); return typed::space, pair>(res); } template typed::map, pair> typed::map, pair>::subtract(const typed::map, pair> &map2) const { auto res = isl::map::subtract(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::subtract(const typed::union_map, pair> &umap2) const { auto res = isl::map::subtract(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::subtract(const typed::basic_map, pair> &map2) const { auto res = isl::map::subtract(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::subtract_range(const typed::union_set> &dom) const { auto res = isl::map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::map, pair>::to_union_map() const { auto res = isl::map::to_union_map(); return typed::union_map, pair>(res); } template typed::map, Range>, Range2> typed::map, pair>::uncurry() const { auto res = isl::map::uncurry(); return typed::map, Range>, Range2>(res); } template typed::map, pair> typed::map, pair>::unite(const typed::map, pair> &map2) const { auto res = isl::map::unite(map2); return typed::map, pair>(res); } template typed::union_map, pair> typed::map, pair>::unite(const typed::union_map, pair> &umap2) const { auto res = isl::map::unite(umap2); return typed::union_map, pair>(res); } template typed::map, pair> typed::map, pair>::unite(const typed::basic_map, pair> &map2) const { auto res = isl::map::unite(map2); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::universe(const typed::space, pair> &space) { auto res = isl::map::universe(space); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::multi_pw_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::multi_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::pw_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::map, pair> typed::map, pair>::upper_bound(const typed::pw_multi_aff, pair> &upper) const { auto res = isl::map::upper_bound(upper); return typed::map, pair>(res); } template typed::set, pair>> typed::map, pair>::wrap() const { auto res = isl::map::wrap(); return typed::set, pair>>(res); } template typed::map_list::map_list(const isl::ctx &ctx, int n) : isl::map_list(ctx, n) { } template typed::map_list::map_list(const typed::map &el) : isl::map_list(el) { } template typed::map_list::map_list(const isl::ctx &ctx, const std::string &str) : isl::map_list(ctx, str) { } template typed::map_list typed::map_list::add(const typed::map &el) const { auto res = isl::map_list::add(el); return typed::map_list(res); } template typed::map_list typed::map_list::add(const typed::basic_map &el) const { auto res = isl::map_list::add(el); return typed::map_list(res); } template typed::map typed::map_list::at(int index) const { auto res = isl::map_list::at(index); return typed::map(res); } template typed::map_list typed::map_list::drop(unsigned int first, unsigned int n) const { auto res = isl::map_list::drop(first, n); return typed::map_list(res); } template void typed::map_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::map_list::foreach(lambda_fn); } template void typed::map_list::foreach_scc(const std::function, typed::map)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::map arg0, isl::map arg1) { return follows(typed::map(arg0), typed::map(arg1)); }; auto lambda_fn = [&] (isl::map_list arg0) { return fn(typed::map_list(arg0)); }; return isl::map_list::foreach_scc(lambda_follows, lambda_fn); } template typed::map_list typed::map_list::set_at(int index, const typed::map &el) const { auto res = isl::map_list::set_at(index, el); return typed::map_list(res); } template typed::multi_aff::multi_aff(const typed::aff &aff) : isl::multi_aff(aff) { } template typed::multi_aff::multi_aff(const typed::space &space, const typed::aff_list &list) : isl::multi_aff(space, list) { } template typed::multi_aff::multi_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_aff(ctx, str) { } template typed::multi_aff typed::multi_aff::add(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::add(const typed::aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::multi_aff::add_constant(mv); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::add_constant(const typed::val &v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::add_constant(long v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff(res); } template template typed::union_pw_multi_aff typed::multi_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::as_multi_aff() const { auto res = isl::multi_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::as_multi_union_pw_aff() const { auto res = isl::multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::as_pw_multi_aff() const { auto res = isl::multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::multi_aff::as_set() const { auto res = isl::multi_aff::as_set(); return typed::set(res); } template typed::aff typed::multi_aff::at(int pos) const { auto res = isl::multi_aff::at(pos); return typed::aff(res); } template typed::basic_set<> typed::multi_aff::bind(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind(tuple); return typed::basic_set<>(res); } template typed::pw_multi_aff typed::multi_aff::coalesce() const { auto res = isl::multi_aff::coalesce(); return typed::pw_multi_aff(res); } template typed::multi_val typed::multi_aff::constant_multi_val() const { auto res = isl::multi_aff::constant_multi_val(); return typed::multi_val(res); } template typed::set<> typed::multi_aff::domain() const { auto res = isl::multi_aff::domain(); return typed::set<>(res); } template typed::pw_multi_aff typed::multi_aff::drop_unused_params() const { auto res = isl::multi_aff::drop_unused_params(); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::floor() const { auto res = isl::multi_aff::floor(); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist(const typed::set<> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::gist(const typed::union_set<> &context) const { auto res = isl::multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::gist(const typed::basic_set<> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist(const typed::point<> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist_params(const typed::set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist_params(const typed::point<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::identity() const { auto res = isl::multi_aff::identity(); return typed::multi_aff(res); } template template typed::multi_aff typed::multi_aff::insert_domain(const typed::space &domain) const { auto res = isl::multi_aff::insert_domain(domain); return typed::multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::intersect_params(const typed::set<> &set) const { auto res = isl::multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::aff_list typed::multi_aff::list() const { auto res = isl::multi_aff::list(); return typed::aff_list(res); } template typed::multi_pw_aff typed::multi_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_aff::max_multi_val() const { auto res = isl::multi_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::multi_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_aff::min_multi_val() const { auto res = isl::multi_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_aff typed::multi_aff::neg() const { auto res = isl::multi_aff::neg(); return typed::multi_aff(res); } template template typed::multi_aff> typed::multi_aff::product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff>(res); } template template typed::multi_pw_aff> typed::multi_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_pw_aff>(res); } template template typed::pw_multi_aff> typed::multi_aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::product(pma2); return typed::pw_multi_aff>(res); } template typed::multi_aff> typed::multi_aff::product(const typed::aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff>(res); } template typed::pw_multi_aff_list typed::multi_aff::pw_multi_aff_list() const { auto res = isl::multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template typed::multi_aff typed::multi_aff::scale(const typed::multi_val &mv) const { auto res = isl::multi_aff::scale(mv); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale(const typed::val &v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale(long v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_aff::scale_down(mv); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale_down(const typed::val &v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale_down(long v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::set_at(int pos, const typed::aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_aff typed::multi_aff::set_range_tuple(const typed::id &id) const { auto res = isl::multi_aff::set_range_tuple(id); return typed::multi_aff(res); } template template typed::multi_aff typed::multi_aff::set_range_tuple(const std::string &id) const { auto res = isl::multi_aff::set_range_tuple(id); return typed::multi_aff(res); } template typed::space typed::multi_aff::space() const { auto res = isl::multi_aff::space(); return typed::space(res); } template typed::multi_aff typed::multi_aff::sub(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::sub(const typed::aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::to_multi_pw_aff() const { auto res = isl::multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::to_multi_union_pw_aff() const { auto res = isl::multi_aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::to_pw_multi_aff() const { auto res = isl::multi_aff::to_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::to_union_pw_multi_aff() const { auto res = isl::multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template template typed::multi_aff typed::multi_aff::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::multi_aff::unbind_params_insert_domain(domain); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::multi_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff::multi_aff(const typed::aff &aff) : isl::multi_aff(aff) { } template typed::multi_aff::multi_aff(const typed::space &space, const typed::aff_list &list) : isl::multi_aff(space, list) { } template typed::multi_aff::multi_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_aff(ctx, str) { } template typed::multi_aff typed::multi_aff::add(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::add(const typed::aff &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::multi_aff::add_constant(mv); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::add_constant(const typed::val &v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::add_constant(long v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff(res); } template template typed::union_pw_multi_aff typed::multi_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::map typed::multi_aff::as_map() const { auto res = isl::multi_aff::as_map(); return typed::map(res); } template typed::multi_aff typed::multi_aff::as_multi_aff() const { auto res = isl::multi_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::as_multi_union_pw_aff() const { auto res = isl::multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::as_pw_multi_aff() const { auto res = isl::multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_map typed::multi_aff::as_union_map() const { auto res = isl::multi_aff::as_union_map(); return typed::union_map(res); } template typed::aff typed::multi_aff::at(int pos) const { auto res = isl::multi_aff::at(pos); return typed::aff(res); } template typed::basic_set typed::multi_aff::bind(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind(tuple); return typed::basic_set(res); } template typed::multi_aff typed::multi_aff::bind_domain(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind_domain(tuple); return typed::multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::coalesce() const { auto res = isl::multi_aff::coalesce(); return typed::pw_multi_aff(res); } template typed::multi_val typed::multi_aff::constant_multi_val() const { auto res = isl::multi_aff::constant_multi_val(); return typed::multi_val(res); } template typed::set typed::multi_aff::domain() const { auto res = isl::multi_aff::domain(); return typed::set(res); } template typed::pw_multi_aff typed::multi_aff::drop_unused_params() const { auto res = isl::multi_aff::drop_unused_params(); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::floor() const { auto res = isl::multi_aff::floor(); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist(const typed::set &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::gist(const typed::union_set &context) const { auto res = isl::multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::gist(const typed::basic_set &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist(const typed::point &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist_params(const typed::set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::gist_params(const typed::point<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::identity() const { auto res = isl::multi_aff::identity(); return typed::multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::intersect_domain(const typed::set &set) const { auto res = isl::multi_aff::intersect_domain(set); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::intersect_domain(const typed::space &space) const { auto res = isl::multi_aff::intersect_domain(space); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::intersect_params(const typed::set<> &set) const { auto res = isl::multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::aff_list typed::multi_aff::list() const { auto res = isl::multi_aff::list(); return typed::aff_list(res); } template typed::multi_pw_aff typed::multi_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_aff::max_multi_val() const { auto res = isl::multi_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::multi_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_aff::min_multi_val() const { auto res = isl::multi_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_aff typed::multi_aff::neg() const { auto res = isl::multi_aff::neg(); return typed::multi_aff(res); } template template typed::multi_aff, pair> typed::multi_aff::product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::multi_aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::multi_aff, pair> typed::multi_aff::product(const typed::aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, pair>(res); } template template typed::multi_aff typed::multi_aff::pullback(const typed::multi_aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::pullback(const typed::multi_aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template template typed::multi_pw_aff typed::multi_aff::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_aff::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template template typed::pw_multi_aff typed::multi_aff::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::multi_aff::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::multi_aff typed::multi_aff::pullback(const typed::aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::pullback(const typed::aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template typed::pw_multi_aff_list typed::multi_aff::pw_multi_aff_list() const { auto res = isl::multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template template typed::multi_aff> typed::multi_aff::range_product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff>(res); } template template typed::multi_pw_aff> typed::multi_aff::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::multi_aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template template typed::pw_multi_aff> typed::multi_aff::range_product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::range_product(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::multi_aff::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template typed::multi_aff> typed::multi_aff::range_product(const typed::aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff>(res); } template typed::multi_aff typed::multi_aff::scale(const typed::multi_val &mv) const { auto res = isl::multi_aff::scale(mv); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale(const typed::val &v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale(long v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_aff::scale_down(mv); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale_down(const typed::val &v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::scale_down(long v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff::set_at(int pos, const typed::aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_aff typed::multi_aff::set_range_tuple(const typed::id &id) const { auto res = isl::multi_aff::set_range_tuple(id); return typed::multi_aff(res); } template template typed::multi_aff typed::multi_aff::set_range_tuple(const std::string &id) const { auto res = isl::multi_aff::set_range_tuple(id); return typed::multi_aff(res); } template typed::space typed::multi_aff::space() const { auto res = isl::multi_aff::space(); return typed::space(res); } template typed::multi_aff typed::multi_aff::sub(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::multi_aff::sub(const typed::aff &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff(res); } template typed::pw_multi_aff typed::multi_aff::subtract_domain(const typed::set &set) const { auto res = isl::multi_aff::subtract_domain(set); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::subtract_domain(const typed::space &space) const { auto res = isl::multi_aff::subtract_domain(space); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::subtract_domain(const typed::union_set &uset) const { auto res = isl::multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::to_multi_pw_aff() const { auto res = isl::multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::to_multi_union_pw_aff() const { auto res = isl::multi_aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::to_pw_multi_aff() const { auto res = isl::multi_aff::to_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::to_union_pw_multi_aff() const { auto res = isl::multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::multi_pw_aff typed::multi_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::multi_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::multi_aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff, Range>::multi_aff(const typed::aff, Range> &aff) : isl::multi_aff(aff) { } template typed::multi_aff, Range>::multi_aff(const typed::space, Range> &space, const typed::aff_list, Anonymous> &list) : isl::multi_aff(space, list) { } template typed::multi_aff, Range>::multi_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_aff(ctx, str) { } template typed::multi_aff, Range> typed::multi_aff, Range>::add(const typed::multi_aff, Range> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::add(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_aff, Range>::add(const typed::multi_union_pw_aff, Range> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::add(const typed::pw_multi_aff, Range> &pma2) const { auto res = isl::multi_aff::add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::add(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::multi_aff::add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::add(const typed::aff, Range> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::add_constant(const typed::multi_val &mv) const { auto res = isl::multi_aff::add_constant(mv); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::add_constant(const typed::val &v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::add_constant(long v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Arg2> typed::multi_aff, Range>::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template typed::map, Range> typed::multi_aff, Range>::as_map() const { auto res = isl::multi_aff::as_map(); return typed::map, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::as_multi_aff() const { auto res = isl::multi_aff::as_multi_aff(); return typed::multi_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_aff, Range>::as_multi_union_pw_aff() const { auto res = isl::multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::as_pw_multi_aff() const { auto res = isl::multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff, Range>(res); } template typed::union_map, Range> typed::multi_aff, Range>::as_union_map() const { auto res = isl::multi_aff::as_union_map(); return typed::union_map, Range>(res); } template typed::aff, Anonymous> typed::multi_aff, Range>::at(int pos) const { auto res = isl::multi_aff::at(pos); return typed::aff, Anonymous>(res); } template typed::basic_set> typed::multi_aff, Range>::bind(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind(tuple); return typed::basic_set>(res); } template typed::multi_aff typed::multi_aff, Range>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::multi_aff::bind_domain(tuple); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff, Range>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind_domain_wrapped_domain(tuple); return typed::multi_aff(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::coalesce() const { auto res = isl::multi_aff::coalesce(); return typed::pw_multi_aff, Range>(res); } template typed::multi_val typed::multi_aff, Range>::constant_multi_val() const { auto res = isl::multi_aff::constant_multi_val(); return typed::multi_val(res); } template typed::set> typed::multi_aff, Range>::domain() const { auto res = isl::multi_aff::domain(); return typed::set>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::domain_reverse() const { auto res = isl::multi_aff::domain_reverse(); return typed::multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::drop_unused_params() const { auto res = isl::multi_aff::drop_unused_params(); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::extract_pw_multi_aff(const typed::space, Range> &space) const { auto res = isl::multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::floor() const { auto res = isl::multi_aff::floor(); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::gist(const typed::set> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::gist(const typed::union_set> &context) const { auto res = isl::multi_aff::gist(context); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::gist(const typed::basic_set> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::gist(const typed::point> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::gist_params(const typed::set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::gist_params(const typed::point<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::identity() const { auto res = isl::multi_aff::identity(); return typed::multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::intersect_domain(const typed::set> &set) const { auto res = isl::multi_aff::intersect_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::intersect_domain(const typed::space> &space) const { auto res = isl::multi_aff::intersect_domain(space); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::intersect_params(const typed::set<> &set) const { auto res = isl::multi_aff::intersect_params(set); return typed::pw_multi_aff, Range>(res); } template typed::aff_list, Anonymous> typed::multi_aff, Range>::list() const { auto res = isl::multi_aff::list(); return typed::aff_list, Anonymous>(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::max(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_val typed::multi_aff, Range>::max_multi_val() const { auto res = isl::multi_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::min(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_val typed::multi_aff, Range>::min_multi_val() const { auto res = isl::multi_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::neg() const { auto res = isl::multi_aff::neg(); return typed::multi_aff, Range>(res); } template template typed::pw_multi_aff, Range> typed::multi_aff, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::multi_aff, Arg2>, pair> typed::multi_aff, Range>::product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::multi_aff, Range>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::pw_multi_aff, Arg2>, pair> typed::multi_aff, Range>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::product(pma2); return typed::pw_multi_aff, Arg2>, pair>(res); } template template typed::multi_aff, Arg2>, pair> typed::multi_aff, Range>::product(const typed::aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, Arg2>, pair>(res); } template template typed::multi_aff typed::multi_aff, Range>::pullback(const typed::multi_aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff, Range>::pullback(const typed::multi_aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template template typed::multi_pw_aff typed::multi_aff, Range>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_aff, Range>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template template typed::pw_multi_aff typed::multi_aff, Range>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::multi_aff, Range>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::multi_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::multi_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::multi_aff typed::multi_aff, Range>::pullback(const typed::aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template typed::multi_aff typed::multi_aff, Range>::pullback(const typed::aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff(res); } template typed::pw_multi_aff_list, Range> typed::multi_aff, Range>::pw_multi_aff_list() const { auto res = isl::multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, Range>(res); } template template typed::multi_aff, pair> typed::multi_aff, Range>::range_product(const typed::multi_aff, Arg2> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_aff, Range>::range_product(const typed::multi_pw_aff, Arg2> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_union_pw_aff, pair> typed::multi_aff, Range>::range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_union_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::multi_aff, Range>::range_product(const typed::pw_multi_aff, Arg2> &pma2) const { auto res = isl::multi_aff::range_product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::multi_aff, Range>::range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, Range>::range_product(const typed::aff, Anonymous> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff, pair>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::scale(const typed::multi_val &mv) const { auto res = isl::multi_aff::scale(mv); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::scale(const typed::val &v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::scale(long v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_aff::scale_down(mv); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::scale_down(const typed::val &v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::scale_down(long v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::set_at(int pos, const typed::aff, Anonymous> &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_aff, Range>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_union_pw_aff, Range>(res); } template template typed::multi_aff, Arg1> typed::multi_aff, Range>::set_range_tuple(const typed::id &id) const { auto res = isl::multi_aff::set_range_tuple(id); return typed::multi_aff, Arg1>(res); } template template typed::multi_aff, Arg1> typed::multi_aff, Range>::set_range_tuple(const std::string &id) const { auto res = isl::multi_aff::set_range_tuple(id); return typed::multi_aff, Arg1>(res); } template typed::space, Range> typed::multi_aff, Range>::space() const { auto res = isl::multi_aff::space(); return typed::space, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::sub(const typed::multi_aff, Range> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::sub(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_aff, Range>::sub(const typed::multi_union_pw_aff, Range> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::sub(const typed::pw_multi_aff, Range> &pma2) const { auto res = isl::multi_aff::sub(pma2); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::sub(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::multi_aff::sub(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_aff, Range> typed::multi_aff, Range>::sub(const typed::aff, Range> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::subtract_domain(const typed::set> &set) const { auto res = isl::multi_aff::subtract_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::subtract_domain(const typed::space> &space) const { auto res = isl::multi_aff::subtract_domain(space); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::to_multi_pw_aff() const { auto res = isl::multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_aff, Range>::to_multi_union_pw_aff() const { auto res = isl::multi_aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::to_pw_multi_aff() const { auto res = isl::multi_aff::to_pw_multi_aff(); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::to_union_pw_multi_aff() const { auto res = isl::multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_aff, Range>::union_add(const typed::multi_pw_aff, Range> &mpa2) const { auto res = isl::multi_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_aff, Range>::union_add(const typed::multi_union_pw_aff, Range> &mupa2) const { auto res = isl::multi_aff::union_add(mupa2); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, Range>::union_add(const typed::pw_multi_aff, Range> &pma2) const { auto res = isl::multi_aff::union_add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::multi_aff, Range>::union_add(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::multi_aff::union_add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_aff>::multi_aff(const typed::aff> &aff) : isl::multi_aff(aff) { } template typed::multi_aff>::multi_aff(const typed::space> &space, const typed::aff_list &list) : isl::multi_aff(space, list) { } template typed::multi_aff>::multi_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_aff(ctx, str) { } template typed::multi_aff> typed::multi_aff>::add(const typed::multi_aff> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::multi_aff>::add(const typed::multi_pw_aff> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::multi_aff>::add(const typed::multi_union_pw_aff> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::add(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::add(pma2); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::add(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::add(upma2); return typed::union_pw_multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::add(const typed::aff> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::add_constant(const typed::multi_val> &mv) const { auto res = isl::multi_aff::add_constant(mv); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::add_constant(const typed::val> &v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::add_constant(long v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff>(res); } template template typed::union_pw_multi_aff typed::multi_aff>::apply(const typed::union_pw_multi_aff, Arg3> &upma2) const { auto res = isl::multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::map> typed::multi_aff>::as_map() const { auto res = isl::multi_aff::as_map(); return typed::map>(res); } template typed::multi_aff> typed::multi_aff>::as_multi_aff() const { auto res = isl::multi_aff::as_multi_aff(); return typed::multi_aff>(res); } template typed::multi_union_pw_aff> typed::multi_aff>::as_multi_union_pw_aff() const { auto res = isl::multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::as_pw_multi_aff() const { auto res = isl::multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::union_map> typed::multi_aff>::as_union_map() const { auto res = isl::multi_aff::as_union_map(); return typed::union_map>(res); } template typed::aff typed::multi_aff>::at(int pos) const { auto res = isl::multi_aff::at(pos); return typed::aff(res); } template typed::basic_set typed::multi_aff>::bind(const typed::multi_id> &tuple) const { auto res = isl::multi_aff::bind(tuple); return typed::basic_set(res); } template typed::multi_aff> typed::multi_aff>::bind_domain(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind_domain(tuple); return typed::multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::coalesce() const { auto res = isl::multi_aff::coalesce(); return typed::pw_multi_aff>(res); } template typed::multi_val> typed::multi_aff>::constant_multi_val() const { auto res = isl::multi_aff::constant_multi_val(); return typed::multi_val>(res); } template typed::set typed::multi_aff>::domain() const { auto res = isl::multi_aff::domain(); return typed::set(res); } template typed::pw_multi_aff> typed::multi_aff>::drop_unused_params() const { auto res = isl::multi_aff::drop_unused_params(); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::extract_pw_multi_aff(const typed::space> &space) const { auto res = isl::multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::floor() const { auto res = isl::multi_aff::floor(); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::gist(const typed::set &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::gist(const typed::union_set &context) const { auto res = isl::multi_aff::gist(context); return typed::union_pw_multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::gist(const typed::basic_set &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::gist(const typed::point &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::gist_params(const typed::set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::gist_params(const typed::point<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::identity() const { auto res = isl::multi_aff::identity(); return typed::multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::intersect_domain(const typed::set &set) const { auto res = isl::multi_aff::intersect_domain(set); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::intersect_domain(const typed::space &space) const { auto res = isl::multi_aff::intersect_domain(space); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::intersect_domain(const typed::union_set &uset) const { auto res = isl::multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::intersect_params(const typed::set<> &set) const { auto res = isl::multi_aff::intersect_params(set); return typed::pw_multi_aff>(res); } template typed::aff_list typed::multi_aff>::list() const { auto res = isl::multi_aff::list(); return typed::aff_list(res); } template typed::multi_pw_aff> typed::multi_aff>::max(const typed::multi_pw_aff> &multi2) const { auto res = isl::multi_aff::max(multi2); return typed::multi_pw_aff>(res); } template typed::multi_val> typed::multi_aff>::max_multi_val() const { auto res = isl::multi_aff::max_multi_val(); return typed::multi_val>(res); } template typed::multi_pw_aff> typed::multi_aff>::min(const typed::multi_pw_aff> &multi2) const { auto res = isl::multi_aff::min(multi2); return typed::multi_pw_aff>(res); } template typed::multi_val> typed::multi_aff>::min_multi_val() const { auto res = isl::multi_aff::min_multi_val(); return typed::multi_val>(res); } template typed::multi_aff> typed::multi_aff>::neg() const { auto res = isl::multi_aff::neg(); return typed::multi_aff>(res); } template template typed::multi_aff, pair, Arg3>> typed::multi_aff>::product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, pair, Arg3>>(res); } template template typed::multi_pw_aff, pair, Arg3>> typed::multi_aff>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_pw_aff, pair, Arg3>>(res); } template template typed::pw_multi_aff, pair, Arg3>> typed::multi_aff>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::product(pma2); return typed::pw_multi_aff, pair, Arg3>>(res); } template template typed::multi_aff, pair, Anonymous>> typed::multi_aff>::product(const typed::aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, pair, Anonymous>>(res); } template template typed::multi_aff> typed::multi_aff>::pullback(const typed::multi_aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::pullback(const typed::multi_aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template template typed::multi_pw_aff> typed::multi_aff>::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::multi_aff>::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template template typed::pw_multi_aff> typed::multi_aff>::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::multi_aff>::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::multi_aff> typed::multi_aff>::pullback(const typed::aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::pullback(const typed::aff &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template typed::pw_multi_aff_list> typed::multi_aff>::pw_multi_aff_list() const { auto res = isl::multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list>(res); } template typed::pw_multi_aff typed::multi_aff>::range_factor_domain() const { auto res = isl::multi_aff::range_factor_domain(); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::multi_aff>::range_factor_range() const { auto res = isl::multi_aff::range_factor_range(); return typed::pw_multi_aff(res); } template template typed::multi_aff, Arg3>> typed::multi_aff>::range_product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff, Arg3>>(res); } template template typed::multi_pw_aff, Arg3>> typed::multi_aff>::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_pw_aff, Arg3>>(res); } template template typed::multi_union_pw_aff, Arg3>> typed::multi_aff>::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_union_pw_aff, Arg3>>(res); } template template typed::pw_multi_aff, Arg3>> typed::multi_aff>::range_product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::range_product(pma2); return typed::pw_multi_aff, Arg3>>(res); } template template typed::union_pw_multi_aff, Arg3>> typed::multi_aff>::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::range_product(upma2); return typed::union_pw_multi_aff, Arg3>>(res); } template typed::multi_aff, Anonymous>> typed::multi_aff>::range_product(const typed::aff &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff, Anonymous>>(res); } template typed::multi_aff> typed::multi_aff>::scale(const typed::multi_val> &mv) const { auto res = isl::multi_aff::scale(mv); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::scale(const typed::val> &v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::scale(long v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::scale_down(const typed::multi_val> &mv) const { auto res = isl::multi_aff::scale_down(mv); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::scale_down(const typed::val> &v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::scale_down(long v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::set_at(int pos, const typed::aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::multi_aff>::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::multi_aff>::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_union_pw_aff>(res); } template typed::space> typed::multi_aff>::space() const { auto res = isl::multi_aff::space(); return typed::space>(res); } template typed::multi_aff> typed::multi_aff>::sub(const typed::multi_aff> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::multi_aff>::sub(const typed::multi_pw_aff> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::multi_aff>::sub(const typed::multi_union_pw_aff> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::sub(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::sub(pma2); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::sub(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::sub(upma2); return typed::union_pw_multi_aff>(res); } template typed::multi_aff> typed::multi_aff>::sub(const typed::aff> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::subtract_domain(const typed::set &set) const { auto res = isl::multi_aff::subtract_domain(set); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::subtract_domain(const typed::space &space) const { auto res = isl::multi_aff::subtract_domain(space); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::subtract_domain(const typed::union_set &uset) const { auto res = isl::multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff>(res); } template typed::multi_pw_aff> typed::multi_aff>::to_multi_pw_aff() const { auto res = isl::multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::multi_aff>::to_multi_union_pw_aff() const { auto res = isl::multi_aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::to_pw_multi_aff() const { auto res = isl::multi_aff::to_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::to_union_pw_multi_aff() const { auto res = isl::multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff>(res); } template typed::multi_pw_aff> typed::multi_aff>::union_add(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_aff::union_add(mpa2); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::multi_aff>::union_add(const typed::multi_union_pw_aff> &mupa2) const { auto res = isl::multi_aff::union_add(mupa2); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::multi_aff>::union_add(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::union_add(pma2); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff>::union_add(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::union_add(upma2); return typed::union_pw_multi_aff>(res); } template typed::multi_aff, pair>::multi_aff(const typed::aff, pair> &aff) : isl::multi_aff(aff) { } template typed::multi_aff, pair>::multi_aff(const typed::space, pair> &space, const typed::aff_list, Anonymous> &list) : isl::multi_aff(space, list) { } template typed::multi_aff, pair>::multi_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_aff(ctx, str) { } template typed::multi_aff, pair> typed::multi_aff, pair>::add(const typed::multi_aff, pair> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::add(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::multi_aff, pair>::add(const typed::multi_union_pw_aff, pair> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::add(const typed::pw_multi_aff, pair> &pma2) const { auto res = isl::multi_aff::add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::add(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::multi_aff::add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::add(const typed::aff, pair> &multi2) const { auto res = isl::multi_aff::add(multi2); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::add_constant(const typed::multi_val> &mv) const { auto res = isl::multi_aff::add_constant(mv); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::add_constant(const typed::val> &v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::add_constant(long v) const { auto res = isl::multi_aff::add_constant(v); return typed::multi_aff, pair>(res); } template template typed::union_pw_multi_aff, Arg2> typed::multi_aff, pair>::apply(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template typed::map, pair> typed::multi_aff, pair>::as_map() const { auto res = isl::multi_aff::as_map(); return typed::map, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::as_multi_aff() const { auto res = isl::multi_aff::as_multi_aff(); return typed::multi_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::multi_aff, pair>::as_multi_union_pw_aff() const { auto res = isl::multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::as_pw_multi_aff() const { auto res = isl::multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_map, pair> typed::multi_aff, pair>::as_union_map() const { auto res = isl::multi_aff::as_union_map(); return typed::union_map, pair>(res); } template typed::aff, Anonymous> typed::multi_aff, pair>::at(int pos) const { auto res = isl::multi_aff::at(pos); return typed::aff, Anonymous>(res); } template typed::basic_set> typed::multi_aff, pair>::bind(const typed::multi_id> &tuple) const { auto res = isl::multi_aff::bind(tuple); return typed::basic_set>(res); } template typed::multi_aff> typed::multi_aff, pair>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::multi_aff::bind_domain(tuple); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff, pair>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::multi_aff::bind_domain_wrapped_domain(tuple); return typed::multi_aff>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::coalesce() const { auto res = isl::multi_aff::coalesce(); return typed::pw_multi_aff, pair>(res); } template typed::multi_val> typed::multi_aff, pair>::constant_multi_val() const { auto res = isl::multi_aff::constant_multi_val(); return typed::multi_val>(res); } template typed::set> typed::multi_aff, pair>::domain() const { auto res = isl::multi_aff::domain(); return typed::set>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::domain_reverse() const { auto res = isl::multi_aff::domain_reverse(); return typed::multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::drop_unused_params() const { auto res = isl::multi_aff::drop_unused_params(); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::extract_pw_multi_aff(const typed::space, pair> &space) const { auto res = isl::multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::floor() const { auto res = isl::multi_aff::floor(); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::gist(const typed::set> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::gist(const typed::union_set> &context) const { auto res = isl::multi_aff::gist(context); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::gist(const typed::basic_set> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::gist(const typed::point> &context) const { auto res = isl::multi_aff::gist(context); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::gist_params(const typed::set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::gist_params(const typed::point<> &context) const { auto res = isl::multi_aff::gist_params(context); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::identity() const { auto res = isl::multi_aff::identity(); return typed::multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::intersect_domain(const typed::set> &set) const { auto res = isl::multi_aff::intersect_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::multi_aff::intersect_domain(space); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::intersect_params(const typed::set<> &set) const { auto res = isl::multi_aff::intersect_params(set); return typed::pw_multi_aff, pair>(res); } template typed::aff_list, Anonymous> typed::multi_aff, pair>::list() const { auto res = isl::multi_aff::list(); return typed::aff_list, Anonymous>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::max(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::multi_aff::max(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_val> typed::multi_aff, pair>::max_multi_val() const { auto res = isl::multi_aff::max_multi_val(); return typed::multi_val>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::min(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::multi_aff::min(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_val> typed::multi_aff, pair>::min_multi_val() const { auto res = isl::multi_aff::min_multi_val(); return typed::multi_val>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::neg() const { auto res = isl::multi_aff::neg(); return typed::multi_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::multi_aff, pair>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::multi_aff, Domain2>, pair, Arg2>> typed::multi_aff, pair>::product(const typed::multi_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, Domain2>, pair, Arg2>>(res); } template template typed::multi_pw_aff, Domain2>, pair, Arg2>> typed::multi_aff, pair>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_pw_aff, Domain2>, pair, Arg2>>(res); } template template typed::pw_multi_aff, Domain2>, pair, Arg2>> typed::multi_aff, pair>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::multi_aff::product(pma2); return typed::pw_multi_aff, Domain2>, pair, Arg2>>(res); } template template typed::multi_aff, Domain2>, pair, Anonymous>> typed::multi_aff, pair>::product(const typed::aff &multi2) const { auto res = isl::multi_aff::product(multi2); return typed::multi_aff, Domain2>, pair, Anonymous>>(res); } template template typed::multi_aff> typed::multi_aff, pair>::pullback(const typed::multi_aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff, pair>::pullback(const typed::multi_aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template template typed::multi_pw_aff> typed::multi_aff, pair>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::multi_aff, pair>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template template typed::pw_multi_aff> typed::multi_aff, pair>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::multi_aff, pair>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::multi_aff, pair>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::multi_aff, pair>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::multi_aff> typed::multi_aff, pair>::pullback(const typed::aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template typed::multi_aff> typed::multi_aff, pair>::pullback(const typed::aff> &ma2) const { auto res = isl::multi_aff::pullback(ma2); return typed::multi_aff>(res); } template typed::pw_multi_aff_list, pair> typed::multi_aff, pair>::pw_multi_aff_list() const { auto res = isl::multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, pair>(res); } template typed::pw_multi_aff, Range> typed::multi_aff, pair>::range_factor_domain() const { auto res = isl::multi_aff::range_factor_domain(); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range2> typed::multi_aff, pair>::range_factor_range() const { auto res = isl::multi_aff::range_factor_range(); return typed::pw_multi_aff, Range2>(res); } template template typed::multi_aff, pair, Arg2>> typed::multi_aff, pair>::range_product(const typed::multi_aff, Arg2> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff, pair, Arg2>>(res); } template template typed::multi_pw_aff, pair, Arg2>> typed::multi_aff, pair>::range_product(const typed::multi_pw_aff, Arg2> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_pw_aff, pair, Arg2>>(res); } template template typed::multi_union_pw_aff, pair, Arg2>> typed::multi_aff, pair>::range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_union_pw_aff, pair, Arg2>>(res); } template template typed::pw_multi_aff, pair, Arg2>> typed::multi_aff, pair>::range_product(const typed::pw_multi_aff, Arg2> &pma2) const { auto res = isl::multi_aff::range_product(pma2); return typed::pw_multi_aff, pair, Arg2>>(res); } template template typed::union_pw_multi_aff, pair, Arg2>> typed::multi_aff, pair>::range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair, Arg2>>(res); } template typed::multi_aff, pair, Anonymous>> typed::multi_aff, pair>::range_product(const typed::aff, Anonymous> &multi2) const { auto res = isl::multi_aff::range_product(multi2); return typed::multi_aff, pair, Anonymous>>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::scale(const typed::multi_val> &mv) const { auto res = isl::multi_aff::scale(mv); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::scale(const typed::val> &v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::scale(long v) const { auto res = isl::multi_aff::scale(v); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::scale_down(const typed::multi_val> &mv) const { auto res = isl::multi_aff::scale_down(mv); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::scale_down(const typed::val> &v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::scale_down(long v) const { auto res = isl::multi_aff::scale_down(v); return typed::multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::set_at(int pos, const typed::aff, Anonymous> &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::multi_aff, pair>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::multi_aff::set_at(pos, el); return typed::multi_union_pw_aff, pair>(res); } template typed::space, pair> typed::multi_aff, pair>::space() const { auto res = isl::multi_aff::space(); return typed::space, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::sub(const typed::multi_aff, pair> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::sub(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::multi_aff, pair>::sub(const typed::multi_union_pw_aff, pair> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::sub(const typed::pw_multi_aff, pair> &pma2) const { auto res = isl::multi_aff::sub(pma2); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::sub(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::multi_aff::sub(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_aff, pair> typed::multi_aff, pair>::sub(const typed::aff, pair> &multi2) const { auto res = isl::multi_aff::sub(multi2); return typed::multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::subtract_domain(const typed::set> &set) const { auto res = isl::multi_aff::subtract_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::subtract_domain(const typed::space> &space) const { auto res = isl::multi_aff::subtract_domain(space); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::to_multi_pw_aff() const { auto res = isl::multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::multi_aff, pair>::to_multi_union_pw_aff() const { auto res = isl::multi_aff::to_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::to_pw_multi_aff() const { auto res = isl::multi_aff::to_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::to_union_pw_multi_aff() const { auto res = isl::multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_aff, pair>::union_add(const typed::multi_pw_aff, pair> &mpa2) const { auto res = isl::multi_aff::union_add(mpa2); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::multi_aff, pair>::union_add(const typed::multi_union_pw_aff, pair> &mupa2) const { auto res = isl::multi_aff::union_add(mupa2); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::multi_aff, pair>::union_add(const typed::pw_multi_aff, pair> &pma2) const { auto res = isl::multi_aff::union_add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::multi_aff, pair>::union_add(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::multi_aff::union_add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_id::multi_id(const typed::space &space, const typed::id_list &list) : isl::multi_id(space, list) { } template typed::multi_id::multi_id(const isl::ctx &ctx, const std::string &str) : isl::multi_id(ctx, str) { } template typed::id typed::multi_id::at(int pos) const { auto res = isl::multi_id::at(pos); return typed::id(res); } template typed::id_list typed::multi_id::list() const { auto res = isl::multi_id::list(); return typed::id_list(res); } template typed::multi_id typed::multi_id::set_at(int pos, const typed::id &el) const { auto res = isl::multi_id::set_at(pos, el); return typed::multi_id(res); } template typed::multi_id typed::multi_id::set_at(int pos, const std::string &el) const { auto res = isl::multi_id::set_at(pos, el); return typed::multi_id(res); } template typed::space typed::multi_id::space() const { auto res = isl::multi_id::space(); return typed::space(res); } template typed::multi_pw_aff::multi_pw_aff(const typed::aff &aff) : isl::multi_pw_aff(aff) { } template typed::multi_pw_aff::multi_pw_aff(const typed::multi_aff &ma) : isl::multi_pw_aff(ma) { } template typed::multi_pw_aff::multi_pw_aff(const typed::pw_aff &pa) : isl::multi_pw_aff(pa) { } template typed::multi_pw_aff::multi_pw_aff(const typed::space &space, const typed::pw_aff_list &list) : isl::multi_pw_aff(space, list) { } template typed::multi_pw_aff::multi_pw_aff(const typed::pw_multi_aff &pma) : isl::multi_pw_aff(pma) { } template typed::multi_pw_aff::multi_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_pw_aff(ctx, str) { } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::add_constant(mv); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add_constant(const typed::val &v) const { auto res = isl::multi_pw_aff::add_constant(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add_constant(long v) const { auto res = isl::multi_pw_aff::add_constant(v); return typed::multi_pw_aff(res); } template typed::multi_aff typed::multi_pw_aff::as_multi_aff() const { auto res = isl::multi_pw_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::set typed::multi_pw_aff::as_set() const { auto res = isl::multi_pw_aff::as_set(); return typed::set(res); } template typed::pw_aff typed::multi_pw_aff::at(int pos) const { auto res = isl::multi_pw_aff::at(pos); return typed::pw_aff(res); } template typed::set<> typed::multi_pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::multi_pw_aff::bind(tuple); return typed::set<>(res); } template typed::multi_pw_aff typed::multi_pw_aff::coalesce() const { auto res = isl::multi_pw_aff::coalesce(); return typed::multi_pw_aff(res); } template typed::set<> typed::multi_pw_aff::domain() const { auto res = isl::multi_pw_aff::domain(); return typed::set<>(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist(const typed::set<> &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::gist(const typed::union_set<> &context) const { auto res = isl::multi_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist(const typed::point<> &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist_params(const typed::set<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist_params(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist_params(const typed::point<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::identity() const { auto res = isl::multi_pw_aff::identity(); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::insert_domain(const typed::space &domain) const { auto res = isl::multi_pw_aff::insert_domain(domain); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_params(const typed::set<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_params(const typed::point<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff(res); } template typed::pw_aff_list typed::multi_pw_aff::list() const { auto res = isl::multi_pw_aff::list(); return typed::pw_aff_list(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_pw_aff::max_multi_val() const { auto res = isl::multi_pw_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_pw_aff::min_multi_val() const { auto res = isl::multi_pw_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::multi_pw_aff::neg() const { auto res = isl::multi_pw_aff::neg(); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff> typed::multi_pw_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::multi_pw_aff::product(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_pw_aff> typed::multi_pw_aff::product(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::multi_pw_aff::product(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_pw_aff> typed::multi_pw_aff::product(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::scale(mv); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale(const typed::val &v) const { auto res = isl::multi_pw_aff::scale(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale(long v) const { auto res = isl::multi_pw_aff::scale(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::scale_down(mv); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale_down(const typed::val &v) const { auto res = isl::multi_pw_aff::scale_down(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale_down(long v) const { auto res = isl::multi_pw_aff::scale_down(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::multi_pw_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::multi_pw_aff::set_range_tuple(id); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::multi_pw_aff::set_range_tuple(id); return typed::multi_pw_aff(res); } template typed::space typed::multi_pw_aff::space() const { auto res = isl::multi_pw_aff::space(); return typed::space(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::multi_pw_aff::unbind_params_insert_domain(domain); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::multi_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::multi_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::pw_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::pw_multi_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff::multi_pw_aff(const typed::aff &aff) : isl::multi_pw_aff(aff) { } template typed::multi_pw_aff::multi_pw_aff(const typed::multi_aff &ma) : isl::multi_pw_aff(ma) { } template typed::multi_pw_aff::multi_pw_aff(const typed::pw_aff &pa) : isl::multi_pw_aff(pa) { } template typed::multi_pw_aff::multi_pw_aff(const typed::space &space, const typed::pw_aff_list &list) : isl::multi_pw_aff(space, list) { } template typed::multi_pw_aff::multi_pw_aff(const typed::pw_multi_aff &pma) : isl::multi_pw_aff(pma) { } template typed::multi_pw_aff::multi_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_pw_aff(ctx, str) { } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::add_constant(mv); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add_constant(const typed::val &v) const { auto res = isl::multi_pw_aff::add_constant(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::add_constant(long v) const { auto res = isl::multi_pw_aff::add_constant(v); return typed::multi_pw_aff(res); } template typed::map typed::multi_pw_aff::as_map() const { auto res = isl::multi_pw_aff::as_map(); return typed::map(res); } template typed::multi_aff typed::multi_pw_aff::as_multi_aff() const { auto res = isl::multi_pw_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::pw_aff typed::multi_pw_aff::at(int pos) const { auto res = isl::multi_pw_aff::at(pos); return typed::pw_aff(res); } template typed::set typed::multi_pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::multi_pw_aff::bind(tuple); return typed::set(res); } template typed::multi_pw_aff typed::multi_pw_aff::bind_domain(const typed::multi_id &tuple) const { auto res = isl::multi_pw_aff::bind_domain(tuple); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::coalesce() const { auto res = isl::multi_pw_aff::coalesce(); return typed::multi_pw_aff(res); } template typed::set typed::multi_pw_aff::domain() const { auto res = isl::multi_pw_aff::domain(); return typed::set(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist(const typed::set &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::gist(const typed::union_set &context) const { auto res = isl::multi_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist(const typed::basic_set &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist(const typed::point &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist_params(const typed::set<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist_params(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::gist_params(const typed::point<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::identity() const { auto res = isl::multi_pw_aff::identity(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_domain(const typed::set &domain) const { auto res = isl::multi_pw_aff::intersect_domain(domain); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::multi_pw_aff::intersect_domain(uset); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_domain(const typed::basic_set &domain) const { auto res = isl::multi_pw_aff::intersect_domain(domain); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_domain(const typed::point &domain) const { auto res = isl::multi_pw_aff::intersect_domain(domain); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_params(const typed::set<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::intersect_params(const typed::point<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff(res); } template typed::pw_aff_list typed::multi_pw_aff::list() const { auto res = isl::multi_pw_aff::list(); return typed::pw_aff_list(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::max(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_pw_aff::max_multi_val() const { auto res = isl::multi_pw_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::min(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::multi_pw_aff::min_multi_val() const { auto res = isl::multi_pw_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::multi_pw_aff::neg() const { auto res = isl::multi_pw_aff::neg(); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff::product(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff::product(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff::product(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff::product(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff typed::multi_pw_aff::pullback(const typed::multi_aff &ma) const { auto res = isl::multi_pw_aff::pullback(ma); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::pullback(const typed::multi_aff &ma) const { auto res = isl::multi_pw_aff::pullback(ma); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_pw_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_pw_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::pullback(const typed::pw_multi_aff &pma) const { auto res = isl::multi_pw_aff::pullback(pma); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::pullback(const typed::pw_multi_aff &pma) const { auto res = isl::multi_pw_aff::pullback(pma); return typed::multi_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::multi_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::multi_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template template typed::multi_pw_aff> typed::multi_pw_aff::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::multi_pw_aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template typed::multi_pw_aff> typed::multi_pw_aff::range_product(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_pw_aff> typed::multi_pw_aff::range_product(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::multi_pw_aff::range_product(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_pw_aff> typed::multi_pw_aff::range_product(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::scale(mv); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale(const typed::val &v) const { auto res = isl::multi_pw_aff::scale(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale(long v) const { auto res = isl::multi_pw_aff::scale(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::scale_down(mv); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale_down(const typed::val &v) const { auto res = isl::multi_pw_aff::scale_down(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::scale_down(long v) const { auto res = isl::multi_pw_aff::scale_down(v); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::multi_pw_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::multi_pw_aff::set_range_tuple(id); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::multi_pw_aff::set_range_tuple(id); return typed::multi_pw_aff(res); } template typed::space typed::multi_pw_aff::space() const { auto res = isl::multi_pw_aff::space(); return typed::space(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::sub(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::multi_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::multi_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::pw_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff::union_add(const typed::pw_multi_aff &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff, Range>::multi_pw_aff(const typed::aff, Range> &aff) : isl::multi_pw_aff(aff) { } template typed::multi_pw_aff, Range>::multi_pw_aff(const typed::multi_aff, Range> &ma) : isl::multi_pw_aff(ma) { } template typed::multi_pw_aff, Range>::multi_pw_aff(const typed::pw_aff, Range> &pa) : isl::multi_pw_aff(pa) { } template typed::multi_pw_aff, Range>::multi_pw_aff(const typed::space, Range> &space, const typed::pw_aff_list, Anonymous> &list) : isl::multi_pw_aff(space, list) { } template typed::multi_pw_aff, Range>::multi_pw_aff(const typed::pw_multi_aff, Range> &pma) : isl::multi_pw_aff(pma) { } template typed::multi_pw_aff, Range>::multi_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_pw_aff(ctx, str) { } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_pw_aff, Range>::add(const typed::multi_union_pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_union_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add(const typed::aff, Range> &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add(const typed::multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add(const typed::pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add(const typed::pw_multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add_constant(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::add_constant(mv); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add_constant(const typed::val &v) const { auto res = isl::multi_pw_aff::add_constant(v); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::add_constant(long v) const { auto res = isl::multi_pw_aff::add_constant(v); return typed::multi_pw_aff, Range>(res); } template typed::map, Range> typed::multi_pw_aff, Range>::as_map() const { auto res = isl::multi_pw_aff::as_map(); return typed::map, Range>(res); } template typed::multi_aff, Range> typed::multi_pw_aff, Range>::as_multi_aff() const { auto res = isl::multi_pw_aff::as_multi_aff(); return typed::multi_aff, Range>(res); } template typed::pw_aff, Anonymous> typed::multi_pw_aff, Range>::at(int pos) const { auto res = isl::multi_pw_aff::at(pos); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::multi_pw_aff, Range>::bind(const typed::multi_id &tuple) const { auto res = isl::multi_pw_aff::bind(tuple); return typed::set>(res); } template typed::multi_pw_aff typed::multi_pw_aff, Range>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::multi_pw_aff::bind_domain(tuple); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff, Range>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::multi_pw_aff::bind_domain_wrapped_domain(tuple); return typed::multi_pw_aff(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::coalesce() const { auto res = isl::multi_pw_aff::coalesce(); return typed::multi_pw_aff, Range>(res); } template typed::set> typed::multi_pw_aff, Range>::domain() const { auto res = isl::multi_pw_aff::domain(); return typed::set>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::domain_reverse() const { auto res = isl::multi_pw_aff::domain_reverse(); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::gist(const typed::set> &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_pw_aff, Range>::gist(const typed::union_set> &context) const { auto res = isl::multi_pw_aff::gist(context); return typed::multi_union_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::gist(const typed::basic_set> &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::gist(const typed::point> &set) const { auto res = isl::multi_pw_aff::gist(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::gist_params(const typed::set<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::gist_params(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::gist_params(const typed::point<> &set) const { auto res = isl::multi_pw_aff::gist_params(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::identity() const { auto res = isl::multi_pw_aff::identity(); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_domain(const typed::set> &domain) const { auto res = isl::multi_pw_aff::intersect_domain(domain); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::multi_pw_aff::intersect_domain(uset); return typed::multi_union_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_domain(const typed::basic_set> &domain) const { auto res = isl::multi_pw_aff::intersect_domain(domain); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_domain(const typed::point> &domain) const { auto res = isl::multi_pw_aff::intersect_domain(domain); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_params(const typed::set<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::intersect_params(const typed::point<> &set) const { auto res = isl::multi_pw_aff::intersect_params(set); return typed::multi_pw_aff, Range>(res); } template typed::pw_aff_list, Anonymous> typed::multi_pw_aff, Range>::list() const { auto res = isl::multi_pw_aff::list(); return typed::pw_aff_list, Anonymous>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::max(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::max(const typed::aff, Range> &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::max(const typed::multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::max(const typed::pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::max(const typed::pw_multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_val typed::multi_pw_aff, Range>::max_multi_val() const { auto res = isl::multi_pw_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::min(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::min(const typed::aff, Range> &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::min(const typed::multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::min(const typed::pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::min(const typed::pw_multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_val typed::multi_pw_aff, Range>::min_multi_val() const { auto res = isl::multi_pw_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::neg() const { auto res = isl::multi_pw_aff::neg(); return typed::multi_pw_aff, Range>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::multi_pw_aff, Range>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::multi_pw_aff, Range>::product(const typed::aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::multi_pw_aff, Range>::product(const typed::multi_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::multi_pw_aff, Range>::product(const typed::pw_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::multi_pw_aff, Range>::product(const typed::pw_multi_aff &multi2) const { auto res = isl::multi_pw_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::multi_aff> &ma) const { auto res = isl::multi_pw_aff::pullback(ma); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::multi_aff> &ma) const { auto res = isl::multi_pw_aff::pullback(ma); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_pw_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::multi_pw_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::pw_multi_aff> &pma) const { auto res = isl::multi_pw_aff::pullback(pma); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::pw_multi_aff> &pma) const { auto res = isl::multi_pw_aff::pullback(pma); return typed::multi_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::multi_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_pw_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::multi_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff, Range>::range_product(const typed::multi_pw_aff, Arg2> &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_union_pw_aff, pair> typed::multi_pw_aff, Range>::range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_union_pw_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_pw_aff, Range>::range_product(const typed::aff, Anonymous> &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff, Range>::range_product(const typed::multi_aff, Arg2> &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::multi_pw_aff, Range>::range_product(const typed::pw_aff, Anonymous> &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_pw_aff, pair> typed::multi_pw_aff, Range>::range_product(const typed::pw_multi_aff, Arg2> &multi2) const { auto res = isl::multi_pw_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::scale(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::scale(mv); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::scale(const typed::val &v) const { auto res = isl::multi_pw_aff::scale(v); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::scale(long v) const { auto res = isl::multi_pw_aff::scale(v); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_pw_aff::scale_down(mv); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::scale_down(const typed::val &v) const { auto res = isl::multi_pw_aff::scale_down(v); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::scale_down(long v) const { auto res = isl::multi_pw_aff::scale_down(v); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::multi_pw_aff::set_at(pos, el); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_pw_aff, Range>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::multi_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff, Range>(res); } template template typed::multi_pw_aff, Arg1> typed::multi_pw_aff, Range>::set_range_tuple(const typed::id &id) const { auto res = isl::multi_pw_aff::set_range_tuple(id); return typed::multi_pw_aff, Arg1>(res); } template template typed::multi_pw_aff, Arg1> typed::multi_pw_aff, Range>::set_range_tuple(const std::string &id) const { auto res = isl::multi_pw_aff::set_range_tuple(id); return typed::multi_pw_aff, Arg1>(res); } template typed::space, Range> typed::multi_pw_aff, Range>::space() const { auto res = isl::multi_pw_aff::space(); return typed::space, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::sub(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_pw_aff, Range>::sub(const typed::multi_union_pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_union_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::sub(const typed::aff, Range> &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::sub(const typed::multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::sub(const typed::pw_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::sub(const typed::pw_multi_aff, Range> &multi2) const { auto res = isl::multi_pw_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::union_add(const typed::multi_pw_aff, Range> &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::multi_pw_aff, Range>::union_add(const typed::multi_union_pw_aff, Range> &mupa2) const { auto res = isl::multi_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::union_add(const typed::aff, Range> &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::union_add(const typed::multi_aff, Range> &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::union_add(const typed::pw_aff, Range> &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::multi_pw_aff, Range>::union_add(const typed::pw_multi_aff, Range> &mpa2) const { auto res = isl::multi_pw_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff::multi_union_pw_aff(const typed::multi_pw_aff &mpa) : isl::multi_union_pw_aff(mpa) { } template typed::multi_union_pw_aff::multi_union_pw_aff(const typed::union_pw_aff &upa) : isl::multi_union_pw_aff(upa) { } template typed::multi_union_pw_aff::multi_union_pw_aff(const typed::space &space, const typed::union_pw_aff_list &list) : isl::multi_union_pw_aff(space, list) { } template typed::multi_union_pw_aff::multi_union_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_union_pw_aff(ctx, str) { } template typed::multi_union_pw_aff typed::multi_union_pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::add(const typed::union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff typed::multi_union_pw_aff::at(int pos) const { auto res = isl::multi_union_pw_aff::at(pos); return typed::union_pw_aff(res); } template typed::union_set<> typed::multi_union_pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::multi_union_pw_aff::bind(tuple); return typed::union_set<>(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::coalesce() const { auto res = isl::multi_union_pw_aff::coalesce(); return typed::multi_union_pw_aff(res); } template typed::union_set<> typed::multi_union_pw_aff::domain() const { auto res = isl::multi_union_pw_aff::domain(); return typed::union_set<>(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::union_set<> &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::basic_set<> &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::point<> &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::set<> &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist_params(const typed::set<> &context) const { auto res = isl::multi_union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist_params(const typed::point<> &context) const { auto res = isl::multi_union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_params(const typed::set<> ¶ms) const { auto res = isl::multi_union_pw_aff::intersect_params(params); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::multi_union_pw_aff::intersect_params(params); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_params(const typed::point<> ¶ms) const { auto res = isl::multi_union_pw_aff::intersect_params(params); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff_list typed::multi_union_pw_aff::list() const { auto res = isl::multi_union_pw_aff::list(); return typed::union_pw_aff_list(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::neg() const { auto res = isl::multi_union_pw_aff::neg(); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::multi_union_pw_aff::scale(mv); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale(const typed::val &v) const { auto res = isl::multi_union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale(long v) const { auto res = isl::multi_union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_union_pw_aff::scale_down(mv); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale_down(const typed::val &v) const { auto res = isl::multi_union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale_down(long v) const { auto res = isl::multi_union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_union_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::multi_union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::multi_union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template typed::space typed::multi_union_pw_aff::space() const { auto res = isl::multi_union_pw_aff::space(); return typed::space(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::sub(const typed::union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::multi_union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::union_add(const typed::multi_pw_aff &mupa2) const { auto res = isl::multi_union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::union_add(const typed::union_pw_aff &mupa2) const { auto res = isl::multi_union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff::multi_union_pw_aff(const typed::multi_pw_aff &mpa) : isl::multi_union_pw_aff(mpa) { } template typed::multi_union_pw_aff::multi_union_pw_aff(const typed::union_pw_aff &upa) : isl::multi_union_pw_aff(upa) { } template typed::multi_union_pw_aff::multi_union_pw_aff(const typed::space &space, const typed::union_pw_aff_list &list) : isl::multi_union_pw_aff(space, list) { } template typed::multi_union_pw_aff::multi_union_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::multi_union_pw_aff(ctx, str) { } template typed::multi_union_pw_aff typed::multi_union_pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::add(const typed::union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff typed::multi_union_pw_aff::at(int pos) const { auto res = isl::multi_union_pw_aff::at(pos); return typed::union_pw_aff(res); } template typed::union_set typed::multi_union_pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::multi_union_pw_aff::bind(tuple); return typed::union_set(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::coalesce() const { auto res = isl::multi_union_pw_aff::coalesce(); return typed::multi_union_pw_aff(res); } template typed::union_set typed::multi_union_pw_aff::domain() const { auto res = isl::multi_union_pw_aff::domain(); return typed::union_set(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::union_set &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::basic_set &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::point &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist(const typed::set &context) const { auto res = isl::multi_union_pw_aff::gist(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist_params(const typed::set<> &context) const { auto res = isl::multi_union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::multi_union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::gist_params(const typed::point<> &context) const { auto res = isl::multi_union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::multi_union_pw_aff::intersect_domain(uset); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_domain(const typed::basic_set &uset) const { auto res = isl::multi_union_pw_aff::intersect_domain(uset); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_domain(const typed::point &uset) const { auto res = isl::multi_union_pw_aff::intersect_domain(uset); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_domain(const typed::set &uset) const { auto res = isl::multi_union_pw_aff::intersect_domain(uset); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_params(const typed::set<> ¶ms) const { auto res = isl::multi_union_pw_aff::intersect_params(params); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::multi_union_pw_aff::intersect_params(params); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::intersect_params(const typed::point<> ¶ms) const { auto res = isl::multi_union_pw_aff::intersect_params(params); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff_list typed::multi_union_pw_aff::list() const { auto res = isl::multi_union_pw_aff::list(); return typed::union_pw_aff_list(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::neg() const { auto res = isl::multi_union_pw_aff::neg(); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::multi_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::multi_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::pw_multi_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::pw_multi_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::union_pw_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::pullback(const typed::union_pw_aff &upma) const { auto res = isl::multi_union_pw_aff::pullback(upma); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff> typed::multi_union_pw_aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::multi_union_pw_aff::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template typed::multi_union_pw_aff> typed::multi_union_pw_aff::range_product(const typed::union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::multi_union_pw_aff::scale(mv); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale(const typed::val &v) const { auto res = isl::multi_union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale(long v) const { auto res = isl::multi_union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_union_pw_aff::scale_down(mv); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale_down(const typed::val &v) const { auto res = isl::multi_union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::scale_down(long v) const { auto res = isl::multi_union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::multi_union_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::multi_union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::multi_union_pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::multi_union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template typed::space typed::multi_union_pw_aff::space() const { auto res = isl::multi_union_pw_aff::space(); return typed::space(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::sub(const typed::union_pw_aff &multi2) const { auto res = isl::multi_union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::multi_union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::union_add(const typed::multi_pw_aff &mupa2) const { auto res = isl::multi_union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::multi_union_pw_aff::union_add(const typed::union_pw_aff &mupa2) const { auto res = isl::multi_union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::multi_val::multi_val(const typed::space &space, const typed::val_list &list) : isl::multi_val(space, list) { } template typed::multi_val::multi_val(const isl::ctx &ctx, const std::string &str) : isl::multi_val(ctx, str) { } template typed::multi_val typed::multi_val::add(const typed::multi_val &multi2) const { auto res = isl::multi_val::add(multi2); return typed::multi_val(res); } template typed::multi_val typed::multi_val::add(const typed::val &v) const { auto res = isl::multi_val::add(v); return typed::multi_val(res); } template typed::multi_val typed::multi_val::add(long v) const { auto res = isl::multi_val::add(v); return typed::multi_val(res); } template typed::val typed::multi_val::at(int pos) const { auto res = isl::multi_val::at(pos); return typed::val(res); } template typed::val_list typed::multi_val::list() const { auto res = isl::multi_val::list(); return typed::val_list(res); } template typed::multi_val typed::multi_val::max(const typed::multi_val &multi2) const { auto res = isl::multi_val::max(multi2); return typed::multi_val(res); } template typed::multi_val typed::multi_val::min(const typed::multi_val &multi2) const { auto res = isl::multi_val::min(multi2); return typed::multi_val(res); } template typed::multi_val typed::multi_val::neg() const { auto res = isl::multi_val::neg(); return typed::multi_val(res); } template template typed::multi_val> typed::multi_val::product(const typed::multi_val &multi2) const { auto res = isl::multi_val::product(multi2); return typed::multi_val>(res); } template typed::multi_val typed::multi_val::scale(const typed::multi_val &mv) const { auto res = isl::multi_val::scale(mv); return typed::multi_val(res); } template typed::multi_val typed::multi_val::scale(const typed::val &v) const { auto res = isl::multi_val::scale(v); return typed::multi_val(res); } template typed::multi_val typed::multi_val::scale(long v) const { auto res = isl::multi_val::scale(v); return typed::multi_val(res); } template typed::multi_val typed::multi_val::scale_down(const typed::multi_val &mv) const { auto res = isl::multi_val::scale_down(mv); return typed::multi_val(res); } template typed::multi_val typed::multi_val::scale_down(const typed::val &v) const { auto res = isl::multi_val::scale_down(v); return typed::multi_val(res); } template typed::multi_val typed::multi_val::scale_down(long v) const { auto res = isl::multi_val::scale_down(v); return typed::multi_val(res); } template typed::multi_val typed::multi_val::set_at(int pos, const typed::val &el) const { auto res = isl::multi_val::set_at(pos, el); return typed::multi_val(res); } template typed::multi_val typed::multi_val::set_at(int pos, long el) const { auto res = isl::multi_val::set_at(pos, el); return typed::multi_val(res); } template template typed::multi_val typed::multi_val::set_range_tuple(const typed::id &id) const { auto res = isl::multi_val::set_range_tuple(id); return typed::multi_val(res); } template template typed::multi_val typed::multi_val::set_range_tuple(const std::string &id) const { auto res = isl::multi_val::set_range_tuple(id); return typed::multi_val(res); } template typed::space typed::multi_val::space() const { auto res = isl::multi_val::space(); return typed::space(res); } template typed::multi_val typed::multi_val::sub(const typed::multi_val &multi2) const { auto res = isl::multi_val::sub(multi2); return typed::multi_val(res); } typed::set<> typed::point<>::coalesce() const { auto res = isl::point::coalesce(); return typed::set<>(res); } typed::basic_set<> typed::point<>::detect_equalities() const { auto res = isl::point::detect_equalities(); return typed::basic_set<>(res); } typed::set<> typed::point<>::drop_unused_params() const { auto res = isl::point::drop_unused_params(); return typed::set<>(res); } bool typed::point<>::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set<>(arg0)); }; return isl::point::every_set(lambda_test); } typed::set<> typed::point<>::extract_set(const typed::space<> &space) const { auto res = isl::point::extract_set(space); return typed::set<>(res); } void typed::point<>::foreach_basic_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set<>(arg0)); }; return isl::point::foreach_basic_set(lambda_fn); } void typed::point<>::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point<>(arg0)); }; return isl::point::foreach_point(lambda_fn); } void typed::point<>::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set<>(arg0)); }; return isl::point::foreach_set(lambda_fn); } typed::basic_set<> typed::point<>::gist(const typed::basic_set<> &context) const { auto res = isl::point::gist(context); return typed::basic_set<>(res); } typed::set<> typed::point<>::gist(const typed::set<> &context) const { auto res = isl::point::gist(context); return typed::set<>(res); } typed::union_set<> typed::point<>::gist(const typed::union_set<> &context) const { auto res = isl::point::gist(context); return typed::union_set<>(res); } typed::pw_aff typed::point<>::indicator_function() const { auto res = isl::point::indicator_function(); return typed::pw_aff(res); } typed::basic_set<> typed::point<>::intersect(const typed::basic_set<> &bset2) const { auto res = isl::point::intersect(bset2); return typed::basic_set<>(res); } typed::set<> typed::point<>::intersect(const typed::set<> &set2) const { auto res = isl::point::intersect(set2); return typed::set<>(res); } typed::union_set<> typed::point<>::intersect(const typed::union_set<> &uset2) const { auto res = isl::point::intersect(uset2); return typed::union_set<>(res); } typed::pw_aff typed::point<>::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::point::param_pw_aff_on_domain(id); return typed::pw_aff(res); } typed::pw_aff typed::point<>::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::point::param_pw_aff_on_domain(id); return typed::pw_aff(res); } typed::set<> typed::point<>::project_out_all_params() const { auto res = isl::point::project_out_all_params(); return typed::set<>(res); } typed::set<> typed::point<>::project_out_param(const typed::id &id) const { auto res = isl::point::project_out_param(id); return typed::set<>(res); } typed::set<> typed::point<>::project_out_param(const std::string &id) const { auto res = isl::point::project_out_param(id); return typed::set<>(res); } typed::set<> typed::point<>::project_out_param(const typed::id_list &list) const { auto res = isl::point::project_out_param(list); return typed::set<>(res); } typed::pw_aff typed::point<>::pw_aff_on_domain(const typed::val &v) const { auto res = isl::point::pw_aff_on_domain(v); return typed::pw_aff(res); } typed::pw_aff typed::point<>::pw_aff_on_domain(long v) const { auto res = isl::point::pw_aff_on_domain(v); return typed::pw_aff(res); } template typed::pw_multi_aff typed::point<>::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::point::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff(res); } typed::set_list<> typed::point<>::set_list() const { auto res = isl::point::set_list(); return typed::set_list<>(res); } typed::space<> typed::point<>::space() const { auto res = isl::point::space(); return typed::space<>(res); } typed::set<> typed::point<>::subtract(const typed::set<> &set2) const { auto res = isl::point::subtract(set2); return typed::set<>(res); } typed::union_set<> typed::point<>::subtract(const typed::union_set<> &uset2) const { auto res = isl::point::subtract(uset2); return typed::union_set<>(res); } typed::set<> typed::point<>::to_set() const { auto res = isl::point::to_set(); return typed::set<>(res); } typed::union_set<> typed::point<>::to_union_set() const { auto res = isl::point::to_union_set(); return typed::union_set<>(res); } template typed::set typed::point<>::unbind_params(const typed::multi_id &tuple) const { auto res = isl::point::unbind_params(tuple); return typed::set(res); } typed::set<> typed::point<>::unite(const typed::basic_set<> &bset2) const { auto res = isl::point::unite(bset2); return typed::set<>(res); } typed::set<> typed::point<>::unite(const typed::set<> &set2) const { auto res = isl::point::unite(set2); return typed::set<>(res); } typed::union_set<> typed::point<>::unite(const typed::union_set<> &uset2) const { auto res = isl::point::unite(uset2); return typed::union_set<>(res); } template template typed::basic_set typed::point::apply(const typed::basic_map &bmap) const { auto res = isl::point::apply(bmap); return typed::basic_set(res); } template template typed::set typed::point::apply(const typed::map &map) const { auto res = isl::point::apply(map); return typed::set(res); } template template typed::union_set typed::point::apply(const typed::union_map &umap) const { auto res = isl::point::apply(umap); return typed::union_set(res); } template typed::pw_multi_aff typed::point::as_pw_multi_aff() const { auto res = isl::point::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::point::as_set() const { auto res = isl::point::as_set(); return typed::set(res); } template typed::set<> typed::point::bind(const typed::multi_id &tuple) const { auto res = isl::point::bind(tuple); return typed::set<>(res); } template typed::set typed::point::coalesce() const { auto res = isl::point::coalesce(); return typed::set(res); } template typed::basic_set typed::point::detect_equalities() const { auto res = isl::point::detect_equalities(); return typed::basic_set(res); } template typed::set typed::point::drop_unused_params() const { auto res = isl::point::drop_unused_params(); return typed::set(res); } template bool typed::point::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set(arg0)); }; return isl::point::every_set(lambda_test); } template typed::set typed::point::extract_set(const typed::space &space) const { auto res = isl::point::extract_set(space); return typed::set(res); } template void typed::point::foreach_basic_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set(arg0)); }; return isl::point::foreach_basic_set(lambda_fn); } template void typed::point::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point(arg0)); }; return isl::point::foreach_point(lambda_fn); } template void typed::point::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set(arg0)); }; return isl::point::foreach_set(lambda_fn); } template typed::basic_set typed::point::gist(const typed::basic_set &context) const { auto res = isl::point::gist(context); return typed::basic_set(res); } template typed::set typed::point::gist(const typed::set &context) const { auto res = isl::point::gist(context); return typed::set(res); } template typed::union_set typed::point::gist(const typed::union_set &context) const { auto res = isl::point::gist(context); return typed::union_set(res); } template typed::set typed::point::gist_params(const typed::set<> &context) const { auto res = isl::point::gist_params(context); return typed::set(res); } template typed::map typed::point::identity() const { auto res = isl::point::identity(); return typed::map(res); } template typed::pw_aff typed::point::indicator_function() const { auto res = isl::point::indicator_function(); return typed::pw_aff(res); } template template typed::map typed::point::insert_domain(const typed::space &domain) const { auto res = isl::point::insert_domain(domain); return typed::map(res); } template typed::basic_set typed::point::intersect(const typed::basic_set &bset2) const { auto res = isl::point::intersect(bset2); return typed::basic_set(res); } template typed::set typed::point::intersect(const typed::set &set2) const { auto res = isl::point::intersect(set2); return typed::set(res); } template typed::union_set typed::point::intersect(const typed::union_set &uset2) const { auto res = isl::point::intersect(uset2); return typed::union_set(res); } template typed::basic_set typed::point::intersect_params(const typed::basic_set<> &bset2) const { auto res = isl::point::intersect_params(bset2); return typed::basic_set(res); } template typed::set typed::point::intersect_params(const typed::set<> ¶ms) const { auto res = isl::point::intersect_params(params); return typed::set(res); } template typed::fixed_box typed::point::lattice_tile() const { auto res = isl::point::lattice_tile(); return typed::fixed_box(res); } template typed::set typed::point::lexmax() const { auto res = isl::point::lexmax(); return typed::set(res); } template typed::pw_multi_aff typed::point::lexmax_pw_multi_aff() const { auto res = isl::point::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::point::lexmin() const { auto res = isl::point::lexmin(); return typed::set(res); } template typed::pw_multi_aff typed::point::lexmin_pw_multi_aff() const { auto res = isl::point::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::point::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::point::lower_bound(lower); return typed::set(res); } template typed::set typed::point::lower_bound(const typed::multi_val &lower) const { auto res = isl::point::lower_bound(lower); return typed::set(res); } template typed::multi_pw_aff typed::point::max_multi_pw_aff() const { auto res = isl::point::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::point::min_multi_pw_aff() const { auto res = isl::point::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_val typed::point::multi_val() const { auto res = isl::point::multi_val(); return typed::multi_val(res); } template typed::pw_aff typed::point::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::point::param_pw_aff_on_domain(id); return typed::pw_aff(res); } template typed::pw_aff typed::point::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::point::param_pw_aff_on_domain(id); return typed::pw_aff(res); } template typed::basic_set<> typed::point::params() const { auto res = isl::point::params(); return typed::basic_set<>(res); } template typed::multi_val typed::point::plain_multi_val_if_fixed() const { auto res = isl::point::plain_multi_val_if_fixed(); return typed::multi_val(res); } template template typed::set typed::point::preimage(const typed::multi_aff &ma) const { auto res = isl::point::preimage(ma); return typed::set(res); } template template typed::set typed::point::preimage(const typed::multi_pw_aff &mpa) const { auto res = isl::point::preimage(mpa); return typed::set(res); } template template typed::set typed::point::preimage(const typed::pw_multi_aff &pma) const { auto res = isl::point::preimage(pma); return typed::set(res); } template template typed::union_set typed::point::preimage(const typed::union_pw_multi_aff &upma) const { auto res = isl::point::preimage(upma); return typed::union_set(res); } template template typed::set> typed::point::product(const typed::set &set2) const { auto res = isl::point::product(set2); return typed::set>(res); } template typed::set typed::point::project_out_all_params() const { auto res = isl::point::project_out_all_params(); return typed::set(res); } template typed::set typed::point::project_out_param(const typed::id &id) const { auto res = isl::point::project_out_param(id); return typed::set(res); } template typed::set typed::point::project_out_param(const std::string &id) const { auto res = isl::point::project_out_param(id); return typed::set(res); } template typed::set typed::point::project_out_param(const typed::id_list &list) const { auto res = isl::point::project_out_param(list); return typed::set(res); } template typed::pw_aff typed::point::pw_aff_on_domain(const typed::val &v) const { auto res = isl::point::pw_aff_on_domain(v); return typed::pw_aff(res); } template typed::pw_aff typed::point::pw_aff_on_domain(long v) const { auto res = isl::point::pw_aff_on_domain(v); return typed::pw_aff(res); } template template typed::pw_multi_aff typed::point::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::point::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff(res); } template typed::set_list typed::point::set_list() const { auto res = isl::point::set_list(); return typed::set_list(res); } template typed::fixed_box typed::point::simple_fixed_box_hull() const { auto res = isl::point::simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::space typed::point::space() const { auto res = isl::point::space(); return typed::space(res); } template typed::set typed::point::subtract(const typed::set &set2) const { auto res = isl::point::subtract(set2); return typed::set(res); } template typed::union_set typed::point::subtract(const typed::union_set &uset2) const { auto res = isl::point::subtract(uset2); return typed::union_set(res); } template typed::set typed::point::to_set() const { auto res = isl::point::to_set(); return typed::set(res); } template typed::union_set typed::point::to_union_set() const { auto res = isl::point::to_union_set(); return typed::union_set(res); } template typed::map typed::point::translation() const { auto res = isl::point::translation(); return typed::map(res); } template template typed::map typed::point::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::point::unbind_params_insert_domain(domain); return typed::map(res); } template typed::set typed::point::unite(const typed::basic_set &bset2) const { auto res = isl::point::unite(bset2); return typed::set(res); } template typed::set typed::point::unite(const typed::set &set2) const { auto res = isl::point::unite(set2); return typed::set(res); } template typed::union_set typed::point::unite(const typed::union_set &uset2) const { auto res = isl::point::unite(uset2); return typed::union_set(res); } template typed::set typed::point::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::point::upper_bound(upper); return typed::set(res); } template typed::set typed::point::upper_bound(const typed::multi_val &upper) const { auto res = isl::point::upper_bound(upper); return typed::set(res); } template template typed::basic_set typed::point>::apply(const typed::basic_map, Arg2> &bmap) const { auto res = isl::point::apply(bmap); return typed::basic_set(res); } template template typed::set typed::point>::apply(const typed::map, Arg2> &map) const { auto res = isl::point::apply(map); return typed::set(res); } template template typed::union_set typed::point>::apply(const typed::union_map, Arg2> &umap) const { auto res = isl::point::apply(umap); return typed::union_set(res); } template typed::pw_multi_aff> typed::point>::as_pw_multi_aff() const { auto res = isl::point::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::point>::as_set() const { auto res = isl::point::as_set(); return typed::set>(res); } template typed::set<> typed::point>::bind(const typed::multi_id> &tuple) const { auto res = isl::point::bind(tuple); return typed::set<>(res); } template typed::set> typed::point>::coalesce() const { auto res = isl::point::coalesce(); return typed::set>(res); } template typed::basic_set> typed::point>::detect_equalities() const { auto res = isl::point::detect_equalities(); return typed::basic_set>(res); } template typed::set> typed::point>::drop_unused_params() const { auto res = isl::point::drop_unused_params(); return typed::set>(res); } template bool typed::point>::every_set(const std::function>)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set>(arg0)); }; return isl::point::every_set(lambda_test); } template typed::set> typed::point>::extract_set(const typed::space> &space) const { auto res = isl::point::extract_set(space); return typed::set>(res); } template void typed::point>::foreach_basic_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set>(arg0)); }; return isl::point::foreach_basic_set(lambda_fn); } template void typed::point>::foreach_point(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point>(arg0)); }; return isl::point::foreach_point(lambda_fn); } template void typed::point>::foreach_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set>(arg0)); }; return isl::point::foreach_set(lambda_fn); } template typed::basic_set> typed::point>::gist(const typed::basic_set> &context) const { auto res = isl::point::gist(context); return typed::basic_set>(res); } template typed::set> typed::point>::gist(const typed::set> &context) const { auto res = isl::point::gist(context); return typed::set>(res); } template typed::union_set> typed::point>::gist(const typed::union_set> &context) const { auto res = isl::point::gist(context); return typed::union_set>(res); } template typed::set> typed::point>::gist_params(const typed::set<> &context) const { auto res = isl::point::gist_params(context); return typed::set>(res); } template typed::map, pair> typed::point>::identity() const { auto res = isl::point::identity(); return typed::map, pair>(res); } template typed::pw_aff, Anonymous> typed::point>::indicator_function() const { auto res = isl::point::indicator_function(); return typed::pw_aff, Anonymous>(res); } template template typed::map> typed::point>::insert_domain(const typed::space &domain) const { auto res = isl::point::insert_domain(domain); return typed::map>(res); } template typed::basic_set> typed::point>::intersect(const typed::basic_set> &bset2) const { auto res = isl::point::intersect(bset2); return typed::basic_set>(res); } template typed::set> typed::point>::intersect(const typed::set> &set2) const { auto res = isl::point::intersect(set2); return typed::set>(res); } template typed::union_set> typed::point>::intersect(const typed::union_set> &uset2) const { auto res = isl::point::intersect(uset2); return typed::union_set>(res); } template typed::basic_set> typed::point>::intersect_params(const typed::basic_set<> &bset2) const { auto res = isl::point::intersect_params(bset2); return typed::basic_set>(res); } template typed::set> typed::point>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::point::intersect_params(params); return typed::set>(res); } template typed::fixed_box> typed::point>::lattice_tile() const { auto res = isl::point::lattice_tile(); return typed::fixed_box>(res); } template typed::set> typed::point>::lexmax() const { auto res = isl::point::lexmax(); return typed::set>(res); } template typed::pw_multi_aff> typed::point>::lexmax_pw_multi_aff() const { auto res = isl::point::lexmax_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::point>::lexmin() const { auto res = isl::point::lexmin(); return typed::set>(res); } template typed::pw_multi_aff> typed::point>::lexmin_pw_multi_aff() const { auto res = isl::point::lexmin_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::point>::lower_bound(const typed::multi_pw_aff> &lower) const { auto res = isl::point::lower_bound(lower); return typed::set>(res); } template typed::set> typed::point>::lower_bound(const typed::multi_val> &lower) const { auto res = isl::point::lower_bound(lower); return typed::set>(res); } template typed::multi_pw_aff> typed::point>::max_multi_pw_aff() const { auto res = isl::point::max_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::point>::min_multi_pw_aff() const { auto res = isl::point::min_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_val> typed::point>::multi_val() const { auto res = isl::point::multi_val(); return typed::multi_val>(res); } template typed::pw_aff, Anonymous> typed::point>::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::point::param_pw_aff_on_domain(id); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::point>::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::point::param_pw_aff_on_domain(id); return typed::pw_aff, Anonymous>(res); } template typed::basic_set<> typed::point>::params() const { auto res = isl::point::params(); return typed::basic_set<>(res); } template typed::multi_val> typed::point>::plain_multi_val_if_fixed() const { auto res = isl::point::plain_multi_val_if_fixed(); return typed::multi_val>(res); } template template typed::set typed::point>::preimage(const typed::multi_aff> &ma) const { auto res = isl::point::preimage(ma); return typed::set(res); } template template typed::set typed::point>::preimage(const typed::multi_pw_aff> &mpa) const { auto res = isl::point::preimage(mpa); return typed::set(res); } template template typed::set typed::point>::preimage(const typed::pw_multi_aff> &pma) const { auto res = isl::point::preimage(pma); return typed::set(res); } template template typed::union_set typed::point>::preimage(const typed::union_pw_multi_aff> &upma) const { auto res = isl::point::preimage(upma); return typed::union_set(res); } template template typed::set, Arg2>> typed::point>::product(const typed::set &set2) const { auto res = isl::point::product(set2); return typed::set, Arg2>>(res); } template typed::set> typed::point>::project_out_all_params() const { auto res = isl::point::project_out_all_params(); return typed::set>(res); } template typed::set> typed::point>::project_out_param(const typed::id &id) const { auto res = isl::point::project_out_param(id); return typed::set>(res); } template typed::set> typed::point>::project_out_param(const std::string &id) const { auto res = isl::point::project_out_param(id); return typed::set>(res); } template typed::set> typed::point>::project_out_param(const typed::id_list &list) const { auto res = isl::point::project_out_param(list); return typed::set>(res); } template typed::pw_aff, Anonymous> typed::point>::pw_aff_on_domain(const typed::val &v) const { auto res = isl::point::pw_aff_on_domain(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::point>::pw_aff_on_domain(long v) const { auto res = isl::point::pw_aff_on_domain(v); return typed::pw_aff, Anonymous>(res); } template template typed::pw_multi_aff, Arg2> typed::point>::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::point::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff, Arg2>(res); } template typed::set_list> typed::point>::set_list() const { auto res = isl::point::set_list(); return typed::set_list>(res); } template typed::fixed_box> typed::point>::simple_fixed_box_hull() const { auto res = isl::point::simple_fixed_box_hull(); return typed::fixed_box>(res); } template typed::space> typed::point>::space() const { auto res = isl::point::space(); return typed::space>(res); } template typed::set> typed::point>::subtract(const typed::set> &set2) const { auto res = isl::point::subtract(set2); return typed::set>(res); } template typed::union_set> typed::point>::subtract(const typed::union_set> &uset2) const { auto res = isl::point::subtract(uset2); return typed::union_set>(res); } template typed::set> typed::point>::to_set() const { auto res = isl::point::to_set(); return typed::set>(res); } template typed::union_set> typed::point>::to_union_set() const { auto res = isl::point::to_union_set(); return typed::union_set>(res); } template typed::map, pair> typed::point>::translation() const { auto res = isl::point::translation(); return typed::map, pair>(res); } template template typed::map> typed::point>::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::point::unbind_params_insert_domain(domain); return typed::map>(res); } template typed::set> typed::point>::unite(const typed::basic_set> &bset2) const { auto res = isl::point::unite(bset2); return typed::set>(res); } template typed::set> typed::point>::unite(const typed::set> &set2) const { auto res = isl::point::unite(set2); return typed::set>(res); } template typed::union_set> typed::point>::unite(const typed::union_set> &uset2) const { auto res = isl::point::unite(uset2); return typed::union_set>(res); } template typed::map typed::point>::unwrap() const { auto res = isl::point::unwrap(); return typed::map(res); } template typed::set> typed::point>::upper_bound(const typed::multi_pw_aff> &upper) const { auto res = isl::point::upper_bound(upper); return typed::set>(res); } template typed::set> typed::point>::upper_bound(const typed::multi_val> &upper) const { auto res = isl::point::upper_bound(upper); return typed::set>(res); } template typed::set> typed::point>::wrapped_reverse() const { auto res = isl::point::wrapped_reverse(); return typed::set>(res); } typed::pw_aff::pw_aff(const typed::aff &aff) : isl::pw_aff(aff) { } typed::pw_aff::pw_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_aff(ctx, str) { } typed::multi_pw_aff typed::pw_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::add(multi2); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } typed::pw_aff typed::pw_aff::add(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::add(pwaff2); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::add(pma2); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::pw_aff::add(const typed::union_pw_aff &upa2) const { auto res = isl::pw_aff::add(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::pw_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::add(upma2); return typed::union_pw_multi_aff(res); } typed::pw_aff typed::pw_aff::add(const typed::aff &pwaff2) const { auto res = isl::pw_aff::add(pwaff2); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::add_constant(const typed::val &v) const { auto res = isl::pw_aff::add_constant(v); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::add_constant(long v) const { auto res = isl::pw_aff::add_constant(v); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::pw_aff::add_constant(mv); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::apply(upma2); return typed::union_pw_multi_aff(res); } typed::aff typed::pw_aff::as_aff() const { auto res = isl::pw_aff::as_aff(); return typed::aff(res); } typed::multi_aff typed::pw_aff::as_multi_aff() const { auto res = isl::pw_aff::as_multi_aff(); return typed::multi_aff(res); } typed::multi_union_pw_aff typed::pw_aff::as_multi_union_pw_aff() const { auto res = isl::pw_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } typed::pw_multi_aff typed::pw_aff::as_pw_multi_aff() const { auto res = isl::pw_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } typed::set typed::pw_aff::as_set() const { auto res = isl::pw_aff::as_set(); return typed::set(res); } typed::pw_aff typed::pw_aff::at(int pos) const { auto res = isl::pw_aff::at(pos); return typed::pw_aff(res); } typed::set<> typed::pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::pw_aff::bind(tuple); return typed::set<>(res); } typed::set<> typed::pw_aff::bind(const typed::id &id) const { auto res = isl::pw_aff::bind(id); return typed::set<>(res); } typed::set<> typed::pw_aff::bind(const std::string &id) const { auto res = isl::pw_aff::bind(id); return typed::set<>(res); } typed::pw_aff typed::pw_aff::ceil() const { auto res = isl::pw_aff::ceil(); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::coalesce() const { auto res = isl::pw_aff::coalesce(); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const { auto res = isl::pw_aff::cond(pwaff_true, pwaff_false); return typed::pw_aff(res); } typed::set<> typed::pw_aff::domain() const { auto res = isl::pw_aff::domain(); return typed::set<>(res); } typed::pw_aff typed::pw_aff::drop_unused_params() const { auto res = isl::pw_aff::drop_unused_params(); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::pw_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } typed::pw_aff typed::pw_aff::floor() const { auto res = isl::pw_aff::floor(); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::gist(const typed::set<> &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff(res); } typed::union_pw_aff typed::pw_aff::gist(const typed::union_set<> &context) const { auto res = isl::pw_aff::gist(context); return typed::union_pw_aff(res); } typed::pw_aff typed::pw_aff::gist(const typed::basic_set<> &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::gist(const typed::point<> &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::gist_params(const typed::set<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::gist_params(const typed::point<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff(res); } typed::multi_pw_aff typed::pw_aff::identity() const { auto res = isl::pw_aff::identity(); return typed::multi_pw_aff(res); } template typed::pw_aff typed::pw_aff::insert_domain(const typed::space &domain) const { auto res = isl::pw_aff::insert_domain(domain); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::intersect_params(const typed::set<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::intersect_params(const typed::point<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff(res); } typed::pw_aff_list typed::pw_aff::list() const { auto res = isl::pw_aff::list(); return typed::pw_aff_list(res); } typed::multi_pw_aff typed::pw_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::max(multi2); return typed::multi_pw_aff(res); } typed::pw_aff typed::pw_aff::max(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::max(pwaff2); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::max(const typed::aff &pwaff2) const { auto res = isl::pw_aff::max(pwaff2); return typed::pw_aff(res); } typed::multi_val typed::pw_aff::max_multi_val() const { auto res = isl::pw_aff::max_multi_val(); return typed::multi_val(res); } typed::val typed::pw_aff::max_val() const { auto res = isl::pw_aff::max_val(); return typed::val(res); } typed::multi_pw_aff typed::pw_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::min(multi2); return typed::multi_pw_aff(res); } typed::pw_aff typed::pw_aff::min(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::min(pwaff2); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::min(const typed::aff &pwaff2) const { auto res = isl::pw_aff::min(pwaff2); return typed::pw_aff(res); } typed::multi_val typed::pw_aff::min_multi_val() const { auto res = isl::pw_aff::min_multi_val(); return typed::multi_val(res); } typed::val typed::pw_aff::min_val() const { auto res = isl::pw_aff::min_val(); return typed::val(res); } typed::pw_aff typed::pw_aff::mod(const typed::val &mod) const { auto res = isl::pw_aff::mod(mod); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::mod(long mod) const { auto res = isl::pw_aff::mod(mod); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::neg() const { auto res = isl::pw_aff::neg(); return typed::pw_aff(res); } typed::set<> typed::pw_aff::params() const { auto res = isl::pw_aff::params(); return typed::set<>(res); } template typed::multi_pw_aff> typed::pw_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::product(multi2); return typed::multi_pw_aff>(res); } template typed::pw_multi_aff> typed::pw_aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::product(pma2); return typed::pw_multi_aff>(res); } typed::pw_multi_aff_list typed::pw_aff::pw_multi_aff_list() const { auto res = isl::pw_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } typed::pw_aff typed::pw_aff::scale(const typed::val &v) const { auto res = isl::pw_aff::scale(v); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::scale(long v) const { auto res = isl::pw_aff::scale(v); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::pw_aff::scale(mv); return typed::pw_multi_aff(res); } typed::pw_aff typed::pw_aff::scale_down(const typed::val &f) const { auto res = isl::pw_aff::scale_down(f); return typed::pw_aff(res); } typed::pw_aff typed::pw_aff::scale_down(long f) const { auto res = isl::pw_aff::scale_down(f); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::pw_aff::scale_down(mv); return typed::pw_multi_aff(res); } typed::multi_pw_aff typed::pw_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::pw_aff::set_at(pos, el); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::pw_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::pw_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } typed::space typed::pw_aff::space() const { auto res = isl::pw_aff::space(); return typed::space(res); } typed::multi_pw_aff typed::pw_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::sub(multi2); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } typed::pw_aff typed::pw_aff::sub(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::sub(pwaff2); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::sub(pma2); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::pw_aff::sub(const typed::union_pw_aff &upa2) const { auto res = isl::pw_aff::sub(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::pw_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::sub(upma2); return typed::union_pw_multi_aff(res); } typed::pw_aff typed::pw_aff::sub(const typed::aff &pwaff2) const { auto res = isl::pw_aff::sub(pwaff2); return typed::pw_aff(res); } typed::multi_pw_aff typed::pw_aff::to_multi_pw_aff() const { auto res = isl::pw_aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } typed::union_pw_aff typed::pw_aff::to_union_pw_aff() const { auto res = isl::pw_aff::to_union_pw_aff(); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::pw_aff::to_union_pw_multi_aff() const { auto res = isl::pw_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_aff::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::pw_aff::unbind_params_insert_domain(domain); return typed::multi_pw_aff(res); } typed::multi_pw_aff typed::pw_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } typed::multi_union_pw_aff typed::pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } typed::pw_aff typed::pw_aff::union_add(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::union_add(pwaff2); return typed::pw_aff(res); } typed::pw_multi_aff typed::pw_aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::union_add(pma2); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::pw_aff::union_add(const typed::union_pw_aff &upa2) const { auto res = isl::pw_aff::union_add(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::pw_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } typed::pw_aff typed::pw_aff::union_add(const typed::aff &pwaff2) const { auto res = isl::pw_aff::union_add(pwaff2); return typed::pw_aff(res); } template typed::pw_aff::pw_aff(const typed::aff &aff) : isl::pw_aff(aff) { } template typed::pw_aff::pw_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_aff(ctx, str) { } template typed::multi_pw_aff typed::pw_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_aff typed::pw_aff::add(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::add(pwaff2); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::pw_aff::add(const typed::union_pw_aff &upa2) const { auto res = isl::pw_aff::add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::pw_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_aff typed::pw_aff::add(const typed::aff &pwaff2) const { auto res = isl::pw_aff::add(pwaff2); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::add_constant(const typed::val &v) const { auto res = isl::pw_aff::add_constant(v); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::add_constant(long v) const { auto res = isl::pw_aff::add_constant(v); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::pw_aff::add_constant(mv); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::pw_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::aff typed::pw_aff::as_aff() const { auto res = isl::pw_aff::as_aff(); return typed::aff(res); } template typed::map typed::pw_aff::as_map() const { auto res = isl::pw_aff::as_map(); return typed::map(res); } template typed::multi_aff typed::pw_aff::as_multi_aff() const { auto res = isl::pw_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::multi_union_pw_aff typed::pw_aff::as_multi_union_pw_aff() const { auto res = isl::pw_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::as_pw_multi_aff() const { auto res = isl::pw_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_map typed::pw_aff::as_union_map() const { auto res = isl::pw_aff::as_union_map(); return typed::union_map(res); } template typed::pw_aff typed::pw_aff::at(int pos) const { auto res = isl::pw_aff::at(pos); return typed::pw_aff(res); } template typed::set typed::pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::pw_aff::bind(tuple); return typed::set(res); } template typed::set typed::pw_aff::bind(const typed::id &id) const { auto res = isl::pw_aff::bind(id); return typed::set(res); } template typed::set typed::pw_aff::bind(const std::string &id) const { auto res = isl::pw_aff::bind(id); return typed::set(res); } template typed::pw_aff typed::pw_aff::bind_domain(const typed::multi_id &tuple) const { auto res = isl::pw_aff::bind_domain(tuple); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::ceil() const { auto res = isl::pw_aff::ceil(); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::coalesce() const { auto res = isl::pw_aff::coalesce(); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::cond(const typed::pw_aff &pwaff_true, const typed::pw_aff &pwaff_false) const { auto res = isl::pw_aff::cond(pwaff_true, pwaff_false); return typed::pw_aff(res); } template typed::set typed::pw_aff::domain() const { auto res = isl::pw_aff::domain(); return typed::set(res); } template typed::pw_aff typed::pw_aff::drop_unused_params() const { auto res = isl::pw_aff::drop_unused_params(); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::pw_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::pw_aff typed::pw_aff::floor() const { auto res = isl::pw_aff::floor(); return typed::pw_aff(res); } template typed::set typed::pw_aff::ge_set(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::ge_set(pwaff2); return typed::set(res); } template typed::set typed::pw_aff::ge_set(const typed::aff &pwaff2) const { auto res = isl::pw_aff::ge_set(pwaff2); return typed::set(res); } template typed::pw_aff typed::pw_aff::gist(const typed::set &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff(res); } template typed::union_pw_aff typed::pw_aff::gist(const typed::union_set &context) const { auto res = isl::pw_aff::gist(context); return typed::union_pw_aff(res); } template typed::pw_aff typed::pw_aff::gist(const typed::basic_set &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::gist(const typed::point &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::gist_params(const typed::set<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::gist_params(const typed::basic_set<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::gist_params(const typed::point<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff(res); } template typed::set typed::pw_aff::gt_set(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::gt_set(pwaff2); return typed::set(res); } template typed::set typed::pw_aff::gt_set(const typed::aff &pwaff2) const { auto res = isl::pw_aff::gt_set(pwaff2); return typed::set(res); } template typed::multi_pw_aff typed::pw_aff::identity() const { auto res = isl::pw_aff::identity(); return typed::multi_pw_aff(res); } template typed::pw_aff typed::pw_aff::intersect_domain(const typed::set &set) const { auto res = isl::pw_aff::intersect_domain(set); return typed::pw_aff(res); } template typed::union_pw_aff typed::pw_aff::intersect_domain(const typed::space &space) const { auto res = isl::pw_aff::intersect_domain(space); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::pw_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::pw_aff::intersect_domain(uset); return typed::union_pw_aff(res); } template typed::pw_aff typed::pw_aff::intersect_domain(const typed::basic_set &set) const { auto res = isl::pw_aff::intersect_domain(set); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::intersect_domain(const typed::point &set) const { auto res = isl::pw_aff::intersect_domain(set); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::intersect_params(const typed::set<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::intersect_params(const typed::point<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff(res); } template typed::set typed::pw_aff::le_set(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::le_set(pwaff2); return typed::set(res); } template typed::set typed::pw_aff::le_set(const typed::aff &pwaff2) const { auto res = isl::pw_aff::le_set(pwaff2); return typed::set(res); } template typed::pw_aff_list typed::pw_aff::list() const { auto res = isl::pw_aff::list(); return typed::pw_aff_list(res); } template typed::set typed::pw_aff::lt_set(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::lt_set(pwaff2); return typed::set(res); } template typed::set typed::pw_aff::lt_set(const typed::aff &pwaff2) const { auto res = isl::pw_aff::lt_set(pwaff2); return typed::set(res); } template typed::multi_pw_aff typed::pw_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::pw_aff typed::pw_aff::max(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::max(pwaff2); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::max(const typed::aff &pwaff2) const { auto res = isl::pw_aff::max(pwaff2); return typed::pw_aff(res); } template typed::multi_val typed::pw_aff::max_multi_val() const { auto res = isl::pw_aff::max_multi_val(); return typed::multi_val(res); } template typed::val typed::pw_aff::max_val() const { auto res = isl::pw_aff::max_val(); return typed::val(res); } template typed::multi_pw_aff typed::pw_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::pw_aff typed::pw_aff::min(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::min(pwaff2); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::min(const typed::aff &pwaff2) const { auto res = isl::pw_aff::min(pwaff2); return typed::pw_aff(res); } template typed::multi_val typed::pw_aff::min_multi_val() const { auto res = isl::pw_aff::min_multi_val(); return typed::multi_val(res); } template typed::val typed::pw_aff::min_val() const { auto res = isl::pw_aff::min_val(); return typed::val(res); } template typed::pw_aff typed::pw_aff::mod(const typed::val &mod) const { auto res = isl::pw_aff::mod(mod); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::mod(long mod) const { auto res = isl::pw_aff::mod(mod); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::neg() const { auto res = isl::pw_aff::neg(); return typed::pw_aff(res); } template typed::set<> typed::pw_aff::params() const { auto res = isl::pw_aff::params(); return typed::set<>(res); } template template typed::multi_pw_aff, pair> typed::pw_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::pw_aff typed::pw_aff::pullback(const typed::multi_aff &ma) const { auto res = isl::pw_aff::pullback(ma); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::pullback(const typed::multi_aff &ma) const { auto res = isl::pw_aff::pullback(ma); return typed::pw_aff(res); } template template typed::pw_aff typed::pw_aff::pullback(const typed::multi_pw_aff &mpa) const { auto res = isl::pw_aff::pullback(mpa); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::pullback(const typed::multi_pw_aff &mpa) const { auto res = isl::pw_aff::pullback(mpa); return typed::pw_aff(res); } template template typed::pw_aff typed::pw_aff::pullback(const typed::pw_multi_aff &pma) const { auto res = isl::pw_aff::pullback(pma); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::pullback(const typed::pw_multi_aff &pma) const { auto res = isl::pw_aff::pullback(pma); return typed::pw_aff(res); } template template typed::union_pw_aff typed::pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::pw_multi_aff_list typed::pw_aff::pw_multi_aff_list() const { auto res = isl::pw_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template template typed::multi_pw_aff> typed::pw_aff::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::pw_aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template template typed::pw_multi_aff> typed::pw_aff::range_product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::range_product(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::pw_aff::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_aff typed::pw_aff::scale(const typed::val &v) const { auto res = isl::pw_aff::scale(v); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::scale(long v) const { auto res = isl::pw_aff::scale(v); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::pw_aff::scale(mv); return typed::pw_multi_aff(res); } template typed::pw_aff typed::pw_aff::scale_down(const typed::val &f) const { auto res = isl::pw_aff::scale_down(f); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::scale_down(long f) const { auto res = isl::pw_aff::scale_down(f); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::pw_aff::scale_down(mv); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::pw_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::pw_multi_aff typed::pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::pw_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template template typed::pw_multi_aff typed::pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::pw_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template typed::space typed::pw_aff::space() const { auto res = isl::pw_aff::space(); return typed::space(res); } template typed::multi_pw_aff typed::pw_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_aff typed::pw_aff::sub(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::sub(pwaff2); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::pw_aff::sub(const typed::union_pw_aff &upa2) const { auto res = isl::pw_aff::sub(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::pw_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_aff typed::pw_aff::sub(const typed::aff &pwaff2) const { auto res = isl::pw_aff::sub(pwaff2); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::subtract_domain(const typed::set &set) const { auto res = isl::pw_aff::subtract_domain(set); return typed::pw_aff(res); } template typed::union_pw_aff typed::pw_aff::subtract_domain(const typed::space &space) const { auto res = isl::pw_aff::subtract_domain(space); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::pw_aff::subtract_domain(const typed::union_set &uset) const { auto res = isl::pw_aff::subtract_domain(uset); return typed::union_pw_aff(res); } template typed::pw_aff typed::pw_aff::subtract_domain(const typed::basic_set &set) const { auto res = isl::pw_aff::subtract_domain(set); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff::subtract_domain(const typed::point &set) const { auto res = isl::pw_aff::subtract_domain(set); return typed::pw_aff(res); } template typed::multi_pw_aff typed::pw_aff::to_multi_pw_aff() const { auto res = isl::pw_aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::union_pw_aff typed::pw_aff::to_union_pw_aff() const { auto res = isl::pw_aff::to_union_pw_aff(); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::pw_aff::to_union_pw_multi_aff() const { auto res = isl::pw_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::pw_aff typed::pw_aff::union_add(const typed::pw_aff &pwaff2) const { auto res = isl::pw_aff::union_add(pwaff2); return typed::pw_aff(res); } template typed::pw_multi_aff typed::pw_aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::pw_aff::union_add(const typed::union_pw_aff &upa2) const { auto res = isl::pw_aff::union_add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::pw_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_aff typed::pw_aff::union_add(const typed::aff &pwaff2) const { auto res = isl::pw_aff::union_add(pwaff2); return typed::pw_aff(res); } template typed::pw_aff, Anonymous>::pw_aff(const typed::aff, Anonymous> &aff) : isl::pw_aff(aff) { } template typed::pw_aff, Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_aff(ctx, str) { } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::pw_aff::add(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::multi_union_pw_aff, Anonymous> &multi2) const { auto res = isl::pw_aff::add(multi2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::add(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::pw_multi_aff, Anonymous> &pma2) const { auto res = isl::pw_aff::add(pma2); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::pw_aff::add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::pw_aff::add(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::add(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::add(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::add_constant(const typed::val &v) const { auto res = isl::pw_aff::add_constant(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::add_constant(long v) const { auto res = isl::pw_aff::add_constant(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::add_constant(const typed::multi_val &mv) const { auto res = isl::pw_aff::add_constant(mv); return typed::pw_multi_aff, Anonymous>(res); } template template typed::union_pw_multi_aff, Arg1> typed::pw_aff, Anonymous>::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::apply(upma2); return typed::union_pw_multi_aff, Arg1>(res); } template typed::aff, Anonymous> typed::pw_aff, Anonymous>::as_aff() const { auto res = isl::pw_aff::as_aff(); return typed::aff, Anonymous>(res); } template typed::map, Anonymous> typed::pw_aff, Anonymous>::as_map() const { auto res = isl::pw_aff::as_map(); return typed::map, Anonymous>(res); } template typed::multi_aff, Anonymous> typed::pw_aff, Anonymous>::as_multi_aff() const { auto res = isl::pw_aff::as_multi_aff(); return typed::multi_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::as_multi_union_pw_aff() const { auto res = isl::pw_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::as_pw_multi_aff() const { auto res = isl::pw_aff::as_pw_multi_aff(); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_map, Anonymous> typed::pw_aff, Anonymous>::as_union_map() const { auto res = isl::pw_aff::as_union_map(); return typed::union_map, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::at(int pos) const { auto res = isl::pw_aff::at(pos); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_aff, Anonymous>::bind(const typed::multi_id &tuple) const { auto res = isl::pw_aff::bind(tuple); return typed::set>(res); } template typed::set> typed::pw_aff, Anonymous>::bind(const typed::id &id) const { auto res = isl::pw_aff::bind(id); return typed::set>(res); } template typed::set> typed::pw_aff, Anonymous>::bind(const std::string &id) const { auto res = isl::pw_aff::bind(id); return typed::set>(res); } template typed::pw_aff typed::pw_aff, Anonymous>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::pw_aff::bind_domain(tuple); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff, Anonymous>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::pw_aff::bind_domain_wrapped_domain(tuple); return typed::pw_aff(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::ceil() const { auto res = isl::pw_aff::ceil(); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::coalesce() const { auto res = isl::pw_aff::coalesce(); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::cond(const typed::pw_aff, Anonymous> &pwaff_true, const typed::pw_aff, Anonymous> &pwaff_false) const { auto res = isl::pw_aff::cond(pwaff_true, pwaff_false); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_aff, Anonymous>::domain() const { auto res = isl::pw_aff::domain(); return typed::set>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::domain_reverse() const { auto res = isl::pw_aff::domain_reverse(); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::drop_unused_params() const { auto res = isl::pw_aff::drop_unused_params(); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::extract_pw_multi_aff(const typed::space, Anonymous> &space) const { auto res = isl::pw_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::floor() const { auto res = isl::pw_aff::floor(); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_aff, Anonymous>::ge_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::ge_set(pwaff2); return typed::set>(res); } template typed::set> typed::pw_aff, Anonymous>::ge_set(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::ge_set(pwaff2); return typed::set>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist(const typed::set> &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist(const typed::union_set> &context) const { auto res = isl::pw_aff::gist(context); return typed::union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist(const typed::basic_set> &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist(const typed::point> &context) const { auto res = isl::pw_aff::gist(context); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist_params(const typed::set<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist_params(const typed::basic_set<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::gist_params(const typed::point<> &context) const { auto res = isl::pw_aff::gist_params(context); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_aff, Anonymous>::gt_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::gt_set(pwaff2); return typed::set>(res); } template typed::set> typed::pw_aff, Anonymous>::gt_set(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::gt_set(pwaff2); return typed::set>(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::identity() const { auto res = isl::pw_aff::identity(); return typed::multi_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_domain(const typed::set> &set) const { auto res = isl::pw_aff::intersect_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_domain(const typed::space> &space) const { auto res = isl::pw_aff::intersect_domain(space); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::pw_aff::intersect_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_domain(const typed::basic_set> &set) const { auto res = isl::pw_aff::intersect_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_domain(const typed::point> &set) const { auto res = isl::pw_aff::intersect_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::pw_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_params(const typed::set<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::intersect_params(const typed::point<> &set) const { auto res = isl::pw_aff::intersect_params(set); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_aff, Anonymous>::le_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::le_set(pwaff2); return typed::set>(res); } template typed::set> typed::pw_aff, Anonymous>::le_set(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::le_set(pwaff2); return typed::set>(res); } template typed::pw_aff_list, Anonymous> typed::pw_aff, Anonymous>::list() const { auto res = isl::pw_aff::list(); return typed::pw_aff_list, Anonymous>(res); } template typed::set> typed::pw_aff, Anonymous>::lt_set(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::lt_set(pwaff2); return typed::set>(res); } template typed::set> typed::pw_aff, Anonymous>::lt_set(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::lt_set(pwaff2); return typed::set>(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::max(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::pw_aff::max(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::max(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::max(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::max(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::max(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::multi_val typed::pw_aff, Anonymous>::max_multi_val() const { auto res = isl::pw_aff::max_multi_val(); return typed::multi_val(res); } template typed::val typed::pw_aff, Anonymous>::max_val() const { auto res = isl::pw_aff::max_val(); return typed::val(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::min(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::pw_aff::min(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::min(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::min(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::min(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::min(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::multi_val typed::pw_aff, Anonymous>::min_multi_val() const { auto res = isl::pw_aff::min_multi_val(); return typed::multi_val(res); } template typed::val typed::pw_aff, Anonymous>::min_val() const { auto res = isl::pw_aff::min_val(); return typed::val(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::mod(const typed::val &mod) const { auto res = isl::pw_aff::mod(mod); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::mod(long mod) const { auto res = isl::pw_aff::mod(mod); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::neg() const { auto res = isl::pw_aff::neg(); return typed::pw_aff, Anonymous>(res); } template typed::set<> typed::pw_aff, Anonymous>::params() const { auto res = isl::pw_aff::params(); return typed::set<>(res); } template template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, Anonymous>(res); } template template typed::union_pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template template typed::multi_pw_aff, Arg1>, pair> typed::pw_aff, Anonymous>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_aff::product(multi2); return typed::multi_pw_aff, Arg1>, pair>(res); } template template typed::pw_multi_aff, Arg1>, pair> typed::pw_aff, Anonymous>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_aff::product(pma2); return typed::pw_multi_aff, Arg1>, pair>(res); } template template typed::pw_aff typed::pw_aff, Anonymous>::pullback(const typed::multi_aff> &ma) const { auto res = isl::pw_aff::pullback(ma); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff, Anonymous>::pullback(const typed::multi_aff> &ma) const { auto res = isl::pw_aff::pullback(ma); return typed::pw_aff(res); } template template typed::pw_aff typed::pw_aff, Anonymous>::pullback(const typed::multi_pw_aff> &mpa) const { auto res = isl::pw_aff::pullback(mpa); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff, Anonymous>::pullback(const typed::multi_pw_aff> &mpa) const { auto res = isl::pw_aff::pullback(mpa); return typed::pw_aff(res); } template template typed::pw_aff typed::pw_aff, Anonymous>::pullback(const typed::pw_multi_aff> &pma) const { auto res = isl::pw_aff::pullback(pma); return typed::pw_aff(res); } template typed::pw_aff typed::pw_aff, Anonymous>::pullback(const typed::pw_multi_aff> &pma) const { auto res = isl::pw_aff::pullback(pma); return typed::pw_aff(res); } template template typed::union_pw_aff typed::pw_aff, Anonymous>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::pw_aff, Anonymous>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::pw_multi_aff_list, Anonymous> typed::pw_aff, Anonymous>::pw_multi_aff_list() const { auto res = isl::pw_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, Anonymous>(res); } template template typed::multi_pw_aff, pair> typed::pw_aff, Anonymous>::range_product(const typed::multi_pw_aff, Arg1> &multi2) const { auto res = isl::pw_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_union_pw_aff, pair> typed::pw_aff, Anonymous>::range_product(const typed::multi_union_pw_aff, Arg1> &multi2) const { auto res = isl::pw_aff::range_product(multi2); return typed::multi_union_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_aff, Anonymous>::range_product(const typed::pw_multi_aff, Arg1> &pma2) const { auto res = isl::pw_aff::range_product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::pw_aff, Anonymous>::range_product(const typed::union_pw_multi_aff, Arg1> &upma2) const { auto res = isl::pw_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::scale(const typed::val &v) const { auto res = isl::pw_aff::scale(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::scale(long v) const { auto res = isl::pw_aff::scale(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::scale(const typed::multi_val &mv) const { auto res = isl::pw_aff::scale(mv); return typed::pw_multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::scale_down(const typed::val &f) const { auto res = isl::pw_aff::scale_down(f); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::scale_down(long f) const { auto res = isl::pw_aff::scale_down(f); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::scale_down(const typed::multi_val &mv) const { auto res = isl::pw_aff::scale_down(mv); return typed::pw_multi_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::pw_aff::set_at(pos, el); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::pw_aff::set_at(pos, el); return typed::multi_union_pw_aff, Anonymous>(res); } template template typed::pw_multi_aff, Arg1> typed::pw_aff, Anonymous>::set_range_tuple(const typed::id &id) const { auto res = isl::pw_aff::set_range_tuple(id); return typed::pw_multi_aff, Arg1>(res); } template template typed::pw_multi_aff, Arg1> typed::pw_aff, Anonymous>::set_range_tuple(const std::string &id) const { auto res = isl::pw_aff::set_range_tuple(id); return typed::pw_multi_aff, Arg1>(res); } template typed::space, Anonymous> typed::pw_aff, Anonymous>::space() const { auto res = isl::pw_aff::space(); return typed::space, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::multi_pw_aff, Anonymous> &multi2) const { auto res = isl::pw_aff::sub(multi2); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::multi_union_pw_aff, Anonymous> &multi2) const { auto res = isl::pw_aff::sub(multi2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::sub(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::pw_multi_aff, Anonymous> &pma2) const { auto res = isl::pw_aff::sub(pma2); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::pw_aff::sub(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::pw_aff::sub(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::sub(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::sub(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::subtract_domain(const typed::set> &set) const { auto res = isl::pw_aff::subtract_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::subtract_domain(const typed::space> &space) const { auto res = isl::pw_aff::subtract_domain(space); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::pw_aff::subtract_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::subtract_domain(const typed::basic_set> &set) const { auto res = isl::pw_aff::subtract_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::subtract_domain(const typed::point> &set) const { auto res = isl::pw_aff::subtract_domain(set); return typed::pw_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::to_multi_pw_aff() const { auto res = isl::pw_aff::to_multi_pw_aff(); return typed::multi_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::to_union_pw_aff() const { auto res = isl::pw_aff::to_union_pw_aff(); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::to_union_pw_multi_aff() const { auto res = isl::pw_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::multi_pw_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::multi_pw_aff, Anonymous> &mpa2) const { auto res = isl::pw_aff::union_add(mpa2); return typed::multi_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::multi_union_pw_aff, Anonymous> &mupa2) const { auto res = isl::pw_aff::union_add(mupa2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::pw_aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::union_add(pwaff2); return typed::pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::pw_multi_aff, Anonymous> &pma2) const { auto res = isl::pw_aff::union_add(pma2); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::pw_aff::union_add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::pw_aff::union_add(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::pw_aff, Anonymous>::union_add(const typed::aff, Anonymous> &pwaff2) const { auto res = isl::pw_aff::union_add(pwaff2); return typed::pw_aff, Anonymous>(res); } typed::pw_aff_list::pw_aff_list(const isl::ctx &ctx, int n) : isl::pw_aff_list(ctx, n) { } typed::pw_aff_list::pw_aff_list(const typed::pw_aff &el) : isl::pw_aff_list(el) { } typed::pw_aff_list::pw_aff_list(const isl::ctx &ctx, const std::string &str) : isl::pw_aff_list(ctx, str) { } typed::pw_aff_list typed::pw_aff_list::add(const typed::pw_aff &el) const { auto res = isl::pw_aff_list::add(el); return typed::pw_aff_list(res); } typed::pw_aff_list typed::pw_aff_list::add(const typed::aff &el) const { auto res = isl::pw_aff_list::add(el); return typed::pw_aff_list(res); } typed::pw_aff typed::pw_aff_list::at(int index) const { auto res = isl::pw_aff_list::at(index); return typed::pw_aff(res); } typed::pw_aff_list typed::pw_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::pw_aff_list::drop(first, n); return typed::pw_aff_list(res); } void typed::pw_aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::pw_aff arg0) { return fn(typed::pw_aff(arg0)); }; return isl::pw_aff_list::foreach(lambda_fn); } void typed::pw_aff_list::foreach_scc(const std::function, typed::pw_aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::pw_aff arg0, isl::pw_aff arg1) { return follows(typed::pw_aff(arg0), typed::pw_aff(arg1)); }; auto lambda_fn = [&] (isl::pw_aff_list arg0) { return fn(typed::pw_aff_list(arg0)); }; return isl::pw_aff_list::foreach_scc(lambda_follows, lambda_fn); } typed::pw_aff_list typed::pw_aff_list::set_at(int index, const typed::pw_aff &el) const { auto res = isl::pw_aff_list::set_at(index, el); return typed::pw_aff_list(res); } template typed::pw_aff_list::pw_aff_list(const isl::ctx &ctx, int n) : isl::pw_aff_list(ctx, n) { } template typed::pw_aff_list::pw_aff_list(const typed::pw_aff &el) : isl::pw_aff_list(el) { } template typed::pw_aff_list::pw_aff_list(const isl::ctx &ctx, const std::string &str) : isl::pw_aff_list(ctx, str) { } template typed::pw_aff_list typed::pw_aff_list::add(const typed::pw_aff &el) const { auto res = isl::pw_aff_list::add(el); return typed::pw_aff_list(res); } template typed::pw_aff_list typed::pw_aff_list::add(const typed::aff &el) const { auto res = isl::pw_aff_list::add(el); return typed::pw_aff_list(res); } template typed::pw_aff typed::pw_aff_list::at(int index) const { auto res = isl::pw_aff_list::at(index); return typed::pw_aff(res); } template typed::pw_aff_list typed::pw_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::pw_aff_list::drop(first, n); return typed::pw_aff_list(res); } template void typed::pw_aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::pw_aff arg0) { return fn(typed::pw_aff(arg0)); }; return isl::pw_aff_list::foreach(lambda_fn); } template void typed::pw_aff_list::foreach_scc(const std::function, typed::pw_aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::pw_aff arg0, isl::pw_aff arg1) { return follows(typed::pw_aff(arg0), typed::pw_aff(arg1)); }; auto lambda_fn = [&] (isl::pw_aff_list arg0) { return fn(typed::pw_aff_list(arg0)); }; return isl::pw_aff_list::foreach_scc(lambda_follows, lambda_fn); } template typed::pw_aff_list typed::pw_aff_list::set_at(int index, const typed::pw_aff &el) const { auto res = isl::pw_aff_list::set_at(index, el); return typed::pw_aff_list(res); } template typed::pw_multi_aff::pw_multi_aff(const typed::multi_aff &ma) : isl::pw_multi_aff(ma) { } template typed::pw_multi_aff::pw_multi_aff(const typed::pw_aff &pa) : isl::pw_multi_aff(pa) { } template typed::pw_multi_aff::pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff(ctx, str) { } template typed::multi_pw_aff typed::pw_multi_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::add_constant(mv); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add_constant(const typed::val &v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add_constant(long v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::pw_multi_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_aff typed::pw_multi_aff::as_multi_aff() const { auto res = isl::pw_multi_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::as_multi_union_pw_aff() const { auto res = isl::pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::as_pw_multi_aff() const { auto res = isl::pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::pw_multi_aff::as_set() const { auto res = isl::pw_multi_aff::as_set(); return typed::set(res); } template typed::pw_aff typed::pw_multi_aff::at(int pos) const { auto res = isl::pw_multi_aff::at(pos); return typed::pw_aff(res); } template typed::set<> typed::pw_multi_aff::bind(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind(tuple); return typed::set<>(res); } template typed::pw_multi_aff typed::pw_multi_aff::coalesce() const { auto res = isl::pw_multi_aff::coalesce(); return typed::pw_multi_aff(res); } template typed::set<> typed::pw_multi_aff::domain() const { auto res = isl::pw_multi_aff::domain(); return typed::set<>(res); } template typed::pw_multi_aff typed::pw_multi_aff::drop_unused_params() const { auto res = isl::pw_multi_aff::drop_unused_params(); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist(const typed::set<> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::gist(const typed::union_set<> &context) const { auto res = isl::pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist(const typed::point<> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::identity() const { auto res = isl::pw_multi_aff::identity(); return typed::multi_pw_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::insert_domain(const typed::space &domain) const { auto res = isl::pw_multi_aff::insert_domain(domain); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::pw_aff_list typed::pw_multi_aff::list() const { auto res = isl::pw_multi_aff::list(); return typed::pw_aff_list(res); } template typed::multi_pw_aff typed::pw_multi_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::pw_multi_aff::max_multi_val() const { auto res = isl::pw_multi_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::pw_multi_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::pw_multi_aff::min_multi_val() const { auto res = isl::pw_multi_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::pw_multi_aff::neg() const { auto res = isl::pw_multi_aff::neg(); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff> typed::pw_multi_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::product(multi2); return typed::multi_pw_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff::product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff::product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff_list typed::pw_multi_aff::pw_multi_aff_list() const { auto res = isl::pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::scale(mv); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale(const typed::val &v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale(long v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::scale_down(mv); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale_down(const typed::val &v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale_down(long v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::set_range_tuple(const typed::id &id) const { auto res = isl::pw_multi_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::set_range_tuple(const std::string &id) const { auto res = isl::pw_multi_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template typed::space typed::pw_multi_aff::space() const { auto res = isl::pw_multi_aff::space(); return typed::space(res); } template typed::multi_pw_aff typed::pw_multi_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::sub(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::sub(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::to_multi_pw_aff() const { auto res = isl::pw_multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::to_union_pw_multi_aff() const { auto res = isl::pw_multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template template typed::multi_pw_aff typed::pw_multi_aff::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::pw_multi_aff::unbind_params_insert_domain(domain); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_multi_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::pw_multi_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::union_add(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::union_add(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff::pw_multi_aff(const typed::multi_aff &ma) : isl::pw_multi_aff(ma) { } template typed::pw_multi_aff::pw_multi_aff(const typed::pw_aff &pa) : isl::pw_multi_aff(pa) { } template typed::pw_multi_aff::pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff(ctx, str) { } template typed::multi_pw_aff typed::pw_multi_aff::add(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add_constant(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::add_constant(mv); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add_constant(const typed::val &v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::add_constant(long v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::pw_multi_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::map typed::pw_multi_aff::as_map() const { auto res = isl::pw_multi_aff::as_map(); return typed::map(res); } template typed::multi_aff typed::pw_multi_aff::as_multi_aff() const { auto res = isl::pw_multi_aff::as_multi_aff(); return typed::multi_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::as_multi_union_pw_aff() const { auto res = isl::pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::as_pw_multi_aff() const { auto res = isl::pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_map typed::pw_multi_aff::as_union_map() const { auto res = isl::pw_multi_aff::as_union_map(); return typed::union_map(res); } template typed::pw_aff typed::pw_multi_aff::at(int pos) const { auto res = isl::pw_multi_aff::at(pos); return typed::pw_aff(res); } template typed::set typed::pw_multi_aff::bind(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind(tuple); return typed::set(res); } template typed::pw_multi_aff typed::pw_multi_aff::bind_domain(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind_domain(tuple); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::coalesce() const { auto res = isl::pw_multi_aff::coalesce(); return typed::pw_multi_aff(res); } template typed::set typed::pw_multi_aff::domain() const { auto res = isl::pw_multi_aff::domain(); return typed::set(res); } template typed::pw_multi_aff typed::pw_multi_aff::drop_unused_params() const { auto res = isl::pw_multi_aff::drop_unused_params(); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist(const typed::set &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::gist(const typed::union_set &context) const { auto res = isl::pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist(const typed::basic_set &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist(const typed::point &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::gist_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::identity() const { auto res = isl::pw_multi_aff::identity(); return typed::multi_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_domain(const typed::set &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::intersect_domain(const typed::space &space) const { auto res = isl::pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_domain(const typed::basic_set &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_domain(const typed::point &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::intersect_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff(res); } template typed::pw_aff_list typed::pw_multi_aff::list() const { auto res = isl::pw_multi_aff::list(); return typed::pw_aff_list(res); } template typed::multi_pw_aff typed::pw_multi_aff::max(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::max(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::pw_multi_aff::max_multi_val() const { auto res = isl::pw_multi_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::pw_multi_aff::min(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::min(multi2); return typed::multi_pw_aff(res); } template typed::multi_val typed::pw_multi_aff::min_multi_val() const { auto res = isl::pw_multi_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff typed::pw_multi_aff::neg() const { auto res = isl::pw_multi_aff::neg(); return typed::multi_pw_aff(res); } template template typed::multi_pw_aff, pair> typed::pw_multi_aff::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff::product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff::product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::multi_pw_aff typed::pw_multi_aff::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::pullback(const typed::multi_aff &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::pullback(const typed::multi_aff &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::pw_multi_aff::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff_list typed::pw_multi_aff::pw_multi_aff_list() const { auto res = isl::pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template template typed::multi_pw_aff> typed::pw_multi_aff::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::pw_multi_aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff::range_product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::pw_multi_aff::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff::range_product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff::range_product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::scale(mv); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale(const typed::val &v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale(long v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::scale_down(mv); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale_down(const typed::val &v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::scale_down(long v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::set_range_tuple(const typed::id &id) const { auto res = isl::pw_multi_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff::set_range_tuple(const std::string &id) const { auto res = isl::pw_multi_aff::set_range_tuple(id); return typed::pw_multi_aff(res); } template typed::space typed::pw_multi_aff::space() const { auto res = isl::pw_multi_aff::space(); return typed::space(res); } template typed::multi_pw_aff typed::pw_multi_aff::sub(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::sub(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::sub(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::sub(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::subtract_domain(const typed::set &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::subtract_domain(const typed::space &space) const { auto res = isl::pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::subtract_domain(const typed::union_set &uset) const { auto res = isl::pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::subtract_domain(const typed::basic_set &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::subtract_domain(const typed::point &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::to_multi_pw_aff() const { auto res = isl::pw_multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::to_union_pw_multi_aff() const { auto res = isl::pw_multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff::union_add(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_multi_aff::union_add(mpa2); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::pw_multi_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::pw_multi_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::union_add(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::union_add(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff::union_add(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff, Range>::pw_multi_aff(const typed::multi_aff, Range> &ma) : isl::pw_multi_aff(ma) { } template typed::pw_multi_aff, Range>::pw_multi_aff(const typed::pw_aff, Range> &pa) : isl::pw_multi_aff(pa) { } template typed::pw_multi_aff, Range>::pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff(ctx, str) { } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::add(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::pw_multi_aff, Range>::add(const typed::multi_union_pw_aff, Range> &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::add(const typed::pw_multi_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::add(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::add(const typed::multi_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::add(const typed::pw_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::add_constant(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::add_constant(mv); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::add_constant(const typed::val &v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::add_constant(long v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Arg2> typed::pw_multi_aff, Range>::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template typed::map, Range> typed::pw_multi_aff, Range>::as_map() const { auto res = isl::pw_multi_aff::as_map(); return typed::map, Range>(res); } template typed::multi_aff, Range> typed::pw_multi_aff, Range>::as_multi_aff() const { auto res = isl::pw_multi_aff::as_multi_aff(); return typed::multi_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::pw_multi_aff, Range>::as_multi_union_pw_aff() const { auto res = isl::pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::as_pw_multi_aff() const { auto res = isl::pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff, Range>(res); } template typed::union_map, Range> typed::pw_multi_aff, Range>::as_union_map() const { auto res = isl::pw_multi_aff::as_union_map(); return typed::union_map, Range>(res); } template typed::pw_aff, Anonymous> typed::pw_multi_aff, Range>::at(int pos) const { auto res = isl::pw_multi_aff::at(pos); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_multi_aff, Range>::bind(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind(tuple); return typed::set>(res); } template typed::pw_multi_aff typed::pw_multi_aff, Range>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::pw_multi_aff::bind_domain(tuple); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff, Range>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind_domain_wrapped_domain(tuple); return typed::pw_multi_aff(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::coalesce() const { auto res = isl::pw_multi_aff::coalesce(); return typed::pw_multi_aff, Range>(res); } template typed::set> typed::pw_multi_aff, Range>::domain() const { auto res = isl::pw_multi_aff::domain(); return typed::set>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::domain_reverse() const { auto res = isl::pw_multi_aff::domain_reverse(); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::drop_unused_params() const { auto res = isl::pw_multi_aff::drop_unused_params(); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::extract_pw_multi_aff(const typed::space, Range> &space) const { auto res = isl::pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist(const typed::set> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist(const typed::union_set> &context) const { auto res = isl::pw_multi_aff::gist(context); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist(const typed::basic_set> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist(const typed::point> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::gist_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::identity() const { auto res = isl::pw_multi_aff::identity(); return typed::multi_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_domain(const typed::set> &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_domain(const typed::space> &space) const { auto res = isl::pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_domain(const typed::basic_set> &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_domain(const typed::point> &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::intersect_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_aff_list, Anonymous> typed::pw_multi_aff, Range>::list() const { auto res = isl::pw_multi_aff::list(); return typed::pw_aff_list, Anonymous>(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::max(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::pw_multi_aff::max(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_val typed::pw_multi_aff, Range>::max_multi_val() const { auto res = isl::pw_multi_aff::max_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::min(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::pw_multi_aff::min(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_val typed::pw_multi_aff, Range>::min_multi_val() const { auto res = isl::pw_multi_aff::min_multi_val(); return typed::multi_val(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::neg() const { auto res = isl::pw_multi_aff::neg(); return typed::multi_pw_aff, Range>(res); } template template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, Range>(res); } template template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, Range>(res); } template template typed::multi_pw_aff, Arg2>, pair> typed::pw_multi_aff, Range>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::product(multi2); return typed::multi_pw_aff, Arg2>, pair>(res); } template template typed::pw_multi_aff, Arg2>, pair> typed::pw_multi_aff, Range>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, Arg2>, pair>(res); } template template typed::pw_multi_aff, Arg2>, pair> typed::pw_multi_aff, Range>::product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, Arg2>, pair>(res); } template template typed::pw_multi_aff, Arg2>, pair> typed::pw_multi_aff, Range>::product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, Arg2>, pair>(res); } template template typed::multi_pw_aff typed::pw_multi_aff, Range>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::pw_multi_aff, Range>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff, Range>::pullback(const typed::multi_aff> &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff, Range>::pullback(const typed::multi_aff> &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff(res); } template template typed::pw_multi_aff typed::pw_multi_aff, Range>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff, Range>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::pw_multi_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::pw_multi_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff_list, Range> typed::pw_multi_aff, Range>::pw_multi_aff_list() const { auto res = isl::pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, Range>(res); } template template typed::multi_pw_aff, pair> typed::pw_multi_aff, Range>::range_product(const typed::multi_pw_aff, Arg2> &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_pw_aff, pair>(res); } template template typed::multi_union_pw_aff, pair> typed::pw_multi_aff, Range>::range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_union_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff, Range>::range_product(const typed::pw_multi_aff, Arg2> &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, Range>::range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff, Range>::range_product(const typed::multi_aff, Arg2> &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, Range>::range_product(const typed::pw_aff, Anonymous> &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::scale(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::scale(mv); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::scale(const typed::val &v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::scale(long v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::scale_down(const typed::multi_val &mv) const { auto res = isl::pw_multi_aff::scale_down(mv); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::scale_down(const typed::val &v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::scale_down(long v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::pw_multi_aff, Range>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_union_pw_aff, Range>(res); } template template typed::pw_multi_aff, Arg1> typed::pw_multi_aff, Range>::set_range_tuple(const typed::id &id) const { auto res = isl::pw_multi_aff::set_range_tuple(id); return typed::pw_multi_aff, Arg1>(res); } template template typed::pw_multi_aff, Arg1> typed::pw_multi_aff, Range>::set_range_tuple(const std::string &id) const { auto res = isl::pw_multi_aff::set_range_tuple(id); return typed::pw_multi_aff, Arg1>(res); } template typed::space, Range> typed::pw_multi_aff, Range>::space() const { auto res = isl::pw_multi_aff::space(); return typed::space, Range>(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::sub(const typed::multi_pw_aff, Range> &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::pw_multi_aff, Range>::sub(const typed::multi_union_pw_aff, Range> &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::sub(const typed::pw_multi_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::sub(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::sub(const typed::multi_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::sub(const typed::pw_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::subtract_domain(const typed::set> &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::subtract_domain(const typed::space> &space) const { auto res = isl::pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::subtract_domain(const typed::basic_set> &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::subtract_domain(const typed::point> &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::to_multi_pw_aff() const { auto res = isl::pw_multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::to_union_pw_multi_aff() const { auto res = isl::pw_multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range>(res); } template typed::multi_pw_aff, Range> typed::pw_multi_aff, Range>::union_add(const typed::multi_pw_aff, Range> &mpa2) const { auto res = isl::pw_multi_aff::union_add(mpa2); return typed::multi_pw_aff, Range>(res); } template typed::multi_union_pw_aff, Range> typed::pw_multi_aff, Range>::union_add(const typed::multi_union_pw_aff, Range> &mupa2) const { auto res = isl::pw_multi_aff::union_add(mupa2); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::union_add(const typed::pw_multi_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::pw_multi_aff, Range>::union_add(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::union_add(const typed::multi_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, Range>::union_add(const typed::pw_aff, Range> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff>::pw_multi_aff(const typed::multi_aff> &ma) : isl::pw_multi_aff(ma) { } template typed::pw_multi_aff>::pw_multi_aff(const typed::pw_aff> &pa) : isl::pw_multi_aff(pa) { } template typed::pw_multi_aff>::pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff(ctx, str) { } template typed::multi_pw_aff> typed::pw_multi_aff>::add(const typed::multi_pw_aff> &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::pw_multi_aff>::add(const typed::multi_union_pw_aff> &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::add(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::add(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::add(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::add(const typed::multi_aff> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::add(const typed::pw_aff> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::add_constant(const typed::multi_val> &mv) const { auto res = isl::pw_multi_aff::add_constant(mv); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::add_constant(const typed::val> &v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::add_constant(long v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff typed::pw_multi_aff>::apply(const typed::union_pw_multi_aff, Arg3> &upma2) const { auto res = isl::pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::map> typed::pw_multi_aff>::as_map() const { auto res = isl::pw_multi_aff::as_map(); return typed::map>(res); } template typed::multi_aff> typed::pw_multi_aff>::as_multi_aff() const { auto res = isl::pw_multi_aff::as_multi_aff(); return typed::multi_aff>(res); } template typed::multi_union_pw_aff> typed::pw_multi_aff>::as_multi_union_pw_aff() const { auto res = isl::pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::as_pw_multi_aff() const { auto res = isl::pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::union_map> typed::pw_multi_aff>::as_union_map() const { auto res = isl::pw_multi_aff::as_union_map(); return typed::union_map>(res); } template typed::pw_aff typed::pw_multi_aff>::at(int pos) const { auto res = isl::pw_multi_aff::at(pos); return typed::pw_aff(res); } template typed::set typed::pw_multi_aff>::bind(const typed::multi_id> &tuple) const { auto res = isl::pw_multi_aff::bind(tuple); return typed::set(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::bind_domain(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind_domain(tuple); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::coalesce() const { auto res = isl::pw_multi_aff::coalesce(); return typed::pw_multi_aff>(res); } template typed::set typed::pw_multi_aff>::domain() const { auto res = isl::pw_multi_aff::domain(); return typed::set(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::drop_unused_params() const { auto res = isl::pw_multi_aff::drop_unused_params(); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::extract_pw_multi_aff(const typed::space> &space) const { auto res = isl::pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::gist(const typed::set &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::gist(const typed::union_set &context) const { auto res = isl::pw_multi_aff::gist(context); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::gist(const typed::basic_set &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::gist(const typed::point &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::gist_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::gist_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::gist_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::identity() const { auto res = isl::pw_multi_aff::identity(); return typed::multi_pw_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::intersect_domain(const typed::set &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::intersect_domain(const typed::space &space) const { auto res = isl::pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::intersect_domain(const typed::union_set &uset) const { auto res = isl::pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::intersect_domain(const typed::basic_set &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::intersect_domain(const typed::point &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::intersect_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::intersect_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff>(res); } template typed::pw_aff_list typed::pw_multi_aff>::list() const { auto res = isl::pw_multi_aff::list(); return typed::pw_aff_list(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::max(const typed::multi_pw_aff> &multi2) const { auto res = isl::pw_multi_aff::max(multi2); return typed::multi_pw_aff>(res); } template typed::multi_val> typed::pw_multi_aff>::max_multi_val() const { auto res = isl::pw_multi_aff::max_multi_val(); return typed::multi_val>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::min(const typed::multi_pw_aff> &multi2) const { auto res = isl::pw_multi_aff::min(multi2); return typed::multi_pw_aff>(res); } template typed::multi_val> typed::pw_multi_aff>::min_multi_val() const { auto res = isl::pw_multi_aff::min_multi_val(); return typed::multi_val>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::neg() const { auto res = isl::pw_multi_aff::neg(); return typed::multi_pw_aff>(res); } template template typed::multi_pw_aff, pair, Arg3>> typed::pw_multi_aff>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::product(multi2); return typed::multi_pw_aff, pair, Arg3>>(res); } template template typed::pw_multi_aff, pair, Arg3>> typed::pw_multi_aff>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, pair, Arg3>>(res); } template template typed::pw_multi_aff, pair, Arg3>> typed::pw_multi_aff>::product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, pair, Arg3>>(res); } template template typed::pw_multi_aff, pair, Anonymous>> typed::pw_multi_aff>::product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, pair, Anonymous>>(res); } template template typed::multi_pw_aff> typed::pw_multi_aff>::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::pullback(const typed::multi_pw_aff &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff>::pullback(const typed::multi_aff &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::pullback(const typed::multi_aff &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff>::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::pullback(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::pw_multi_aff>::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff_list> typed::pw_multi_aff>::pw_multi_aff_list() const { auto res = isl::pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list>(res); } template typed::pw_multi_aff typed::pw_multi_aff>::range_factor_domain() const { auto res = isl::pw_multi_aff::range_factor_domain(); return typed::pw_multi_aff(res); } template typed::pw_multi_aff typed::pw_multi_aff>::range_factor_range() const { auto res = isl::pw_multi_aff::range_factor_range(); return typed::pw_multi_aff(res); } template template typed::multi_pw_aff, Arg3>> typed::pw_multi_aff>::range_product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_pw_aff, Arg3>>(res); } template template typed::multi_union_pw_aff, Arg3>> typed::pw_multi_aff>::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_union_pw_aff, Arg3>>(res); } template template typed::pw_multi_aff, Arg3>> typed::pw_multi_aff>::range_product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, Arg3>>(res); } template template typed::union_pw_multi_aff, Arg3>> typed::pw_multi_aff>::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, Arg3>>(res); } template template typed::pw_multi_aff, Arg3>> typed::pw_multi_aff>::range_product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, Arg3>>(res); } template typed::pw_multi_aff, Anonymous>> typed::pw_multi_aff>::range_product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, Anonymous>>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::scale(const typed::multi_val> &mv) const { auto res = isl::pw_multi_aff::scale(mv); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::scale(const typed::val> &v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::scale(long v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::scale_down(const typed::multi_val> &mv) const { auto res = isl::pw_multi_aff::scale_down(mv); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::scale_down(const typed::val> &v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::scale_down(long v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::set_at(int pos, const typed::pw_aff &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::pw_multi_aff>::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_union_pw_aff>(res); } template typed::space> typed::pw_multi_aff>::space() const { auto res = isl::pw_multi_aff::space(); return typed::space>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::sub(const typed::multi_pw_aff> &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::pw_multi_aff>::sub(const typed::multi_union_pw_aff> &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::sub(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::sub(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::sub(const typed::multi_aff> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::sub(const typed::pw_aff> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::subtract_domain(const typed::set &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::subtract_domain(const typed::space &space) const { auto res = isl::pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::subtract_domain(const typed::union_set &uset) const { auto res = isl::pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::subtract_domain(const typed::basic_set &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::subtract_domain(const typed::point &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::to_multi_pw_aff() const { auto res = isl::pw_multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::to_union_pw_multi_aff() const { auto res = isl::pw_multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff>(res); } template typed::multi_pw_aff> typed::pw_multi_aff>::union_add(const typed::multi_pw_aff> &mpa2) const { auto res = isl::pw_multi_aff::union_add(mpa2); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::pw_multi_aff>::union_add(const typed::multi_union_pw_aff> &mupa2) const { auto res = isl::pw_multi_aff::union_add(mupa2); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::union_add(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff>::union_add(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::union_add(const typed::multi_aff> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff>::union_add(const typed::pw_aff> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff, pair>::pw_multi_aff(const typed::multi_aff, pair> &ma) : isl::pw_multi_aff(ma) { } template typed::pw_multi_aff, pair>::pw_multi_aff(const typed::pw_aff, pair> &pa) : isl::pw_multi_aff(pa) { } template typed::pw_multi_aff, pair>::pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff(ctx, str) { } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::add(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::pw_multi_aff, pair>::add(const typed::multi_union_pw_aff, pair> &multi2) const { auto res = isl::pw_multi_aff::add(multi2); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::add(const typed::pw_multi_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::add(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::add(const typed::multi_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::add(const typed::pw_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::add_constant(const typed::multi_val> &mv) const { auto res = isl::pw_multi_aff::add_constant(mv); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::add_constant(const typed::val> &v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::add_constant(long v) const { auto res = isl::pw_multi_aff::add_constant(v); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, Arg2> typed::pw_multi_aff, pair>::apply(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template typed::map, pair> typed::pw_multi_aff, pair>::as_map() const { auto res = isl::pw_multi_aff::as_map(); return typed::map, pair>(res); } template typed::multi_aff, pair> typed::pw_multi_aff, pair>::as_multi_aff() const { auto res = isl::pw_multi_aff::as_multi_aff(); return typed::multi_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::pw_multi_aff, pair>::as_multi_union_pw_aff() const { auto res = isl::pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::as_pw_multi_aff() const { auto res = isl::pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_map, pair> typed::pw_multi_aff, pair>::as_union_map() const { auto res = isl::pw_multi_aff::as_union_map(); return typed::union_map, pair>(res); } template typed::pw_aff, Anonymous> typed::pw_multi_aff, pair>::at(int pos) const { auto res = isl::pw_multi_aff::at(pos); return typed::pw_aff, Anonymous>(res); } template typed::set> typed::pw_multi_aff, pair>::bind(const typed::multi_id> &tuple) const { auto res = isl::pw_multi_aff::bind(tuple); return typed::set>(res); } template typed::pw_multi_aff> typed::pw_multi_aff, pair>::bind_domain(const typed::multi_id> &tuple) const { auto res = isl::pw_multi_aff::bind_domain(tuple); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff, pair>::bind_domain_wrapped_domain(const typed::multi_id &tuple) const { auto res = isl::pw_multi_aff::bind_domain_wrapped_domain(tuple); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::coalesce() const { auto res = isl::pw_multi_aff::coalesce(); return typed::pw_multi_aff, pair>(res); } template typed::set> typed::pw_multi_aff, pair>::domain() const { auto res = isl::pw_multi_aff::domain(); return typed::set>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::domain_reverse() const { auto res = isl::pw_multi_aff::domain_reverse(); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::drop_unused_params() const { auto res = isl::pw_multi_aff::drop_unused_params(); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::extract_pw_multi_aff(const typed::space, pair> &space) const { auto res = isl::pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist(const typed::set> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist(const typed::union_set> &context) const { auto res = isl::pw_multi_aff::gist(context); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist(const typed::basic_set> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist(const typed::point> &set) const { auto res = isl::pw_multi_aff::gist(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::gist_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::gist_params(set); return typed::pw_multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::identity() const { auto res = isl::pw_multi_aff::identity(); return typed::multi_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_domain(const typed::set> &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_domain(const typed::basic_set> &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_domain(const typed::point> &set) const { auto res = isl::pw_multi_aff::intersect_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_params(const typed::set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::intersect_params(const typed::point<> &set) const { auto res = isl::pw_multi_aff::intersect_params(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_aff_list, Anonymous> typed::pw_multi_aff, pair>::list() const { auto res = isl::pw_multi_aff::list(); return typed::pw_aff_list, Anonymous>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::max(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::pw_multi_aff::max(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_val> typed::pw_multi_aff, pair>::max_multi_val() const { auto res = isl::pw_multi_aff::max_multi_val(); return typed::multi_val>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::min(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::pw_multi_aff::min(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_val> typed::pw_multi_aff, pair>::min_multi_val() const { auto res = isl::pw_multi_aff::min_multi_val(); return typed::multi_val>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::neg() const { auto res = isl::pw_multi_aff::neg(); return typed::multi_pw_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2); return typed::pw_multi_aff, pair>(res); } template template typed::multi_pw_aff, Domain2>, pair, Arg2>> typed::pw_multi_aff, pair>::product(const typed::multi_pw_aff &multi2) const { auto res = isl::pw_multi_aff::product(multi2); return typed::multi_pw_aff, Domain2>, pair, Arg2>>(res); } template template typed::pw_multi_aff, Domain2>, pair, Arg2>> typed::pw_multi_aff, pair>::product(const typed::pw_multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, Domain2>, pair, Arg2>>(res); } template template typed::pw_multi_aff, Domain2>, pair, Arg2>> typed::pw_multi_aff, pair>::product(const typed::multi_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, Domain2>, pair, Arg2>>(res); } template template typed::pw_multi_aff, Domain2>, pair, Anonymous>> typed::pw_multi_aff, pair>::product(const typed::pw_aff &pma2) const { auto res = isl::pw_multi_aff::product(pma2); return typed::pw_multi_aff, Domain2>, pair, Anonymous>>(res); } template template typed::multi_pw_aff> typed::pw_multi_aff, pair>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::pw_multi_aff, pair>::pullback(const typed::multi_pw_aff> &mpa2) const { auto res = isl::pw_multi_aff::pullback(mpa2); return typed::multi_pw_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff, pair>::pullback(const typed::multi_aff> &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff, pair>::pullback(const typed::multi_aff> &ma) const { auto res = isl::pw_multi_aff::pullback(ma); return typed::pw_multi_aff>(res); } template template typed::pw_multi_aff> typed::pw_multi_aff, pair>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template typed::pw_multi_aff> typed::pw_multi_aff, pair>::pullback(const typed::pw_multi_aff> &pma2) const { auto res = isl::pw_multi_aff::pullback(pma2); return typed::pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::pw_multi_aff, pair>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::pw_multi_aff, pair>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff_list, pair> typed::pw_multi_aff, pair>::pw_multi_aff_list() const { auto res = isl::pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, pair>(res); } template typed::pw_multi_aff, Range> typed::pw_multi_aff, pair>::range_factor_domain() const { auto res = isl::pw_multi_aff::range_factor_domain(); return typed::pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range2> typed::pw_multi_aff, pair>::range_factor_range() const { auto res = isl::pw_multi_aff::range_factor_range(); return typed::pw_multi_aff, Range2>(res); } template template typed::multi_pw_aff, pair, Arg2>> typed::pw_multi_aff, pair>::range_product(const typed::multi_pw_aff, Arg2> &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_pw_aff, pair, Arg2>>(res); } template template typed::multi_union_pw_aff, pair, Arg2>> typed::pw_multi_aff, pair>::range_product(const typed::multi_union_pw_aff, Arg2> &multi2) const { auto res = isl::pw_multi_aff::range_product(multi2); return typed::multi_union_pw_aff, pair, Arg2>>(res); } template template typed::pw_multi_aff, pair, Arg2>> typed::pw_multi_aff, pair>::range_product(const typed::pw_multi_aff, Arg2> &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, pair, Arg2>>(res); } template template typed::union_pw_multi_aff, pair, Arg2>> typed::pw_multi_aff, pair>::range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair, Arg2>>(res); } template template typed::pw_multi_aff, pair, Arg2>> typed::pw_multi_aff, pair>::range_product(const typed::multi_aff, Arg2> &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, pair, Arg2>>(res); } template typed::pw_multi_aff, pair, Anonymous>> typed::pw_multi_aff, pair>::range_product(const typed::pw_aff, Anonymous> &pma2) const { auto res = isl::pw_multi_aff::range_product(pma2); return typed::pw_multi_aff, pair, Anonymous>>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::scale(const typed::multi_val> &mv) const { auto res = isl::pw_multi_aff::scale(mv); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::scale(const typed::val> &v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::scale(long v) const { auto res = isl::pw_multi_aff::scale(v); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::scale_down(const typed::multi_val> &mv) const { auto res = isl::pw_multi_aff::scale_down(mv); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::scale_down(const typed::val> &v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::scale_down(long v) const { auto res = isl::pw_multi_aff::scale_down(v); return typed::pw_multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::set_at(int pos, const typed::pw_aff, Anonymous> &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::pw_multi_aff, pair>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::pw_multi_aff::set_at(pos, el); return typed::multi_union_pw_aff, pair>(res); } template typed::space, pair> typed::pw_multi_aff, pair>::space() const { auto res = isl::pw_multi_aff::space(); return typed::space, pair>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::sub(const typed::multi_pw_aff, pair> &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::pw_multi_aff, pair>::sub(const typed::multi_union_pw_aff, pair> &multi2) const { auto res = isl::pw_multi_aff::sub(multi2); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::sub(const typed::pw_multi_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::sub(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::sub(const typed::multi_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::sub(const typed::pw_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::sub(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::subtract_domain(const typed::set> &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::subtract_domain(const typed::space> &space) const { auto res = isl::pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::subtract_domain(const typed::basic_set> &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::subtract_domain(const typed::point> &set) const { auto res = isl::pw_multi_aff::subtract_domain(set); return typed::pw_multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::to_multi_pw_aff() const { auto res = isl::pw_multi_aff::to_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::to_union_pw_multi_aff() const { auto res = isl::pw_multi_aff::to_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::pw_multi_aff, pair>::union_add(const typed::multi_pw_aff, pair> &mpa2) const { auto res = isl::pw_multi_aff::union_add(mpa2); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::pw_multi_aff, pair>::union_add(const typed::multi_union_pw_aff, pair> &mupa2) const { auto res = isl::pw_multi_aff::union_add(mupa2); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::union_add(const typed::pw_multi_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::pw_multi_aff, pair>::union_add(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::union_add(const typed::multi_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::pw_multi_aff, pair>::union_add(const typed::pw_aff, pair> &pma2) const { auto res = isl::pw_multi_aff::union_add(pma2); return typed::pw_multi_aff, pair>(res); } template typed::pw_multi_aff_list::pw_multi_aff_list(const isl::ctx &ctx, int n) : isl::pw_multi_aff_list(ctx, n) { } template typed::pw_multi_aff_list::pw_multi_aff_list(const typed::pw_multi_aff &el) : isl::pw_multi_aff_list(el) { } template typed::pw_multi_aff_list::pw_multi_aff_list(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff_list(ctx, str) { } template typed::pw_multi_aff_list typed::pw_multi_aff_list::add(const typed::pw_multi_aff &el) const { auto res = isl::pw_multi_aff_list::add(el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::add(const typed::multi_aff &el) const { auto res = isl::pw_multi_aff_list::add(el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::add(const typed::pw_aff &el) const { auto res = isl::pw_multi_aff_list::add(el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff typed::pw_multi_aff_list::at(int index) const { auto res = isl::pw_multi_aff_list::at(index); return typed::pw_multi_aff(res); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::pw_multi_aff_list::drop(first, n); return typed::pw_multi_aff_list(res); } template void typed::pw_multi_aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::pw_multi_aff arg0) { return fn(typed::pw_multi_aff(arg0)); }; return isl::pw_multi_aff_list::foreach(lambda_fn); } template void typed::pw_multi_aff_list::foreach_scc(const std::function, typed::pw_multi_aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::pw_multi_aff arg0, isl::pw_multi_aff arg1) { return follows(typed::pw_multi_aff(arg0), typed::pw_multi_aff(arg1)); }; auto lambda_fn = [&] (isl::pw_multi_aff_list arg0) { return fn(typed::pw_multi_aff_list(arg0)); }; return isl::pw_multi_aff_list::foreach_scc(lambda_follows, lambda_fn); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::set_at(int index, const typed::pw_multi_aff &el) const { auto res = isl::pw_multi_aff_list::set_at(index, el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff_list::pw_multi_aff_list(const isl::ctx &ctx, int n) : isl::pw_multi_aff_list(ctx, n) { } template typed::pw_multi_aff_list::pw_multi_aff_list(const typed::pw_multi_aff &el) : isl::pw_multi_aff_list(el) { } template typed::pw_multi_aff_list::pw_multi_aff_list(const isl::ctx &ctx, const std::string &str) : isl::pw_multi_aff_list(ctx, str) { } template typed::pw_multi_aff_list typed::pw_multi_aff_list::add(const typed::pw_multi_aff &el) const { auto res = isl::pw_multi_aff_list::add(el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::add(const typed::multi_aff &el) const { auto res = isl::pw_multi_aff_list::add(el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::add(const typed::pw_aff &el) const { auto res = isl::pw_multi_aff_list::add(el); return typed::pw_multi_aff_list(res); } template typed::pw_multi_aff typed::pw_multi_aff_list::at(int index) const { auto res = isl::pw_multi_aff_list::at(index); return typed::pw_multi_aff(res); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::pw_multi_aff_list::drop(first, n); return typed::pw_multi_aff_list(res); } template void typed::pw_multi_aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::pw_multi_aff arg0) { return fn(typed::pw_multi_aff(arg0)); }; return isl::pw_multi_aff_list::foreach(lambda_fn); } template void typed::pw_multi_aff_list::foreach_scc(const std::function, typed::pw_multi_aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::pw_multi_aff arg0, isl::pw_multi_aff arg1) { return follows(typed::pw_multi_aff(arg0), typed::pw_multi_aff(arg1)); }; auto lambda_fn = [&] (isl::pw_multi_aff_list arg0) { return fn(typed::pw_multi_aff_list(arg0)); }; return isl::pw_multi_aff_list::foreach_scc(lambda_follows, lambda_fn); } template typed::pw_multi_aff_list typed::pw_multi_aff_list::set_at(int index, const typed::pw_multi_aff &el) const { auto res = isl::pw_multi_aff_list::set_at(index, el); return typed::pw_multi_aff_list(res); } typed::set<>::set(const typed::basic_set<> &bset) : isl::set(bset) { } typed::set<>::set(const typed::point<> &pnt) : isl::set(pnt) { } typed::set<>::set(const isl::ctx &ctx, const std::string &str) : isl::set(ctx, str) { } typed::set<> typed::set<>::coalesce() const { auto res = isl::set::coalesce(); return typed::set<>(res); } typed::set<> typed::set<>::detect_equalities() const { auto res = isl::set::detect_equalities(); return typed::set<>(res); } typed::set<> typed::set<>::drop_unused_params() const { auto res = isl::set::drop_unused_params(); return typed::set<>(res); } bool typed::set<>::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set<>(arg0)); }; return isl::set::every_set(lambda_test); } typed::set<> typed::set<>::extract_set(const typed::space<> &space) const { auto res = isl::set::extract_set(space); return typed::set<>(res); } void typed::set<>::foreach_basic_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set<>(arg0)); }; return isl::set::foreach_basic_set(lambda_fn); } void typed::set<>::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point<>(arg0)); }; return isl::set::foreach_point(lambda_fn); } void typed::set<>::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set<>(arg0)); }; return isl::set::foreach_set(lambda_fn); } typed::set<> typed::set<>::gist(const typed::set<> &context) const { auto res = isl::set::gist(context); return typed::set<>(res); } typed::union_set<> typed::set<>::gist(const typed::union_set<> &context) const { auto res = isl::set::gist(context); return typed::union_set<>(res); } typed::set<> typed::set<>::gist(const typed::basic_set<> &context) const { auto res = isl::set::gist(context); return typed::set<>(res); } typed::set<> typed::set<>::gist(const typed::point<> &context) const { auto res = isl::set::gist(context); return typed::set<>(res); } typed::pw_aff typed::set<>::indicator_function() const { auto res = isl::set::indicator_function(); return typed::pw_aff(res); } typed::set<> typed::set<>::intersect(const typed::set<> &set2) const { auto res = isl::set::intersect(set2); return typed::set<>(res); } typed::union_set<> typed::set<>::intersect(const typed::union_set<> &uset2) const { auto res = isl::set::intersect(uset2); return typed::union_set<>(res); } typed::set<> typed::set<>::intersect(const typed::basic_set<> &set2) const { auto res = isl::set::intersect(set2); return typed::set<>(res); } typed::set<> typed::set<>::intersect(const typed::point<> &set2) const { auto res = isl::set::intersect(set2); return typed::set<>(res); } typed::pw_aff typed::set<>::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } typed::pw_aff typed::set<>::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } typed::set<> typed::set<>::project_out_all_params() const { auto res = isl::set::project_out_all_params(); return typed::set<>(res); } typed::set<> typed::set<>::project_out_param(const typed::id &id) const { auto res = isl::set::project_out_param(id); return typed::set<>(res); } typed::set<> typed::set<>::project_out_param(const std::string &id) const { auto res = isl::set::project_out_param(id); return typed::set<>(res); } typed::set<> typed::set<>::project_out_param(const typed::id_list &list) const { auto res = isl::set::project_out_param(list); return typed::set<>(res); } typed::pw_aff typed::set<>::pw_aff_on_domain(const typed::val &v) const { auto res = isl::set::pw_aff_on_domain(v); return typed::pw_aff(res); } typed::pw_aff typed::set<>::pw_aff_on_domain(long v) const { auto res = isl::set::pw_aff_on_domain(v); return typed::pw_aff(res); } template typed::pw_multi_aff typed::set<>::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::set::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff(res); } typed::set_list<> typed::set<>::set_list() const { auto res = isl::set::set_list(); return typed::set_list<>(res); } typed::space<> typed::set<>::space() const { auto res = isl::set::space(); return typed::space<>(res); } typed::set<> typed::set<>::subtract(const typed::set<> &set2) const { auto res = isl::set::subtract(set2); return typed::set<>(res); } typed::union_set<> typed::set<>::subtract(const typed::union_set<> &uset2) const { auto res = isl::set::subtract(uset2); return typed::union_set<>(res); } typed::set<> typed::set<>::subtract(const typed::basic_set<> &set2) const { auto res = isl::set::subtract(set2); return typed::set<>(res); } typed::set<> typed::set<>::subtract(const typed::point<> &set2) const { auto res = isl::set::subtract(set2); return typed::set<>(res); } typed::union_set<> typed::set<>::to_union_set() const { auto res = isl::set::to_union_set(); return typed::union_set<>(res); } template typed::set typed::set<>::unbind_params(const typed::multi_id &tuple) const { auto res = isl::set::unbind_params(tuple); return typed::set(res); } typed::set<> typed::set<>::unite(const typed::set<> &set2) const { auto res = isl::set::unite(set2); return typed::set<>(res); } typed::union_set<> typed::set<>::unite(const typed::union_set<> &uset2) const { auto res = isl::set::unite(uset2); return typed::union_set<>(res); } typed::set<> typed::set<>::unite(const typed::basic_set<> &set2) const { auto res = isl::set::unite(set2); return typed::set<>(res); } typed::set<> typed::set<>::unite(const typed::point<> &set2) const { auto res = isl::set::unite(set2); return typed::set<>(res); } typed::set<> typed::set<>::universe(const typed::space<> &space) { auto res = isl::set::universe(space); return typed::set<>(res); } template typed::set::set(const typed::basic_set &bset) : isl::set(bset) { } template typed::set::set(const typed::point &pnt) : isl::set(pnt) { } template typed::set::set(const isl::ctx &ctx, const std::string &str) : isl::set(ctx, str) { } template template typed::set typed::set::apply(const typed::map &map) const { auto res = isl::set::apply(map); return typed::set(res); } template template typed::union_set typed::set::apply(const typed::union_map &umap) const { auto res = isl::set::apply(umap); return typed::union_set(res); } template template typed::set typed::set::apply(const typed::basic_map &map) const { auto res = isl::set::apply(map); return typed::set(res); } template typed::pw_multi_aff typed::set::as_pw_multi_aff() const { auto res = isl::set::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::set::as_set() const { auto res = isl::set::as_set(); return typed::set(res); } template typed::set<> typed::set::bind(const typed::multi_id &tuple) const { auto res = isl::set::bind(tuple); return typed::set<>(res); } template typed::set typed::set::coalesce() const { auto res = isl::set::coalesce(); return typed::set(res); } template typed::set typed::set::detect_equalities() const { auto res = isl::set::detect_equalities(); return typed::set(res); } template typed::set typed::set::drop_unused_params() const { auto res = isl::set::drop_unused_params(); return typed::set(res); } template bool typed::set::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set(arg0)); }; return isl::set::every_set(lambda_test); } template typed::set typed::set::extract_set(const typed::space &space) const { auto res = isl::set::extract_set(space); return typed::set(res); } template void typed::set::foreach_basic_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set(arg0)); }; return isl::set::foreach_basic_set(lambda_fn); } template void typed::set::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point(arg0)); }; return isl::set::foreach_point(lambda_fn); } template void typed::set::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set(arg0)); }; return isl::set::foreach_set(lambda_fn); } template typed::set typed::set::gist(const typed::set &context) const { auto res = isl::set::gist(context); return typed::set(res); } template typed::union_set typed::set::gist(const typed::union_set &context) const { auto res = isl::set::gist(context); return typed::union_set(res); } template typed::set typed::set::gist(const typed::basic_set &context) const { auto res = isl::set::gist(context); return typed::set(res); } template typed::set typed::set::gist(const typed::point &context) const { auto res = isl::set::gist(context); return typed::set(res); } template typed::set typed::set::gist_params(const typed::set<> &context) const { auto res = isl::set::gist_params(context); return typed::set(res); } template typed::set typed::set::gist_params(const typed::basic_set<> &context) const { auto res = isl::set::gist_params(context); return typed::set(res); } template typed::set typed::set::gist_params(const typed::point<> &context) const { auto res = isl::set::gist_params(context); return typed::set(res); } template typed::map typed::set::identity() const { auto res = isl::set::identity(); return typed::map(res); } template typed::pw_aff typed::set::indicator_function() const { auto res = isl::set::indicator_function(); return typed::pw_aff(res); } template template typed::map typed::set::insert_domain(const typed::space &domain) const { auto res = isl::set::insert_domain(domain); return typed::map(res); } template typed::set typed::set::intersect(const typed::set &set2) const { auto res = isl::set::intersect(set2); return typed::set(res); } template typed::union_set typed::set::intersect(const typed::union_set &uset2) const { auto res = isl::set::intersect(uset2); return typed::union_set(res); } template typed::set typed::set::intersect(const typed::basic_set &set2) const { auto res = isl::set::intersect(set2); return typed::set(res); } template typed::set typed::set::intersect(const typed::point &set2) const { auto res = isl::set::intersect(set2); return typed::set(res); } template typed::set typed::set::intersect_params(const typed::set<> ¶ms) const { auto res = isl::set::intersect_params(params); return typed::set(res); } template typed::set typed::set::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::set::intersect_params(params); return typed::set(res); } template typed::set typed::set::intersect_params(const typed::point<> ¶ms) const { auto res = isl::set::intersect_params(params); return typed::set(res); } template typed::fixed_box typed::set::lattice_tile() const { auto res = isl::set::lattice_tile(); return typed::fixed_box(res); } template typed::set typed::set::lexmax() const { auto res = isl::set::lexmax(); return typed::set(res); } template typed::pw_multi_aff typed::set::lexmax_pw_multi_aff() const { auto res = isl::set::lexmax_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::set::lexmin() const { auto res = isl::set::lexmin(); return typed::set(res); } template typed::pw_multi_aff typed::set::lexmin_pw_multi_aff() const { auto res = isl::set::lexmin_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::set typed::set::lower_bound(const typed::multi_pw_aff &lower) const { auto res = isl::set::lower_bound(lower); return typed::set(res); } template typed::set typed::set::lower_bound(const typed::multi_val &lower) const { auto res = isl::set::lower_bound(lower); return typed::set(res); } template typed::multi_pw_aff typed::set::max_multi_pw_aff() const { auto res = isl::set::max_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_pw_aff typed::set::min_multi_pw_aff() const { auto res = isl::set::min_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::pw_aff typed::set::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } template typed::pw_aff typed::set::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::set::param_pw_aff_on_domain(id); return typed::pw_aff(res); } template typed::set<> typed::set::params() const { auto res = isl::set::params(); return typed::set<>(res); } template typed::multi_val typed::set::plain_multi_val_if_fixed() const { auto res = isl::set::plain_multi_val_if_fixed(); return typed::multi_val(res); } template template typed::set typed::set::preimage(const typed::multi_aff &ma) const { auto res = isl::set::preimage(ma); return typed::set(res); } template template typed::set typed::set::preimage(const typed::multi_pw_aff &mpa) const { auto res = isl::set::preimage(mpa); return typed::set(res); } template template typed::set typed::set::preimage(const typed::pw_multi_aff &pma) const { auto res = isl::set::preimage(pma); return typed::set(res); } template template typed::union_set typed::set::preimage(const typed::union_pw_multi_aff &upma) const { auto res = isl::set::preimage(upma); return typed::union_set(res); } template template typed::set> typed::set::product(const typed::set &set2) const { auto res = isl::set::product(set2); return typed::set>(res); } template template typed::set> typed::set::product(const typed::basic_set &set2) const { auto res = isl::set::product(set2); return typed::set>(res); } template template typed::set> typed::set::product(const typed::point &set2) const { auto res = isl::set::product(set2); return typed::set>(res); } template typed::set typed::set::project_out_all_params() const { auto res = isl::set::project_out_all_params(); return typed::set(res); } template typed::set typed::set::project_out_param(const typed::id &id) const { auto res = isl::set::project_out_param(id); return typed::set(res); } template typed::set typed::set::project_out_param(const std::string &id) const { auto res = isl::set::project_out_param(id); return typed::set(res); } template typed::set typed::set::project_out_param(const typed::id_list &list) const { auto res = isl::set::project_out_param(list); return typed::set(res); } template typed::pw_aff typed::set::pw_aff_on_domain(const typed::val &v) const { auto res = isl::set::pw_aff_on_domain(v); return typed::pw_aff(res); } template typed::pw_aff typed::set::pw_aff_on_domain(long v) const { auto res = isl::set::pw_aff_on_domain(v); return typed::pw_aff(res); } template template typed::pw_multi_aff typed::set::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::set::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff(res); } template typed::set_list typed::set::set_list() const { auto res = isl::set::set_list(); return typed::set_list(res); } template typed::fixed_box typed::set::simple_fixed_box_hull() const { auto res = isl::set::simple_fixed_box_hull(); return typed::fixed_box(res); } template typed::space typed::set::space() const { auto res = isl::set::space(); return typed::space(res); } template typed::set typed::set::subtract(const typed::set &set2) const { auto res = isl::set::subtract(set2); return typed::set(res); } template typed::union_set typed::set::subtract(const typed::union_set &uset2) const { auto res = isl::set::subtract(uset2); return typed::union_set(res); } template typed::set typed::set::subtract(const typed::basic_set &set2) const { auto res = isl::set::subtract(set2); return typed::set(res); } template typed::set typed::set::subtract(const typed::point &set2) const { auto res = isl::set::subtract(set2); return typed::set(res); } template typed::union_set typed::set::to_union_set() const { auto res = isl::set::to_union_set(); return typed::union_set(res); } template typed::map typed::set::translation() const { auto res = isl::set::translation(); return typed::map(res); } template template typed::map typed::set::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::set::unbind_params_insert_domain(domain); return typed::map(res); } template typed::set typed::set::unite(const typed::set &set2) const { auto res = isl::set::unite(set2); return typed::set(res); } template typed::union_set typed::set::unite(const typed::union_set &uset2) const { auto res = isl::set::unite(uset2); return typed::union_set(res); } template typed::set typed::set::unite(const typed::basic_set &set2) const { auto res = isl::set::unite(set2); return typed::set(res); } template typed::set typed::set::unite(const typed::point &set2) const { auto res = isl::set::unite(set2); return typed::set(res); } template typed::set typed::set::universe(const typed::space &space) { auto res = isl::set::universe(space); return typed::set(res); } template typed::set typed::set::upper_bound(const typed::multi_pw_aff &upper) const { auto res = isl::set::upper_bound(upper); return typed::set(res); } template typed::set typed::set::upper_bound(const typed::multi_val &upper) const { auto res = isl::set::upper_bound(upper); return typed::set(res); } template typed::set>::set(const typed::basic_set> &bset) : isl::set(bset) { } template typed::set>::set(const typed::point> &pnt) : isl::set(pnt) { } template typed::set>::set(const isl::ctx &ctx, const std::string &str) : isl::set(ctx, str) { } template template typed::set typed::set>::apply(const typed::map, Arg2> &map) const { auto res = isl::set::apply(map); return typed::set(res); } template template typed::union_set typed::set>::apply(const typed::union_map, Arg2> &umap) const { auto res = isl::set::apply(umap); return typed::union_set(res); } template template typed::set typed::set>::apply(const typed::basic_map, Arg2> &map) const { auto res = isl::set::apply(map); return typed::set(res); } template typed::pw_multi_aff> typed::set>::as_pw_multi_aff() const { auto res = isl::set::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::set>::as_set() const { auto res = isl::set::as_set(); return typed::set>(res); } template typed::set<> typed::set>::bind(const typed::multi_id> &tuple) const { auto res = isl::set::bind(tuple); return typed::set<>(res); } template typed::set> typed::set>::coalesce() const { auto res = isl::set::coalesce(); return typed::set>(res); } template typed::set> typed::set>::detect_equalities() const { auto res = isl::set::detect_equalities(); return typed::set>(res); } template typed::set> typed::set>::drop_unused_params() const { auto res = isl::set::drop_unused_params(); return typed::set>(res); } template bool typed::set>::every_set(const std::function>)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set>(arg0)); }; return isl::set::every_set(lambda_test); } template typed::set> typed::set>::extract_set(const typed::space> &space) const { auto res = isl::set::extract_set(space); return typed::set>(res); } template void typed::set>::foreach_basic_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::basic_set arg0) { return fn(typed::basic_set>(arg0)); }; return isl::set::foreach_basic_set(lambda_fn); } template void typed::set>::foreach_point(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point>(arg0)); }; return isl::set::foreach_point(lambda_fn); } template void typed::set>::foreach_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set>(arg0)); }; return isl::set::foreach_set(lambda_fn); } template typed::set> typed::set>::gist(const typed::set> &context) const { auto res = isl::set::gist(context); return typed::set>(res); } template typed::union_set> typed::set>::gist(const typed::union_set> &context) const { auto res = isl::set::gist(context); return typed::union_set>(res); } template typed::set> typed::set>::gist(const typed::basic_set> &context) const { auto res = isl::set::gist(context); return typed::set>(res); } template typed::set> typed::set>::gist(const typed::point> &context) const { auto res = isl::set::gist(context); return typed::set>(res); } template typed::set> typed::set>::gist_params(const typed::set<> &context) const { auto res = isl::set::gist_params(context); return typed::set>(res); } template typed::set> typed::set>::gist_params(const typed::basic_set<> &context) const { auto res = isl::set::gist_params(context); return typed::set>(res); } template typed::set> typed::set>::gist_params(const typed::point<> &context) const { auto res = isl::set::gist_params(context); return typed::set>(res); } template typed::map, pair> typed::set>::identity() const { auto res = isl::set::identity(); return typed::map, pair>(res); } template typed::pw_aff, Anonymous> typed::set>::indicator_function() const { auto res = isl::set::indicator_function(); return typed::pw_aff, Anonymous>(res); } template template typed::map> typed::set>::insert_domain(const typed::space &domain) const { auto res = isl::set::insert_domain(domain); return typed::map>(res); } template typed::set> typed::set>::intersect(const typed::set> &set2) const { auto res = isl::set::intersect(set2); return typed::set>(res); } template typed::union_set> typed::set>::intersect(const typed::union_set> &uset2) const { auto res = isl::set::intersect(uset2); return typed::union_set>(res); } template typed::set> typed::set>::intersect(const typed::basic_set> &set2) const { auto res = isl::set::intersect(set2); return typed::set>(res); } template typed::set> typed::set>::intersect(const typed::point> &set2) const { auto res = isl::set::intersect(set2); return typed::set>(res); } template typed::set> typed::set>::intersect_params(const typed::set<> ¶ms) const { auto res = isl::set::intersect_params(params); return typed::set>(res); } template typed::set> typed::set>::intersect_params(const typed::basic_set<> ¶ms) const { auto res = isl::set::intersect_params(params); return typed::set>(res); } template typed::set> typed::set>::intersect_params(const typed::point<> ¶ms) const { auto res = isl::set::intersect_params(params); return typed::set>(res); } template typed::fixed_box> typed::set>::lattice_tile() const { auto res = isl::set::lattice_tile(); return typed::fixed_box>(res); } template typed::set> typed::set>::lexmax() const { auto res = isl::set::lexmax(); return typed::set>(res); } template typed::pw_multi_aff> typed::set>::lexmax_pw_multi_aff() const { auto res = isl::set::lexmax_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::set>::lexmin() const { auto res = isl::set::lexmin(); return typed::set>(res); } template typed::pw_multi_aff> typed::set>::lexmin_pw_multi_aff() const { auto res = isl::set::lexmin_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::set> typed::set>::lower_bound(const typed::multi_pw_aff> &lower) const { auto res = isl::set::lower_bound(lower); return typed::set>(res); } template typed::set> typed::set>::lower_bound(const typed::multi_val> &lower) const { auto res = isl::set::lower_bound(lower); return typed::set>(res); } template typed::multi_pw_aff> typed::set>::max_multi_pw_aff() const { auto res = isl::set::max_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_pw_aff> typed::set>::min_multi_pw_aff() const { auto res = isl::set::min_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::pw_aff, Anonymous> typed::set>::param_pw_aff_on_domain(const typed::id &id) const { auto res = isl::set::param_pw_aff_on_domain(id); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::set>::param_pw_aff_on_domain(const std::string &id) const { auto res = isl::set::param_pw_aff_on_domain(id); return typed::pw_aff, Anonymous>(res); } template typed::set<> typed::set>::params() const { auto res = isl::set::params(); return typed::set<>(res); } template typed::multi_val> typed::set>::plain_multi_val_if_fixed() const { auto res = isl::set::plain_multi_val_if_fixed(); return typed::multi_val>(res); } template template typed::set typed::set>::preimage(const typed::multi_aff> &ma) const { auto res = isl::set::preimage(ma); return typed::set(res); } template template typed::set typed::set>::preimage(const typed::multi_pw_aff> &mpa) const { auto res = isl::set::preimage(mpa); return typed::set(res); } template template typed::set typed::set>::preimage(const typed::pw_multi_aff> &pma) const { auto res = isl::set::preimage(pma); return typed::set(res); } template template typed::union_set typed::set>::preimage(const typed::union_pw_multi_aff> &upma) const { auto res = isl::set::preimage(upma); return typed::union_set(res); } template template typed::set, Arg2>> typed::set>::product(const typed::set &set2) const { auto res = isl::set::product(set2); return typed::set, Arg2>>(res); } template template typed::set, Arg2>> typed::set>::product(const typed::basic_set &set2) const { auto res = isl::set::product(set2); return typed::set, Arg2>>(res); } template template typed::set, Arg2>> typed::set>::product(const typed::point &set2) const { auto res = isl::set::product(set2); return typed::set, Arg2>>(res); } template typed::set> typed::set>::project_out_all_params() const { auto res = isl::set::project_out_all_params(); return typed::set>(res); } template typed::set> typed::set>::project_out_param(const typed::id &id) const { auto res = isl::set::project_out_param(id); return typed::set>(res); } template typed::set> typed::set>::project_out_param(const std::string &id) const { auto res = isl::set::project_out_param(id); return typed::set>(res); } template typed::set> typed::set>::project_out_param(const typed::id_list &list) const { auto res = isl::set::project_out_param(list); return typed::set>(res); } template typed::pw_aff, Anonymous> typed::set>::pw_aff_on_domain(const typed::val &v) const { auto res = isl::set::pw_aff_on_domain(v); return typed::pw_aff, Anonymous>(res); } template typed::pw_aff, Anonymous> typed::set>::pw_aff_on_domain(long v) const { auto res = isl::set::pw_aff_on_domain(v); return typed::pw_aff, Anonymous>(res); } template template typed::pw_multi_aff, Arg2> typed::set>::pw_multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::set::pw_multi_aff_on_domain(mv); return typed::pw_multi_aff, Arg2>(res); } template typed::set_list> typed::set>::set_list() const { auto res = isl::set::set_list(); return typed::set_list>(res); } template typed::fixed_box> typed::set>::simple_fixed_box_hull() const { auto res = isl::set::simple_fixed_box_hull(); return typed::fixed_box>(res); } template typed::space> typed::set>::space() const { auto res = isl::set::space(); return typed::space>(res); } template typed::set> typed::set>::subtract(const typed::set> &set2) const { auto res = isl::set::subtract(set2); return typed::set>(res); } template typed::union_set> typed::set>::subtract(const typed::union_set> &uset2) const { auto res = isl::set::subtract(uset2); return typed::union_set>(res); } template typed::set> typed::set>::subtract(const typed::basic_set> &set2) const { auto res = isl::set::subtract(set2); return typed::set>(res); } template typed::set> typed::set>::subtract(const typed::point> &set2) const { auto res = isl::set::subtract(set2); return typed::set>(res); } template typed::union_set> typed::set>::to_union_set() const { auto res = isl::set::to_union_set(); return typed::union_set>(res); } template typed::map, pair> typed::set>::translation() const { auto res = isl::set::translation(); return typed::map, pair>(res); } template template typed::map> typed::set>::unbind_params_insert_domain(const typed::multi_id &domain) const { auto res = isl::set::unbind_params_insert_domain(domain); return typed::map>(res); } template typed::set> typed::set>::unite(const typed::set> &set2) const { auto res = isl::set::unite(set2); return typed::set>(res); } template typed::union_set> typed::set>::unite(const typed::union_set> &uset2) const { auto res = isl::set::unite(uset2); return typed::union_set>(res); } template typed::set> typed::set>::unite(const typed::basic_set> &set2) const { auto res = isl::set::unite(set2); return typed::set>(res); } template typed::set> typed::set>::unite(const typed::point> &set2) const { auto res = isl::set::unite(set2); return typed::set>(res); } template typed::set> typed::set>::universe(const typed::space> &space) { auto res = isl::set::universe(space); return typed::set>(res); } template typed::map typed::set>::unwrap() const { auto res = isl::set::unwrap(); return typed::map(res); } template typed::set> typed::set>::upper_bound(const typed::multi_pw_aff> &upper) const { auto res = isl::set::upper_bound(upper); return typed::set>(res); } template typed::set> typed::set>::upper_bound(const typed::multi_val> &upper) const { auto res = isl::set::upper_bound(upper); return typed::set>(res); } template typed::set> typed::set>::wrapped_reverse() const { auto res = isl::set::wrapped_reverse(); return typed::set>(res); } typed::set_list<>::set_list(const isl::ctx &ctx, int n) : isl::set_list(ctx, n) { } typed::set_list<>::set_list(const typed::set<> &el) : isl::set_list(el) { } typed::set_list<>::set_list(const isl::ctx &ctx, const std::string &str) : isl::set_list(ctx, str) { } typed::set_list<> typed::set_list<>::add(const typed::set<> &el) const { auto res = isl::set_list::add(el); return typed::set_list<>(res); } typed::set_list<> typed::set_list<>::add(const typed::basic_set<> &el) const { auto res = isl::set_list::add(el); return typed::set_list<>(res); } typed::set_list<> typed::set_list<>::add(const typed::point<> &el) const { auto res = isl::set_list::add(el); return typed::set_list<>(res); } typed::set_list<> typed::set_list<>::drop(unsigned int first, unsigned int n) const { auto res = isl::set_list::drop(first, n); return typed::set_list<>(res); } void typed::set_list<>::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set<>(arg0)); }; return isl::set_list::foreach(lambda_fn); } void typed::set_list<>::foreach_scc(const std::function, typed::set<>)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::set arg0, isl::set arg1) { return follows(typed::set<>(arg0), typed::set<>(arg1)); }; auto lambda_fn = [&] (isl::set_list arg0) { return fn(typed::set_list<>(arg0)); }; return isl::set_list::foreach_scc(lambda_follows, lambda_fn); } template typed::set_list::set_list(const isl::ctx &ctx, int n) : isl::set_list(ctx, n) { } template typed::set_list::set_list(const typed::set &el) : isl::set_list(el) { } template typed::set_list::set_list(const isl::ctx &ctx, const std::string &str) : isl::set_list(ctx, str) { } template typed::set_list typed::set_list::add(const typed::set &el) const { auto res = isl::set_list::add(el); return typed::set_list(res); } template typed::set_list typed::set_list::add(const typed::basic_set &el) const { auto res = isl::set_list::add(el); return typed::set_list(res); } template typed::set_list typed::set_list::add(const typed::point &el) const { auto res = isl::set_list::add(el); return typed::set_list(res); } template typed::set typed::set_list::at(int index) const { auto res = isl::set_list::at(index); return typed::set(res); } template typed::set_list typed::set_list::drop(unsigned int first, unsigned int n) const { auto res = isl::set_list::drop(first, n); return typed::set_list(res); } template void typed::set_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set(arg0)); }; return isl::set_list::foreach(lambda_fn); } template void typed::set_list::foreach_scc(const std::function, typed::set)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::set arg0, isl::set arg1) { return follows(typed::set(arg0), typed::set(arg1)); }; auto lambda_fn = [&] (isl::set_list arg0) { return fn(typed::set_list(arg0)); }; return isl::set_list::foreach_scc(lambda_follows, lambda_fn); } template typed::set_list typed::set_list::set_at(int index, const typed::set &el) const { auto res = isl::set_list::set_at(index, el); return typed::set_list(res); } typed::space<>::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template typed::space typed::space<>::add_named_tuple(const typed::id &tuple_id, unsigned int dim) const { auto res = isl::space::add_named_tuple(tuple_id, dim); return typed::space(res); } template typed::space typed::space<>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const { auto res = isl::space::add_named_tuple(tuple_id, dim); return typed::space(res); } typed::space<> typed::space<>::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space<>(res); } typed::space<> typed::space<>::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space<>(res); } template typed::space typed::space<>::add_unnamed_tuple(unsigned int dim) const { auto res = isl::space::add_unnamed_tuple(dim); return typed::space(res); } typed::space<> typed::space<>::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space<>(res); } template typed::multi_aff typed::space<>::multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::space::multi_aff_on_domain(mv); return typed::multi_aff(res); } typed::aff typed::space<>::param_aff_on_domain(const typed::id &id) const { auto res = isl::space::param_aff_on_domain(id); return typed::aff(res); } typed::aff typed::space<>::param_aff_on_domain(const std::string &id) const { auto res = isl::space::param_aff_on_domain(id); return typed::aff(res); } typed::space<> typed::space<>::unit(const isl::ctx &ctx) { auto res = isl::space::unit(ctx); return typed::space<>(res); } typed::set<> typed::space<>::universe_set() const { auto res = isl::space::universe_set(); return typed::set<>(res); } template typed::space::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template template typed::space typed::space::add_named_tuple(const typed::id &tuple_id, unsigned int dim) const { auto res = isl::space::add_named_tuple(tuple_id, dim); return typed::space(res); } template template typed::space typed::space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const { auto res = isl::space::add_named_tuple(tuple_id, dim); return typed::space(res); } template typed::space typed::space::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space(res); } template typed::space typed::space::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space(res); } template template typed::space typed::space::add_unnamed_tuple(unsigned int dim) const { auto res = isl::space::add_unnamed_tuple(dim); return typed::space(res); } template typed::space<> typed::space::domain() const { auto res = isl::space::domain(); return typed::space<>(res); } template typed::space typed::space::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space(res); } template typed::multi_aff typed::space::identity_multi_aff_on_domain() const { auto res = isl::space::identity_multi_aff_on_domain(); return typed::multi_aff(res); } template typed::multi_pw_aff typed::space::identity_multi_pw_aff_on_domain() const { auto res = isl::space::identity_multi_pw_aff_on_domain(); return typed::multi_pw_aff(res); } template typed::pw_multi_aff typed::space::identity_pw_multi_aff_on_domain() const { auto res = isl::space::identity_pw_multi_aff_on_domain(); return typed::pw_multi_aff(res); } template typed::space typed::space::map_from_set() const { auto res = isl::space::map_from_set(); return typed::space(res); } template typed::multi_aff typed::space::multi_aff(const typed::aff_list &list) const { auto res = isl::space::multi_aff(list); return typed::multi_aff(res); } template template typed::multi_aff typed::space::multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::space::multi_aff_on_domain(mv); return typed::multi_aff(res); } template typed::multi_id typed::space::multi_id(const typed::id_list &list) const { auto res = isl::space::multi_id(list); return typed::multi_id(res); } template typed::multi_pw_aff typed::space::multi_pw_aff(const typed::pw_aff_list &list) const { auto res = isl::space::multi_pw_aff(list); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::space::multi_union_pw_aff(const typed::union_pw_aff_list &list) const { auto res = isl::space::multi_union_pw_aff(list); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::space::multi_union_pw_aff(const typed::union_pw_aff_list &list) const { auto res = isl::space::multi_union_pw_aff(list); return typed::multi_union_pw_aff(res); } template typed::multi_val typed::space::multi_val(const typed::val_list &list) const { auto res = isl::space::multi_val(list); return typed::multi_val(res); } template typed::aff typed::space::param_aff_on_domain(const typed::id &id) const { auto res = isl::space::param_aff_on_domain(id); return typed::aff(res); } template typed::aff typed::space::param_aff_on_domain(const std::string &id) const { auto res = isl::space::param_aff_on_domain(id); return typed::aff(res); } template typed::space<> typed::space::params() const { auto res = isl::space::params(); return typed::space<>(res); } template template typed::space> typed::space::product(const typed::space &right) const { auto res = isl::space::product(right); return typed::space>(res); } template template typed::space typed::space::set_range_tuple(const typed::id &id) const { auto res = isl::space::set_range_tuple(id); return typed::space(res); } template template typed::space typed::space::set_range_tuple(const std::string &id) const { auto res = isl::space::set_range_tuple(id); return typed::space(res); } template typed::set typed::space::universe_set() const { auto res = isl::space::universe_set(); return typed::set(res); } template typed::aff typed::space::zero_aff_on_domain() const { auto res = isl::space::zero_aff_on_domain(); return typed::aff(res); } template typed::multi_aff typed::space::zero_multi_aff() const { auto res = isl::space::zero_multi_aff(); return typed::multi_aff(res); } template typed::multi_pw_aff typed::space::zero_multi_pw_aff() const { auto res = isl::space::zero_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::space::zero_multi_union_pw_aff() const { auto res = isl::space::zero_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::multi_val typed::space::zero_multi_val() const { auto res = isl::space::zero_multi_val(); return typed::multi_val(res); } template typed::space::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template typed::space typed::space::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space(res); } template typed::space typed::space::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space(res); } template typed::space typed::space::domain() const { auto res = isl::space::domain(); return typed::space(res); } template typed::multi_aff, Domain> typed::space::domain_map_multi_aff() const { auto res = isl::space::domain_map_multi_aff(); return typed::multi_aff, Domain>(res); } template typed::pw_multi_aff, Domain> typed::space::domain_map_pw_multi_aff() const { auto res = isl::space::domain_map_pw_multi_aff(); return typed::pw_multi_aff, Domain>(res); } template typed::space typed::space::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space(res); } template typed::multi_aff typed::space::multi_aff(const typed::aff_list &list) const { auto res = isl::space::multi_aff(list); return typed::multi_aff(res); } template typed::multi_pw_aff typed::space::multi_pw_aff(const typed::pw_aff_list &list) const { auto res = isl::space::multi_pw_aff(list); return typed::multi_pw_aff(res); } template typed::space<> typed::space::params() const { auto res = isl::space::params(); return typed::space<>(res); } template template typed::space, pair> typed::space::product(const typed::space &right) const { auto res = isl::space::product(right); return typed::space, pair>(res); } template typed::space typed::space::range() const { auto res = isl::space::range(); return typed::space(res); } template typed::multi_aff, Range> typed::space::range_map_multi_aff() const { auto res = isl::space::range_map_multi_aff(); return typed::multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::space::range_map_pw_multi_aff() const { auto res = isl::space::range_map_pw_multi_aff(); return typed::pw_multi_aff, Range>(res); } template typed::space typed::space::reverse() const { auto res = isl::space::reverse(); return typed::space(res); } template template typed::space typed::space::set_domain_tuple(const typed::id &id) const { auto res = isl::space::set_domain_tuple(id); return typed::space(res); } template template typed::space typed::space::set_domain_tuple(const std::string &id) const { auto res = isl::space::set_domain_tuple(id); return typed::space(res); } template template typed::space typed::space::set_range_tuple(const typed::id &id) const { auto res = isl::space::set_range_tuple(id); return typed::space(res); } template template typed::space typed::space::set_range_tuple(const std::string &id) const { auto res = isl::space::set_range_tuple(id); return typed::space(res); } template typed::map typed::space::universe_map() const { auto res = isl::space::universe_map(); return typed::map(res); } template typed::space> typed::space::wrap() const { auto res = isl::space::wrap(); return typed::space>(res); } template typed::multi_aff typed::space::zero_multi_aff() const { auto res = isl::space::zero_multi_aff(); return typed::multi_aff(res); } template typed::multi_pw_aff typed::space::zero_multi_pw_aff() const { auto res = isl::space::zero_multi_pw_aff(); return typed::multi_pw_aff(res); } template typed::multi_union_pw_aff typed::space::zero_multi_union_pw_aff() const { auto res = isl::space::zero_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::space>::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template template typed::space, Arg2> typed::space>::add_named_tuple(const typed::id &tuple_id, unsigned int dim) const { auto res = isl::space::add_named_tuple(tuple_id, dim); return typed::space, Arg2>(res); } template template typed::space, Arg2> typed::space>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const { auto res = isl::space::add_named_tuple(tuple_id, dim); return typed::space, Arg2>(res); } template typed::space> typed::space>::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space>(res); } template typed::space> typed::space>::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space>(res); } template template typed::space, Arg2> typed::space>::add_unnamed_tuple(unsigned int dim) const { auto res = isl::space::add_unnamed_tuple(dim); return typed::space, Arg2>(res); } template typed::space<> typed::space>::domain() const { auto res = isl::space::domain(); return typed::space<>(res); } template typed::space> typed::space>::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space>(res); } template typed::multi_aff, pair> typed::space>::identity_multi_aff_on_domain() const { auto res = isl::space::identity_multi_aff_on_domain(); return typed::multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::space>::identity_multi_pw_aff_on_domain() const { auto res = isl::space::identity_multi_pw_aff_on_domain(); return typed::multi_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::space>::identity_pw_multi_aff_on_domain() const { auto res = isl::space::identity_pw_multi_aff_on_domain(); return typed::pw_multi_aff, pair>(res); } template typed::space, pair> typed::space>::map_from_set() const { auto res = isl::space::map_from_set(); return typed::space, pair>(res); } template typed::multi_aff> typed::space>::multi_aff(const typed::aff_list &list) const { auto res = isl::space::multi_aff(list); return typed::multi_aff>(res); } template template typed::multi_aff, Arg2> typed::space>::multi_aff_on_domain(const typed::multi_val &mv) const { auto res = isl::space::multi_aff_on_domain(mv); return typed::multi_aff, Arg2>(res); } template typed::multi_id> typed::space>::multi_id(const typed::id_list &list) const { auto res = isl::space::multi_id(list); return typed::multi_id>(res); } template typed::multi_pw_aff> typed::space>::multi_pw_aff(const typed::pw_aff_list &list) const { auto res = isl::space::multi_pw_aff(list); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::space>::multi_union_pw_aff(const typed::union_pw_aff_list &list) const { auto res = isl::space::multi_union_pw_aff(list); return typed::multi_union_pw_aff>(res); } template template typed::multi_union_pw_aff> typed::space>::multi_union_pw_aff(const typed::union_pw_aff_list &list) const { auto res = isl::space::multi_union_pw_aff(list); return typed::multi_union_pw_aff>(res); } template typed::multi_val> typed::space>::multi_val(const typed::val_list &list) const { auto res = isl::space::multi_val(list); return typed::multi_val>(res); } template typed::aff, Anonymous> typed::space>::param_aff_on_domain(const typed::id &id) const { auto res = isl::space::param_aff_on_domain(id); return typed::aff, Anonymous>(res); } template typed::aff, Anonymous> typed::space>::param_aff_on_domain(const std::string &id) const { auto res = isl::space::param_aff_on_domain(id); return typed::aff, Anonymous>(res); } template typed::space<> typed::space>::params() const { auto res = isl::space::params(); return typed::space<>(res); } template template typed::space, Arg2>> typed::space>::product(const typed::space &right) const { auto res = isl::space::product(right); return typed::space, Arg2>>(res); } template typed::set> typed::space>::universe_set() const { auto res = isl::space::universe_set(); return typed::set>(res); } template typed::space typed::space>::unwrap() const { auto res = isl::space::unwrap(); return typed::space(res); } template typed::space> typed::space>::wrapped_reverse() const { auto res = isl::space::wrapped_reverse(); return typed::space>(res); } template typed::aff, Anonymous> typed::space>::zero_aff_on_domain() const { auto res = isl::space::zero_aff_on_domain(); return typed::aff, Anonymous>(res); } template typed::multi_aff> typed::space>::zero_multi_aff() const { auto res = isl::space::zero_multi_aff(); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::space>::zero_multi_pw_aff() const { auto res = isl::space::zero_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::space>::zero_multi_union_pw_aff() const { auto res = isl::space::zero_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::multi_val> typed::space>::zero_multi_val() const { auto res = isl::space::zero_multi_val(); return typed::multi_val>(res); } template typed::space, Range2>::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template typed::space, Range2> typed::space, Range2>::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space, Range2>(res); } template typed::space, Range2> typed::space, Range2>::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space, Range2>(res); } template typed::space> typed::space, Range2>::curry() const { auto res = isl::space::curry(); return typed::space>(res); } template typed::space> typed::space, Range2>::domain() const { auto res = isl::space::domain(); return typed::space>(res); } template typed::multi_aff, Range2>, pair> typed::space, Range2>::domain_map_multi_aff() const { auto res = isl::space::domain_map_multi_aff(); return typed::multi_aff, Range2>, pair>(res); } template typed::pw_multi_aff, Range2>, pair> typed::space, Range2>::domain_map_pw_multi_aff() const { auto res = isl::space::domain_map_pw_multi_aff(); return typed::pw_multi_aff, Range2>, pair>(res); } template typed::space, Range2> typed::space, Range2>::domain_reverse() const { auto res = isl::space::domain_reverse(); return typed::space, Range2>(res); } template typed::space, Range2> typed::space, Range2>::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space, Range2>(res); } template typed::space typed::space, Range2>::flatten_domain() const { auto res = isl::space::flatten_domain(); return typed::space(res); } template typed::multi_aff, Range2> typed::space, Range2>::multi_aff(const typed::aff_list, Anonymous> &list) const { auto res = isl::space::multi_aff(list); return typed::multi_aff, Range2>(res); } template typed::multi_pw_aff, Range2> typed::space, Range2>::multi_pw_aff(const typed::pw_aff_list, Anonymous> &list) const { auto res = isl::space::multi_pw_aff(list); return typed::multi_pw_aff, Range2>(res); } template typed::space<> typed::space, Range2>::params() const { auto res = isl::space::params(); return typed::space<>(res); } template template typed::space, Domain2>, pair> typed::space, Range2>::product(const typed::space &right) const { auto res = isl::space::product(right); return typed::space, Domain2>, pair>(res); } template typed::space typed::space, Range2>::range() const { auto res = isl::space::range(); return typed::space(res); } template typed::multi_aff, Range2>, Range2> typed::space, Range2>::range_map_multi_aff() const { auto res = isl::space::range_map_multi_aff(); return typed::multi_aff, Range2>, Range2>(res); } template typed::pw_multi_aff, Range2>, Range2> typed::space, Range2>::range_map_pw_multi_aff() const { auto res = isl::space::range_map_pw_multi_aff(); return typed::pw_multi_aff, Range2>, Range2>(res); } template typed::space> typed::space, Range2>::reverse() const { auto res = isl::space::reverse(); return typed::space>(res); } template template typed::space, Arg2> typed::space, Range2>::set_range_tuple(const typed::id &id) const { auto res = isl::space::set_range_tuple(id); return typed::space, Arg2>(res); } template template typed::space, Arg2> typed::space, Range2>::set_range_tuple(const std::string &id) const { auto res = isl::space::set_range_tuple(id); return typed::space, Arg2>(res); } template typed::map, Range2> typed::space, Range2>::universe_map() const { auto res = isl::space::universe_map(); return typed::map, Range2>(res); } template typed::space, Range2>> typed::space, Range2>::wrap() const { auto res = isl::space::wrap(); return typed::space, Range2>>(res); } template typed::multi_aff, Range2> typed::space, Range2>::zero_multi_aff() const { auto res = isl::space::zero_multi_aff(); return typed::multi_aff, Range2>(res); } template typed::multi_pw_aff, Range2> typed::space, Range2>::zero_multi_pw_aff() const { auto res = isl::space::zero_multi_pw_aff(); return typed::multi_pw_aff, Range2>(res); } template typed::multi_union_pw_aff, Range2> typed::space, Range2>::zero_multi_union_pw_aff() const { auto res = isl::space::zero_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range2>(res); } template typed::space>::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template typed::space> typed::space>::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space>(res); } template typed::space> typed::space>::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space>(res); } template typed::space typed::space>::domain() const { auto res = isl::space::domain(); return typed::space(res); } template typed::multi_aff>, Domain> typed::space>::domain_map_multi_aff() const { auto res = isl::space::domain_map_multi_aff(); return typed::multi_aff>, Domain>(res); } template typed::pw_multi_aff>, Domain> typed::space>::domain_map_pw_multi_aff() const { auto res = isl::space::domain_map_pw_multi_aff(); return typed::pw_multi_aff>, Domain>(res); } template typed::space> typed::space>::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space>(res); } template typed::space typed::space>::flatten_range() const { auto res = isl::space::flatten_range(); return typed::space(res); } template typed::multi_aff> typed::space>::multi_aff(const typed::aff_list &list) const { auto res = isl::space::multi_aff(list); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::space>::multi_pw_aff(const typed::pw_aff_list &list) const { auto res = isl::space::multi_pw_aff(list); return typed::multi_pw_aff>(res); } template typed::space<> typed::space>::params() const { auto res = isl::space::params(); return typed::space<>(res); } template template typed::space, pair, Arg3>> typed::space>::product(const typed::space &right) const { auto res = isl::space::product(right); return typed::space, pair, Arg3>>(res); } template typed::space> typed::space>::range() const { auto res = isl::space::range(); return typed::space>(res); } template typed::multi_aff>, pair> typed::space>::range_map_multi_aff() const { auto res = isl::space::range_map_multi_aff(); return typed::multi_aff>, pair>(res); } template typed::pw_multi_aff>, pair> typed::space>::range_map_pw_multi_aff() const { auto res = isl::space::range_map_pw_multi_aff(); return typed::pw_multi_aff>, pair>(res); } template typed::space> typed::space>::range_reverse() const { auto res = isl::space::range_reverse(); return typed::space>(res); } template typed::space, Domain> typed::space>::reverse() const { auto res = isl::space::reverse(); return typed::space, Domain>(res); } template template typed::space> typed::space>::set_domain_tuple(const typed::id &id) const { auto res = isl::space::set_domain_tuple(id); return typed::space>(res); } template template typed::space> typed::space>::set_domain_tuple(const std::string &id) const { auto res = isl::space::set_domain_tuple(id); return typed::space>(res); } template typed::space, Range2> typed::space>::uncurry() const { auto res = isl::space::uncurry(); return typed::space, Range2>(res); } template typed::map> typed::space>::universe_map() const { auto res = isl::space::universe_map(); return typed::map>(res); } template typed::space>> typed::space>::wrap() const { auto res = isl::space::wrap(); return typed::space>>(res); } template typed::multi_aff> typed::space>::zero_multi_aff() const { auto res = isl::space::zero_multi_aff(); return typed::multi_aff>(res); } template typed::multi_pw_aff> typed::space>::zero_multi_pw_aff() const { auto res = isl::space::zero_multi_pw_aff(); return typed::multi_pw_aff>(res); } template typed::multi_union_pw_aff> typed::space>::zero_multi_union_pw_aff() const { auto res = isl::space::zero_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::space, pair>::space(const isl::ctx &ctx, const std::string &str) : isl::space(ctx, str) { } template typed::space, pair> typed::space, pair>::add_param(const typed::id &id) const { auto res = isl::space::add_param(id); return typed::space, pair>(res); } template typed::space, pair> typed::space, pair>::add_param(const std::string &id) const { auto res = isl::space::add_param(id); return typed::space, pair>(res); } template typed::space>> typed::space, pair>::curry() const { auto res = isl::space::curry(); return typed::space>>(res); } template typed::space> typed::space, pair>::domain() const { auto res = isl::space::domain(); return typed::space>(res); } template typed::multi_aff, pair>, pair> typed::space, pair>::domain_map_multi_aff() const { auto res = isl::space::domain_map_multi_aff(); return typed::multi_aff, pair>, pair>(res); } template typed::pw_multi_aff, pair>, pair> typed::space, pair>::domain_map_pw_multi_aff() const { auto res = isl::space::domain_map_pw_multi_aff(); return typed::pw_multi_aff, pair>, pair>(res); } template typed::space, pair> typed::space, pair>::domain_reverse() const { auto res = isl::space::domain_reverse(); return typed::space, pair>(res); } template typed::space, pair> typed::space, pair>::drop_all_params() const { auto res = isl::space::drop_all_params(); return typed::space, pair>(res); } template typed::space> typed::space, pair>::flatten_domain() const { auto res = isl::space::flatten_domain(); return typed::space>(res); } template typed::space, Anonymous> typed::space, pair>::flatten_range() const { auto res = isl::space::flatten_range(); return typed::space, Anonymous>(res); } template typed::multi_aff, pair> typed::space, pair>::multi_aff(const typed::aff_list, Anonymous> &list) const { auto res = isl::space::multi_aff(list); return typed::multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::space, pair>::multi_pw_aff(const typed::pw_aff_list, Anonymous> &list) const { auto res = isl::space::multi_pw_aff(list); return typed::multi_pw_aff, pair>(res); } template typed::space<> typed::space, pair>::params() const { auto res = isl::space::params(); return typed::space<>(res); } template template typed::space, Domain2>, pair, Arg2>> typed::space, pair>::product(const typed::space &right) const { auto res = isl::space::product(right); return typed::space, Domain2>, pair, Arg2>>(res); } template typed::space> typed::space, pair>::range() const { auto res = isl::space::range(); return typed::space>(res); } template typed::multi_aff, pair>, pair> typed::space, pair>::range_map_multi_aff() const { auto res = isl::space::range_map_multi_aff(); return typed::multi_aff, pair>, pair>(res); } template typed::pw_multi_aff, pair>, pair> typed::space, pair>::range_map_pw_multi_aff() const { auto res = isl::space::range_map_pw_multi_aff(); return typed::pw_multi_aff, pair>, pair>(res); } template typed::space, pair> typed::space, pair>::range_reverse() const { auto res = isl::space::range_reverse(); return typed::space, pair>(res); } template typed::space, pair> typed::space, pair>::reverse() const { auto res = isl::space::reverse(); return typed::space, pair>(res); } template typed::space, Range>, Range2> typed::space, pair>::uncurry() const { auto res = isl::space::uncurry(); return typed::space, Range>, Range2>(res); } template typed::map, pair> typed::space, pair>::universe_map() const { auto res = isl::space::universe_map(); return typed::map, pair>(res); } template typed::space, pair>> typed::space, pair>::wrap() const { auto res = isl::space::wrap(); return typed::space, pair>>(res); } template typed::multi_aff, pair> typed::space, pair>::zero_multi_aff() const { auto res = isl::space::zero_multi_aff(); return typed::multi_aff, pair>(res); } template typed::multi_pw_aff, pair> typed::space, pair>::zero_multi_pw_aff() const { auto res = isl::space::zero_multi_pw_aff(); return typed::multi_pw_aff, pair>(res); } template typed::multi_union_pw_aff, pair> typed::space, pair>::zero_multi_union_pw_aff() const { auto res = isl::space::zero_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::union_map::union_map(const typed::basic_map &bmap) : isl::union_map(bmap) { } template typed::union_map::union_map(const typed::map &map) : isl::union_map(map) { } template typed::union_map::union_map(const isl::ctx &ctx, const std::string &str) : isl::union_map(ctx, str) { } template template typed::union_map typed::union_map::apply_domain(const typed::union_map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_domain(const typed::basic_map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_domain(const typed::map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_range(const typed::union_map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_range(const typed::basic_map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_range(const typed::map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template typed::map typed::union_map::as_map() const { auto res = isl::union_map::as_map(); return typed::map(res); } template typed::multi_union_pw_aff typed::union_map::as_multi_union_pw_aff() const { auto res = isl::union_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::union_pw_multi_aff typed::union_map::as_union_pw_multi_aff() const { auto res = isl::union_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::union_set typed::union_map::bind_range(const typed::multi_id &tuple) const { auto res = isl::union_map::bind_range(tuple); return typed::union_set(res); } template typed::union_map typed::union_map::coalesce() const { auto res = isl::union_map::coalesce(); return typed::union_map(res); } template typed::union_map typed::union_map::detect_equalities() const { auto res = isl::union_map::detect_equalities(); return typed::union_map(res); } template typed::union_set typed::union_map::domain() const { auto res = isl::union_map::domain(); return typed::union_set(res); } template typed::union_map, Domain> typed::union_map::domain_map() const { auto res = isl::union_map::domain_map(); return typed::union_map, Domain>(res); } template typed::union_pw_multi_aff, Domain> typed::union_map::domain_map_union_pw_multi_aff() const { auto res = isl::union_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Domain>(res); } template template typed::union_map, Range> typed::union_map::domain_product(const typed::union_map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Range>(res); } template template typed::union_map, Range> typed::union_map::domain_product(const typed::basic_map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Range>(res); } template template typed::union_map, Range> typed::union_map::domain_product(const typed::map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Range>(res); } template typed::union_map typed::union_map::drop_unused_params() const { auto res = isl::union_map::drop_unused_params(); return typed::union_map(res); } template typed::union_map typed::union_map::empty(const isl::ctx &ctx) { auto res = isl::union_map::empty(ctx); return typed::union_map(res); } template bool typed::union_map::every_map(const std::function)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map(arg0)); }; return isl::union_map::every_map(lambda_test); } template typed::map typed::union_map::extract_map(const typed::space &space) const { auto res = isl::union_map::extract_map(space); return typed::map(res); } template void typed::union_map::foreach_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::union_map::foreach_map(lambda_fn); } template typed::union_map typed::union_map::gist(const typed::union_map &context) const { auto res = isl::union_map::gist(context); return typed::union_map(res); } template typed::union_map typed::union_map::gist(const typed::basic_map &context) const { auto res = isl::union_map::gist(context); return typed::union_map(res); } template typed::union_map typed::union_map::gist(const typed::map &context) const { auto res = isl::union_map::gist(context); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::union_set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::basic_set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::point &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_params(const typed::set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::gist_params(const typed::point<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect(const typed::union_map &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::intersect(const typed::basic_map &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::intersect(const typed::map &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_domain(const typed::space &space) const { auto res = isl::union_map::intersect_domain(space); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_domain(const typed::union_set &uset) const { auto res = isl::union_map::intersect_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_params(const typed::set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_params(const typed::point<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_range(const typed::space &space) const { auto res = isl::union_map::intersect_range(space); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_range(const typed::union_set &uset) const { auto res = isl::union_map::intersect_range(uset); return typed::union_map(res); } template typed::union_map typed::union_map::lexmax() const { auto res = isl::union_map::lexmax(); return typed::union_map(res); } template typed::union_map typed::union_map::lexmin() const { auto res = isl::union_map::lexmin(); return typed::union_map(res); } template typed::map_list typed::union_map::map_list() const { auto res = isl::union_map::map_list(); return typed::map_list(res); } template typed::set<> typed::union_map::params() const { auto res = isl::union_map::params(); return typed::set<>(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::union_map::preimage_domain(ma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::union_map::preimage_domain(mpa); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::union_map::preimage_domain(pma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_map::preimage_domain(upma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_range(const typed::multi_aff &ma) const { auto res = isl::union_map::preimage_range(ma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::union_map::preimage_range(pma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_map::preimage_range(upma); return typed::union_map(res); } template template typed::union_map, pair> typed::union_map::product(const typed::union_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map::product(const typed::basic_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map::product(const typed::map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair>(res); } template typed::union_map typed::union_map::project_out_all_params() const { auto res = isl::union_map::project_out_all_params(); return typed::union_map(res); } template typed::union_map typed::union_map::project_out_param(const typed::id &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map(res); } template typed::union_map typed::union_map::project_out_param(const std::string &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map(res); } template typed::union_map typed::union_map::project_out_param(const typed::id_list &list) const { auto res = isl::union_map::project_out_param(list); return typed::union_map(res); } template typed::union_set typed::union_map::range() const { auto res = isl::union_map::range(); return typed::union_set(res); } template typed::union_map, Range> typed::union_map::range_map() const { auto res = isl::union_map::range_map(); return typed::union_map, Range>(res); } template template typed::union_map> typed::union_map::range_product(const typed::union_map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map::range_product(const typed::basic_map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map::range_product(const typed::map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map>(res); } template typed::union_map typed::union_map::reverse() const { auto res = isl::union_map::reverse(); return typed::union_map(res); } template typed::space<> typed::union_map::space() const { auto res = isl::union_map::space(); return typed::space<>(res); } template typed::union_map typed::union_map::subtract(const typed::union_map &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::subtract(const typed::basic_map &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::subtract(const typed::map &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::union_set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::basic_set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::point &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::union_set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::basic_set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::point &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::unite(const typed::union_map &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::unite(const typed::basic_map &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::unite(const typed::map &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::universe() const { auto res = isl::union_map::universe(); return typed::union_map(res); } template typed::union_set> typed::union_map::wrap() const { auto res = isl::union_map::wrap(); return typed::union_set>(res); } template typed::union_map, Range2>::union_map(const typed::basic_map, Range2> &bmap) : isl::union_map(bmap) { } template typed::union_map, Range2>::union_map(const typed::map, Range2> &map) : isl::union_map(map) { } template typed::union_map, Range2>::union_map(const isl::ctx &ctx, const std::string &str) : isl::union_map(ctx, str) { } template template typed::union_map typed::union_map, Range2>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map, Range2>::apply_domain(const typed::basic_map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map, Range2>::apply_domain(const typed::map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map, Arg3> typed::union_map, Range2>::apply_range(const typed::union_map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Arg3>(res); } template template typed::union_map, Arg3> typed::union_map, Range2>::apply_range(const typed::basic_map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Arg3>(res); } template template typed::union_map, Arg3> typed::union_map, Range2>::apply_range(const typed::map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Arg3>(res); } template typed::map, Range2> typed::union_map, Range2>::as_map() const { auto res = isl::union_map::as_map(); return typed::map, Range2>(res); } template typed::multi_union_pw_aff, Range2> typed::union_map, Range2>::as_multi_union_pw_aff() const { auto res = isl::union_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range2>(res); } template typed::union_pw_multi_aff, Range2> typed::union_map, Range2>::as_union_pw_multi_aff() const { auto res = isl::union_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range2>(res); } template typed::union_set> typed::union_map, Range2>::bind_range(const typed::multi_id &tuple) const { auto res = isl::union_map::bind_range(tuple); return typed::union_set>(res); } template typed::union_map, Range2> typed::union_map, Range2>::coalesce() const { auto res = isl::union_map::coalesce(); return typed::union_map, Range2>(res); } template typed::union_map> typed::union_map, Range2>::curry() const { auto res = isl::union_map::curry(); return typed::union_map>(res); } template typed::union_map, Range2> typed::union_map, Range2>::detect_equalities() const { auto res = isl::union_map::detect_equalities(); return typed::union_map, Range2>(res); } template typed::union_set> typed::union_map, Range2>::domain() const { auto res = isl::union_map::domain(); return typed::union_set>(res); } template typed::union_map typed::union_map, Range2>::domain_factor_domain() const { auto res = isl::union_map::domain_factor_domain(); return typed::union_map(res); } template typed::union_map typed::union_map, Range2>::domain_factor_range() const { auto res = isl::union_map::domain_factor_range(); return typed::union_map(res); } template typed::union_map, Range2>, pair> typed::union_map, Range2>::domain_map() const { auto res = isl::union_map::domain_map(); return typed::union_map, Range2>, pair>(res); } template typed::union_pw_multi_aff, Range2>, pair> typed::union_map, Range2>::domain_map_union_pw_multi_aff() const { auto res = isl::union_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Range2>, pair>(res); } template template typed::union_map, Domain2>, Range2> typed::union_map, Range2>::domain_product(const typed::union_map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, Range2>(res); } template template typed::union_map, Domain2>, Range2> typed::union_map, Range2>::domain_product(const typed::basic_map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, Range2>(res); } template template typed::union_map, Domain2>, Range2> typed::union_map, Range2>::domain_product(const typed::map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::domain_reverse() const { auto res = isl::union_map::domain_reverse(); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::drop_unused_params() const { auto res = isl::union_map::drop_unused_params(); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::empty(const isl::ctx &ctx) { auto res = isl::union_map::empty(ctx); return typed::union_map, Range2>(res); } template bool typed::union_map, Range2>::every_map(const std::function, Range2>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, Range2>(arg0)); }; return isl::union_map::every_map(lambda_test); } template typed::map, Range2> typed::union_map, Range2>::extract_map(const typed::space, Range2> &space) const { auto res = isl::union_map::extract_map(space); return typed::map, Range2>(res); } template void typed::union_map, Range2>::foreach_map(const std::function, Range2>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, Range2>(arg0)); }; return isl::union_map::foreach_map(lambda_fn); } template typed::union_map, Range2> typed::union_map, Range2>::gist(const typed::union_map, Range2> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist(const typed::basic_map, Range2> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist(const typed::map, Range2> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_domain(const typed::union_set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_domain(const typed::basic_set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_domain(const typed::point> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_domain(const typed::set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_params(const typed::set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::gist_params(const typed::point<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect(const typed::union_map, Range2> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect(const typed::basic_map, Range2> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect(const typed::map, Range2> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_domain(const typed::space> &space) const { auto res = isl::union_map::intersect_domain(space); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::union_map::intersect_domain(uset); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_domain_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_domain_wrapped_domain(const typed::point &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_params(const typed::set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_params(const typed::point<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_range(const typed::space &space) const { auto res = isl::union_map::intersect_range(space); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::intersect_range(const typed::union_set &uset) const { auto res = isl::union_map::intersect_range(uset); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::lexmax() const { auto res = isl::union_map::lexmax(); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::lexmin() const { auto res = isl::union_map::lexmin(); return typed::union_map, Range2>(res); } template typed::map_list, Range2> typed::union_map, Range2>::map_list() const { auto res = isl::union_map::map_list(); return typed::map_list, Range2>(res); } template typed::set<> typed::union_map, Range2>::params() const { auto res = isl::union_map::params(); return typed::set<>(res); } template template typed::union_map typed::union_map, Range2>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::union_map::preimage_domain(ma); return typed::union_map(res); } template template typed::union_map typed::union_map, Range2>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::union_map::preimage_domain(mpa); return typed::union_map(res); } template template typed::union_map typed::union_map, Range2>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::union_map::preimage_domain(pma); return typed::union_map(res); } template template typed::union_map typed::union_map, Range2>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_map::preimage_domain(upma); return typed::union_map(res); } template template typed::union_map, Arg3> typed::union_map, Range2>::preimage_range(const typed::multi_aff &ma) const { auto res = isl::union_map::preimage_range(ma); return typed::union_map, Arg3>(res); } template template typed::union_map, Arg3> typed::union_map, Range2>::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::union_map::preimage_range(pma); return typed::union_map, Arg3>(res); } template template typed::union_map, Arg3> typed::union_map, Range2>::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_map::preimage_range(upma); return typed::union_map, Arg3>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, Range2>::product(const typed::union_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, Range2>::product(const typed::basic_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, Range2>::product(const typed::map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair>(res); } template typed::union_map, Range2> typed::union_map, Range2>::project_out_all_params() const { auto res = isl::union_map::project_out_all_params(); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::project_out_param(const typed::id &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::project_out_param(const std::string &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::project_out_param(const typed::id_list &list) const { auto res = isl::union_map::project_out_param(list); return typed::union_map, Range2>(res); } template typed::union_set typed::union_map, Range2>::range() const { auto res = isl::union_map::range(); return typed::union_set(res); } template typed::union_map, Range2>, Range2> typed::union_map, Range2>::range_map() const { auto res = isl::union_map::range_map(); return typed::union_map, Range2>, Range2>(res); } template template typed::union_map, pair> typed::union_map, Range2>::range_product(const typed::union_map, Arg3> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map, Range2>::range_product(const typed::basic_map, Arg3> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map, Range2>::range_product(const typed::map, Arg3> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair>(res); } template typed::union_map> typed::union_map, Range2>::reverse() const { auto res = isl::union_map::reverse(); return typed::union_map>(res); } template typed::space<> typed::union_map, Range2>::space() const { auto res = isl::union_map::space(); return typed::space<>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract(const typed::union_map, Range2> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract(const typed::basic_map, Range2> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract(const typed::map, Range2> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_domain(const typed::basic_set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_domain(const typed::point> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_domain(const typed::set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_range(const typed::union_set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_range(const typed::basic_set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_range(const typed::point &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::subtract_range(const typed::set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::unite(const typed::union_map, Range2> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::unite(const typed::basic_map, Range2> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::unite(const typed::map, Range2> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, Range2>(res); } template typed::union_map, Range2> typed::union_map, Range2>::universe() const { auto res = isl::union_map::universe(); return typed::union_map, Range2>(res); } template typed::union_set, Range2>> typed::union_map, Range2>::wrap() const { auto res = isl::union_map::wrap(); return typed::union_set, Range2>>(res); } template typed::union_map::union_map(const typed::basic_map &bmap) : isl::union_map(bmap) { } template typed::union_map::union_map(const typed::map &map) : isl::union_map(map) { } template typed::union_map::union_map(const isl::ctx &ctx, const std::string &str) : isl::union_map(ctx, str) { } template template typed::union_map typed::union_map::apply_domain(const typed::union_map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_domain(const typed::basic_map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_domain(const typed::map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_range(const typed::union_map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_range(const typed::basic_map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map::apply_range(const typed::map &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template typed::map typed::union_map::as_map() const { auto res = isl::union_map::as_map(); return typed::map(res); } template typed::multi_union_pw_aff typed::union_map::as_multi_union_pw_aff() const { auto res = isl::union_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::union_pw_multi_aff typed::union_map::as_union_pw_multi_aff() const { auto res = isl::union_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff(res); } template typed::union_set typed::union_map::bind_range(const typed::multi_id &tuple) const { auto res = isl::union_map::bind_range(tuple); return typed::union_set(res); } template typed::union_map typed::union_map::coalesce() const { auto res = isl::union_map::coalesce(); return typed::union_map(res); } template typed::union_set typed::union_map::deltas() const { auto res = isl::union_map::deltas(); return typed::union_set(res); } template typed::union_map typed::union_map::detect_equalities() const { auto res = isl::union_map::detect_equalities(); return typed::union_map(res); } template typed::union_set typed::union_map::domain() const { auto res = isl::union_map::domain(); return typed::union_set(res); } template typed::union_map, Domain> typed::union_map::domain_map() const { auto res = isl::union_map::domain_map(); return typed::union_map, Domain>(res); } template typed::union_pw_multi_aff, Domain> typed::union_map::domain_map_union_pw_multi_aff() const { auto res = isl::union_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, Domain>(res); } template template typed::union_map, Domain> typed::union_map::domain_product(const typed::union_map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain>(res); } template template typed::union_map, Domain> typed::union_map::domain_product(const typed::basic_map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain>(res); } template template typed::union_map, Domain> typed::union_map::domain_product(const typed::map &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain>(res); } template typed::union_map typed::union_map::drop_unused_params() const { auto res = isl::union_map::drop_unused_params(); return typed::union_map(res); } template typed::union_map typed::union_map::empty(const isl::ctx &ctx) { auto res = isl::union_map::empty(ctx); return typed::union_map(res); } template template typed::union_map typed::union_map::eq_at(const typed::multi_union_pw_aff &mupa) const { auto res = isl::union_map::eq_at(mupa); return typed::union_map(res); } template template typed::union_map typed::union_map::eq_at(const typed::multi_pw_aff &mupa) const { auto res = isl::union_map::eq_at(mupa); return typed::union_map(res); } template typed::union_map typed::union_map::eq_at(const typed::union_pw_aff &mupa) const { auto res = isl::union_map::eq_at(mupa); return typed::union_map(res); } template bool typed::union_map::every_map(const std::function)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map(arg0)); }; return isl::union_map::every_map(lambda_test); } template typed::map typed::union_map::extract_map(const typed::space &space) const { auto res = isl::union_map::extract_map(space); return typed::map(res); } template void typed::union_map::foreach_map(const std::function)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map(arg0)); }; return isl::union_map::foreach_map(lambda_fn); } template typed::union_map typed::union_map::gist(const typed::union_map &context) const { auto res = isl::union_map::gist(context); return typed::union_map(res); } template typed::union_map typed::union_map::gist(const typed::basic_map &context) const { auto res = isl::union_map::gist(context); return typed::union_map(res); } template typed::union_map typed::union_map::gist(const typed::map &context) const { auto res = isl::union_map::gist(context); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::union_set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::basic_set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::point &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_domain(const typed::set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::gist_params(const typed::set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::gist_params(const typed::point<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect(const typed::union_map &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::intersect(const typed::basic_map &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::intersect(const typed::map &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_domain(const typed::space &space) const { auto res = isl::union_map::intersect_domain(space); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_domain(const typed::union_set &uset) const { auto res = isl::union_map::intersect_domain(uset); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_params(const typed::set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_params(const typed::point<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_range(const typed::space &space) const { auto res = isl::union_map::intersect_range(space); return typed::union_map(res); } template typed::union_map typed::union_map::intersect_range(const typed::union_set &uset) const { auto res = isl::union_map::intersect_range(uset); return typed::union_map(res); } template typed::union_map typed::union_map::lexmax() const { auto res = isl::union_map::lexmax(); return typed::union_map(res); } template typed::union_map typed::union_map::lexmin() const { auto res = isl::union_map::lexmin(); return typed::union_map(res); } template typed::map_list typed::union_map::map_list() const { auto res = isl::union_map::map_list(); return typed::map_list(res); } template typed::set<> typed::union_map::params() const { auto res = isl::union_map::params(); return typed::set<>(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::union_map::preimage_domain(ma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::union_map::preimage_domain(mpa); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::union_map::preimage_domain(pma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_map::preimage_domain(upma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_range(const typed::multi_aff &ma) const { auto res = isl::union_map::preimage_range(ma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_range(const typed::pw_multi_aff &pma) const { auto res = isl::union_map::preimage_range(pma); return typed::union_map(res); } template template typed::union_map typed::union_map::preimage_range(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_map::preimage_range(upma); return typed::union_map(res); } template template typed::union_map, pair> typed::union_map::product(const typed::union_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map::product(const typed::basic_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map::product(const typed::map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair>(res); } template typed::union_map typed::union_map::project_out_all_params() const { auto res = isl::union_map::project_out_all_params(); return typed::union_map(res); } template typed::union_map typed::union_map::project_out_param(const typed::id &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map(res); } template typed::union_map typed::union_map::project_out_param(const std::string &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map(res); } template typed::union_map typed::union_map::project_out_param(const typed::id_list &list) const { auto res = isl::union_map::project_out_param(list); return typed::union_map(res); } template typed::union_set typed::union_map::range() const { auto res = isl::union_map::range(); return typed::union_set(res); } template typed::union_map, Domain> typed::union_map::range_map() const { auto res = isl::union_map::range_map(); return typed::union_map, Domain>(res); } template template typed::union_map> typed::union_map::range_product(const typed::union_map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map::range_product(const typed::basic_map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map::range_product(const typed::map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map>(res); } template typed::union_map typed::union_map::reverse() const { auto res = isl::union_map::reverse(); return typed::union_map(res); } template typed::space<> typed::union_map::space() const { auto res = isl::union_map::space(); return typed::space<>(res); } template typed::union_map typed::union_map::subtract(const typed::union_map &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::subtract(const typed::basic_map &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::subtract(const typed::map &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::union_set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::basic_set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::point &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_domain(const typed::set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::union_set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::basic_set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::point &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::subtract_range(const typed::set &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map(res); } template typed::union_map typed::union_map::unite(const typed::union_map &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::unite(const typed::basic_map &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::unite(const typed::map &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map(res); } template typed::union_map typed::union_map::universe() const { auto res = isl::union_map::universe(); return typed::union_map(res); } template typed::union_set> typed::union_map::wrap() const { auto res = isl::union_map::wrap(); return typed::union_set>(res); } template typed::union_map>::union_map(const typed::basic_map> &bmap) : isl::union_map(bmap) { } template typed::union_map>::union_map(const typed::map> &map) : isl::union_map(map) { } template typed::union_map>::union_map(const isl::ctx &ctx, const std::string &str) : isl::union_map(ctx, str) { } template template typed::union_map> typed::union_map>::apply_domain(const typed::union_map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map>::apply_domain(const typed::basic_map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map>::apply_domain(const typed::map &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map typed::union_map>::apply_range(const typed::union_map, Arg3> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map>::apply_range(const typed::basic_map, Arg3> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template template typed::union_map typed::union_map>::apply_range(const typed::map, Arg3> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map(res); } template typed::map> typed::union_map>::as_map() const { auto res = isl::union_map::as_map(); return typed::map>(res); } template typed::multi_union_pw_aff> typed::union_map>::as_multi_union_pw_aff() const { auto res = isl::union_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::union_pw_multi_aff> typed::union_map>::as_union_pw_multi_aff() const { auto res = isl::union_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff>(res); } template typed::union_set typed::union_map>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::union_map::bind_range(tuple); return typed::union_set(res); } template typed::union_map> typed::union_map>::coalesce() const { auto res = isl::union_map::coalesce(); return typed::union_map>(res); } template typed::union_map> typed::union_map>::detect_equalities() const { auto res = isl::union_map::detect_equalities(); return typed::union_map>(res); } template typed::union_set typed::union_map>::domain() const { auto res = isl::union_map::domain(); return typed::union_set(res); } template typed::union_map>, Domain> typed::union_map>::domain_map() const { auto res = isl::union_map::domain_map(); return typed::union_map>, Domain>(res); } template typed::union_pw_multi_aff>, Domain> typed::union_map>::domain_map_union_pw_multi_aff() const { auto res = isl::union_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff>, Domain>(res); } template template typed::union_map, pair> typed::union_map>::domain_product(const typed::union_map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map>::domain_product(const typed::basic_map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map>::domain_product(const typed::map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, pair>(res); } template typed::union_map> typed::union_map>::drop_unused_params() const { auto res = isl::union_map::drop_unused_params(); return typed::union_map>(res); } template typed::union_map> typed::union_map>::empty(const isl::ctx &ctx) { auto res = isl::union_map::empty(ctx); return typed::union_map>(res); } template bool typed::union_map>::every_map(const std::function>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map>(arg0)); }; return isl::union_map::every_map(lambda_test); } template typed::map> typed::union_map>::extract_map(const typed::space> &space) const { auto res = isl::union_map::extract_map(space); return typed::map>(res); } template void typed::union_map>::foreach_map(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map>(arg0)); }; return isl::union_map::foreach_map(lambda_fn); } template typed::union_map> typed::union_map>::gist(const typed::union_map> &context) const { auto res = isl::union_map::gist(context); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist(const typed::basic_map> &context) const { auto res = isl::union_map::gist(context); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist(const typed::map> &context) const { auto res = isl::union_map::gist(context); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_domain(const typed::union_set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_domain(const typed::basic_set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_domain(const typed::point &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_domain(const typed::set &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_params(const typed::set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map>(res); } template typed::union_map> typed::union_map>::gist_params(const typed::point<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect(const typed::union_map> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect(const typed::basic_map> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect(const typed::map> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_domain(const typed::space &space) const { auto res = isl::union_map::intersect_domain(space); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_domain(const typed::union_set &uset) const { auto res = isl::union_map::intersect_domain(uset); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_params(const typed::set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_params(const typed::point<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_range(const typed::space> &space) const { auto res = isl::union_map::intersect_range(space); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_range(const typed::union_set> &uset) const { auto res = isl::union_map::intersect_range(uset); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_range_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_range_wrapped_domain(const typed::point &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map>(res); } template typed::union_map> typed::union_map>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map>(res); } template typed::union_map> typed::union_map>::lexmax() const { auto res = isl::union_map::lexmax(); return typed::union_map>(res); } template typed::union_map> typed::union_map>::lexmin() const { auto res = isl::union_map::lexmin(); return typed::union_map>(res); } template typed::map_list> typed::union_map>::map_list() const { auto res = isl::union_map::map_list(); return typed::map_list>(res); } template typed::set<> typed::union_map>::params() const { auto res = isl::union_map::params(); return typed::set<>(res); } template template typed::union_map> typed::union_map>::preimage_domain(const typed::multi_aff &ma) const { auto res = isl::union_map::preimage_domain(ma); return typed::union_map>(res); } template template typed::union_map> typed::union_map>::preimage_domain(const typed::multi_pw_aff &mpa) const { auto res = isl::union_map::preimage_domain(mpa); return typed::union_map>(res); } template template typed::union_map> typed::union_map>::preimage_domain(const typed::pw_multi_aff &pma) const { auto res = isl::union_map::preimage_domain(pma); return typed::union_map>(res); } template template typed::union_map> typed::union_map>::preimage_domain(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_map::preimage_domain(upma); return typed::union_map>(res); } template template typed::union_map typed::union_map>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::union_map::preimage_range(ma); return typed::union_map(res); } template template typed::union_map typed::union_map>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::union_map::preimage_range(pma); return typed::union_map(res); } template template typed::union_map typed::union_map>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_map::preimage_range(upma); return typed::union_map(res); } template template typed::union_map, pair, Arg3>> typed::union_map>::product(const typed::union_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair, Arg3>>(res); } template template typed::union_map, pair, Arg3>> typed::union_map>::product(const typed::basic_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair, Arg3>>(res); } template template typed::union_map, pair, Arg3>> typed::union_map>::product(const typed::map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, pair, Arg3>>(res); } template typed::union_map> typed::union_map>::project_out_all_params() const { auto res = isl::union_map::project_out_all_params(); return typed::union_map>(res); } template typed::union_map> typed::union_map>::project_out_param(const typed::id &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map>(res); } template typed::union_map> typed::union_map>::project_out_param(const std::string &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map>(res); } template typed::union_map> typed::union_map>::project_out_param(const typed::id_list &list) const { auto res = isl::union_map::project_out_param(list); return typed::union_map>(res); } template typed::union_set> typed::union_map>::range() const { auto res = isl::union_map::range(); return typed::union_set>(res); } template typed::union_map typed::union_map>::range_factor_domain() const { auto res = isl::union_map::range_factor_domain(); return typed::union_map(res); } template typed::union_map typed::union_map>::range_factor_range() const { auto res = isl::union_map::range_factor_range(); return typed::union_map(res); } template typed::union_map>, pair> typed::union_map>::range_map() const { auto res = isl::union_map::range_map(); return typed::union_map>, pair>(res); } template template typed::union_map, Arg3>> typed::union_map>::range_product(const typed::union_map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, Arg3>>(res); } template template typed::union_map, Arg3>> typed::union_map>::range_product(const typed::basic_map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, Arg3>>(res); } template template typed::union_map, Arg3>> typed::union_map>::range_product(const typed::map &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, Arg3>>(res); } template typed::union_map> typed::union_map>::range_reverse() const { auto res = isl::union_map::range_reverse(); return typed::union_map>(res); } template typed::union_map, Domain> typed::union_map>::reverse() const { auto res = isl::union_map::reverse(); return typed::union_map, Domain>(res); } template typed::space<> typed::union_map>::space() const { auto res = isl::union_map::space(); return typed::space<>(res); } template typed::union_map> typed::union_map>::subtract(const typed::union_map> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract(const typed::basic_map> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract(const typed::map> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_domain(const typed::union_set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_domain(const typed::basic_set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_domain(const typed::point &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_domain(const typed::set &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_range(const typed::union_set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_range(const typed::basic_set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_range(const typed::point> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map>(res); } template typed::union_map> typed::union_map>::subtract_range(const typed::set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map>(res); } template typed::union_map, Range2> typed::union_map>::uncurry() const { auto res = isl::union_map::uncurry(); return typed::union_map, Range2>(res); } template typed::union_map> typed::union_map>::unite(const typed::union_map> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::unite(const typed::basic_map> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::unite(const typed::map> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map>(res); } template typed::union_map> typed::union_map>::universe() const { auto res = isl::union_map::universe(); return typed::union_map>(res); } template typed::union_set>> typed::union_map>::wrap() const { auto res = isl::union_map::wrap(); return typed::union_set>>(res); } template typed::union_map, pair>::union_map(const typed::basic_map, pair> &bmap) : isl::union_map(bmap) { } template typed::union_map, pair>::union_map(const typed::map, pair> &map) : isl::union_map(map) { } template typed::union_map, pair>::union_map(const isl::ctx &ctx, const std::string &str) : isl::union_map(ctx, str) { } template template typed::union_map> typed::union_map, pair>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::apply_domain(const typed::basic_map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::apply_domain(const typed::map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map, Range2> typed::union_map, pair>::apply_range(const typed::union_map, Range2> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Range2>(res); } template template typed::union_map, Range2> typed::union_map, pair>::apply_range(const typed::basic_map, Range2> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Range2>(res); } template template typed::union_map, Range2> typed::union_map, pair>::apply_range(const typed::map, Range2> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Range2>(res); } template typed::map, pair> typed::union_map, pair>::as_map() const { auto res = isl::union_map::as_map(); return typed::map, pair>(res); } template typed::multi_union_pw_aff, pair> typed::union_map, pair>::as_multi_union_pw_aff() const { auto res = isl::union_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_map, pair>::as_union_pw_multi_aff() const { auto res = isl::union_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::union_set> typed::union_map, pair>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::union_map::bind_range(tuple); return typed::union_set>(res); } template typed::union_map, pair> typed::union_map, pair>::coalesce() const { auto res = isl::union_map::coalesce(); return typed::union_map, pair>(res); } template typed::union_map>> typed::union_map, pair>::curry() const { auto res = isl::union_map::curry(); return typed::union_map>>(res); } template typed::union_set> typed::union_map, pair>::deltas() const { auto res = isl::union_map::deltas(); return typed::union_set>(res); } template typed::union_map, pair> typed::union_map, pair>::detect_equalities() const { auto res = isl::union_map::detect_equalities(); return typed::union_map, pair>(res); } template typed::union_set> typed::union_map, pair>::domain() const { auto res = isl::union_map::domain(); return typed::union_set>(res); } template typed::union_map> typed::union_map, pair>::domain_factor_domain() const { auto res = isl::union_map::domain_factor_domain(); return typed::union_map>(res); } template typed::union_map> typed::union_map, pair>::domain_factor_range() const { auto res = isl::union_map::domain_factor_range(); return typed::union_map>(res); } template typed::union_map, pair>, pair> typed::union_map, pair>::domain_map() const { auto res = isl::union_map::domain_map(); return typed::union_map, pair>, pair>(res); } template typed::union_pw_multi_aff, pair>, pair> typed::union_map, pair>::domain_map_union_pw_multi_aff() const { auto res = isl::union_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, pair>::domain_product(const typed::union_map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, pair>::domain_product(const typed::basic_map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, pair>::domain_product(const typed::map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::domain_reverse() const { auto res = isl::union_map::domain_reverse(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::drop_unused_params() const { auto res = isl::union_map::drop_unused_params(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::empty(const isl::ctx &ctx) { auto res = isl::union_map::empty(ctx); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map, pair>::eq_at(const typed::multi_union_pw_aff, Range> &mupa) const { auto res = isl::union_map::eq_at(mupa); return typed::union_map, pair>(res); } template template typed::union_map, pair> typed::union_map, pair>::eq_at(const typed::multi_pw_aff, Range> &mupa) const { auto res = isl::union_map::eq_at(mupa); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::eq_at(const typed::union_pw_aff, Anonymous> &mupa) const { auto res = isl::union_map::eq_at(mupa); return typed::union_map, pair>(res); } template bool typed::union_map, pair>::every_map(const std::function, pair>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, pair>(arg0)); }; return isl::union_map::every_map(lambda_test); } template typed::map, pair> typed::union_map, pair>::extract_map(const typed::space, pair> &space) const { auto res = isl::union_map::extract_map(space); return typed::map, pair>(res); } template void typed::union_map, pair>::foreach_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, pair>(arg0)); }; return isl::union_map::foreach_map(lambda_fn); } template typed::union_map, pair> typed::union_map, pair>::gist(const typed::union_map, pair> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist(const typed::basic_map, pair> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist(const typed::map, pair> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::union_set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::basic_set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::point> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_params(const typed::set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_params(const typed::point<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect(const typed::union_map, pair> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect(const typed::basic_map, pair> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect(const typed::map, pair> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::union_map::intersect_domain(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::union_map::intersect_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::point &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_params(const typed::set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_params(const typed::point<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range(const typed::space> &space) const { auto res = isl::union_map::intersect_range(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range(const typed::union_set> &uset) const { auto res = isl::union_map::intersect_range(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::point &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::lexmax() const { auto res = isl::union_map::lexmax(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::lexmin() const { auto res = isl::union_map::lexmin(); return typed::union_map, pair>(res); } template typed::map_list, pair> typed::union_map, pair>::map_list() const { auto res = isl::union_map::map_list(); return typed::map_list, pair>(res); } template typed::set<> typed::union_map, pair>::params() const { auto res = isl::union_map::params(); return typed::set<>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::union_map::preimage_domain(ma); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::union_map::preimage_domain(mpa); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::union_map::preimage_domain(pma); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_map::preimage_domain(upma); return typed::union_map>(res); } template template typed::union_map, Range2> typed::union_map, pair>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::union_map::preimage_range(ma); return typed::union_map, Range2>(res); } template template typed::union_map, Range2> typed::union_map, pair>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::union_map::preimage_range(pma); return typed::union_map, Range2>(res); } template template typed::union_map, Range2> typed::union_map, pair>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_map::preimage_range(upma); return typed::union_map, Range2>(res); } template template typed::union_map, Domain2>, pair, Range2>> typed::union_map, pair>::product(const typed::union_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair, Range2>>(res); } template template typed::union_map, Domain2>, pair, Range2>> typed::union_map, pair>::product(const typed::basic_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair, Range2>>(res); } template template typed::union_map, Domain2>, pair, Range2>> typed::union_map, pair>::product(const typed::map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair, Range2>>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_all_params() const { auto res = isl::union_map::project_out_all_params(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_param(const typed::id &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_param(const std::string &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_param(const typed::id_list &list) const { auto res = isl::union_map::project_out_param(list); return typed::union_map, pair>(res); } template typed::union_set> typed::union_map, pair>::range() const { auto res = isl::union_map::range(); return typed::union_set>(res); } template typed::union_map, T1> typed::union_map, pair>::range_factor_domain() const { auto res = isl::union_map::range_factor_domain(); return typed::union_map, T1>(res); } template typed::union_map, T2> typed::union_map, pair>::range_factor_range() const { auto res = isl::union_map::range_factor_range(); return typed::union_map, T2>(res); } template typed::union_map, pair>, pair> typed::union_map, pair>::range_map() const { auto res = isl::union_map::range_map(); return typed::union_map, pair>, pair>(res); } template template typed::union_map, pair, Range2>> typed::union_map, pair>::range_product(const typed::union_map, Range2> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair, Range2>>(res); } template template typed::union_map, pair, Range2>> typed::union_map, pair>::range_product(const typed::basic_map, Range2> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair, Range2>>(res); } template template typed::union_map, pair, Range2>> typed::union_map, pair>::range_product(const typed::map, Range2> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair, Range2>>(res); } template typed::union_map, pair> typed::union_map, pair>::range_reverse() const { auto res = isl::union_map::range_reverse(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::reverse() const { auto res = isl::union_map::reverse(); return typed::union_map, pair>(res); } template typed::space<> typed::union_map, pair>::space() const { auto res = isl::union_map::space(); return typed::space<>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract(const typed::union_map, pair> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract(const typed::basic_map, pair> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract(const typed::map, pair> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::basic_set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::point> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::union_set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::basic_set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::point> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, T1>, T2> typed::union_map, pair>::uncurry() const { auto res = isl::union_map::uncurry(); return typed::union_map, T1>, T2>(res); } template typed::union_map, pair> typed::union_map, pair>::unite(const typed::union_map, pair> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::unite(const typed::basic_map, pair> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::unite(const typed::map, pair> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::universe() const { auto res = isl::union_map::universe(); return typed::union_map, pair>(res); } template typed::union_set, pair>> typed::union_map, pair>::wrap() const { auto res = isl::union_map::wrap(); return typed::union_set, pair>>(res); } template typed::union_map, pair>::union_map(const typed::basic_map, pair> &bmap) : isl::union_map(bmap) { } template typed::union_map, pair>::union_map(const typed::map, pair> &map) : isl::union_map(map) { } template typed::union_map, pair>::union_map(const isl::ctx &ctx, const std::string &str) : isl::union_map(ctx, str) { } template template typed::union_map> typed::union_map, pair>::apply_domain(const typed::union_map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::apply_domain(const typed::basic_map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::apply_domain(const typed::map, Domain2> &umap2) const { auto res = isl::union_map::apply_domain(umap2); return typed::union_map>(res); } template template typed::union_map, Arg2> typed::union_map, pair>::apply_range(const typed::union_map, Arg2> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Arg2>(res); } template template typed::union_map, Arg2> typed::union_map, pair>::apply_range(const typed::basic_map, Arg2> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Arg2>(res); } template template typed::union_map, Arg2> typed::union_map, pair>::apply_range(const typed::map, Arg2> &umap2) const { auto res = isl::union_map::apply_range(umap2); return typed::union_map, Arg2>(res); } template typed::map, pair> typed::union_map, pair>::as_map() const { auto res = isl::union_map::as_map(); return typed::map, pair>(res); } template typed::multi_union_pw_aff, pair> typed::union_map, pair>::as_multi_union_pw_aff() const { auto res = isl::union_map::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_map, pair>::as_union_pw_multi_aff() const { auto res = isl::union_map::as_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>(res); } template typed::union_set> typed::union_map, pair>::bind_range(const typed::multi_id> &tuple) const { auto res = isl::union_map::bind_range(tuple); return typed::union_set>(res); } template typed::union_map, pair> typed::union_map, pair>::coalesce() const { auto res = isl::union_map::coalesce(); return typed::union_map, pair>(res); } template typed::union_map>> typed::union_map, pair>::curry() const { auto res = isl::union_map::curry(); return typed::union_map>>(res); } template typed::union_map, pair> typed::union_map, pair>::detect_equalities() const { auto res = isl::union_map::detect_equalities(); return typed::union_map, pair>(res); } template typed::union_set> typed::union_map, pair>::domain() const { auto res = isl::union_map::domain(); return typed::union_set>(res); } template typed::union_map> typed::union_map, pair>::domain_factor_domain() const { auto res = isl::union_map::domain_factor_domain(); return typed::union_map>(res); } template typed::union_map> typed::union_map, pair>::domain_factor_range() const { auto res = isl::union_map::domain_factor_range(); return typed::union_map>(res); } template typed::union_map, pair>, pair> typed::union_map, pair>::domain_map() const { auto res = isl::union_map::domain_map(); return typed::union_map, pair>, pair>(res); } template typed::union_pw_multi_aff, pair>, pair> typed::union_map, pair>::domain_map_union_pw_multi_aff() const { auto res = isl::union_map::domain_map_union_pw_multi_aff(); return typed::union_pw_multi_aff, pair>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, pair>::domain_product(const typed::union_map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, pair>::domain_product(const typed::basic_map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template template typed::union_map, Domain2>, pair> typed::union_map, pair>::domain_product(const typed::map> &umap2) const { auto res = isl::union_map::domain_product(umap2); return typed::union_map, Domain2>, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::domain_reverse() const { auto res = isl::union_map::domain_reverse(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::drop_unused_params() const { auto res = isl::union_map::drop_unused_params(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::empty(const isl::ctx &ctx) { auto res = isl::union_map::empty(ctx); return typed::union_map, pair>(res); } template bool typed::union_map, pair>::every_map(const std::function, pair>)> &test) const { auto lambda_test = [&] (isl::map arg0) { return test(typed::map, pair>(arg0)); }; return isl::union_map::every_map(lambda_test); } template typed::map, pair> typed::union_map, pair>::extract_map(const typed::space, pair> &space) const { auto res = isl::union_map::extract_map(space); return typed::map, pair>(res); } template void typed::union_map, pair>::foreach_map(const std::function, pair>)> &fn) const { auto lambda_fn = [&] (isl::map arg0) { return fn(typed::map, pair>(arg0)); }; return isl::union_map::foreach_map(lambda_fn); } template typed::union_map, pair> typed::union_map, pair>::gist(const typed::union_map, pair> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist(const typed::basic_map, pair> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist(const typed::map, pair> &context) const { auto res = isl::union_map::gist(context); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::union_set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::basic_set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::point> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_domain(const typed::set> &uset) const { auto res = isl::union_map::gist_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_params(const typed::set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::gist_params(const typed::point<> &set) const { auto res = isl::union_map::gist_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect(const typed::union_map, pair> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect(const typed::basic_map, pair> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect(const typed::map, pair> &umap2) const { auto res = isl::union_map::intersect(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::union_map::intersect_domain(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::union_map::intersect_domain(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::union_set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::point &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_domain_wrapped_domain(const typed::set &domain) const { auto res = isl::union_map::intersect_domain_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_params(const typed::set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_params(const typed::point<> &set) const { auto res = isl::union_map::intersect_params(set); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range(const typed::space> &space) const { auto res = isl::union_map::intersect_range(space); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range(const typed::union_set> &uset) const { auto res = isl::union_map::intersect_range(uset); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::union_set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::basic_set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::point &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::intersect_range_wrapped_domain(const typed::set &domain) const { auto res = isl::union_map::intersect_range_wrapped_domain(domain); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::lexmax() const { auto res = isl::union_map::lexmax(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::lexmin() const { auto res = isl::union_map::lexmin(); return typed::union_map, pair>(res); } template typed::map_list, pair> typed::union_map, pair>::map_list() const { auto res = isl::union_map::map_list(); return typed::map_list, pair>(res); } template typed::set<> typed::union_map, pair>::params() const { auto res = isl::union_map::params(); return typed::set<>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::multi_aff> &ma) const { auto res = isl::union_map::preimage_domain(ma); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::multi_pw_aff> &mpa) const { auto res = isl::union_map::preimage_domain(mpa); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::pw_multi_aff> &pma) const { auto res = isl::union_map::preimage_domain(pma); return typed::union_map>(res); } template template typed::union_map> typed::union_map, pair>::preimage_domain(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_map::preimage_domain(upma); return typed::union_map>(res); } template template typed::union_map, Arg2> typed::union_map, pair>::preimage_range(const typed::multi_aff> &ma) const { auto res = isl::union_map::preimage_range(ma); return typed::union_map, Arg2>(res); } template template typed::union_map, Arg2> typed::union_map, pair>::preimage_range(const typed::pw_multi_aff> &pma) const { auto res = isl::union_map::preimage_range(pma); return typed::union_map, Arg2>(res); } template template typed::union_map, Arg2> typed::union_map, pair>::preimage_range(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_map::preimage_range(upma); return typed::union_map, Arg2>(res); } template template typed::union_map, Domain2>, pair, Arg2>> typed::union_map, pair>::product(const typed::union_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair, Arg2>>(res); } template template typed::union_map, Domain2>, pair, Arg2>> typed::union_map, pair>::product(const typed::basic_map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair, Arg2>>(res); } template template typed::union_map, Domain2>, pair, Arg2>> typed::union_map, pair>::product(const typed::map &umap2) const { auto res = isl::union_map::product(umap2); return typed::union_map, Domain2>, pair, Arg2>>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_all_params() const { auto res = isl::union_map::project_out_all_params(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_param(const typed::id &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_param(const std::string &id) const { auto res = isl::union_map::project_out_param(id); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::project_out_param(const typed::id_list &list) const { auto res = isl::union_map::project_out_param(list); return typed::union_map, pair>(res); } template typed::union_set> typed::union_map, pair>::range() const { auto res = isl::union_map::range(); return typed::union_set>(res); } template typed::union_map, Range> typed::union_map, pair>::range_factor_domain() const { auto res = isl::union_map::range_factor_domain(); return typed::union_map, Range>(res); } template typed::union_map, Range2> typed::union_map, pair>::range_factor_range() const { auto res = isl::union_map::range_factor_range(); return typed::union_map, Range2>(res); } template typed::union_map, pair>, pair> typed::union_map, pair>::range_map() const { auto res = isl::union_map::range_map(); return typed::union_map, pair>, pair>(res); } template template typed::union_map, pair, Arg2>> typed::union_map, pair>::range_product(const typed::union_map, Arg2> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair, Arg2>>(res); } template template typed::union_map, pair, Arg2>> typed::union_map, pair>::range_product(const typed::basic_map, Arg2> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair, Arg2>>(res); } template template typed::union_map, pair, Arg2>> typed::union_map, pair>::range_product(const typed::map, Arg2> &umap2) const { auto res = isl::union_map::range_product(umap2); return typed::union_map, pair, Arg2>>(res); } template typed::union_map, pair> typed::union_map, pair>::range_reverse() const { auto res = isl::union_map::range_reverse(); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::reverse() const { auto res = isl::union_map::reverse(); return typed::union_map, pair>(res); } template typed::space<> typed::union_map, pair>::space() const { auto res = isl::union_map::space(); return typed::space<>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract(const typed::union_map, pair> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract(const typed::basic_map, pair> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract(const typed::map, pair> &umap2) const { auto res = isl::union_map::subtract(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::union_set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::basic_set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::point> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_domain(const typed::set> &dom) const { auto res = isl::union_map::subtract_domain(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::union_set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::basic_set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::point> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::subtract_range(const typed::set> &dom) const { auto res = isl::union_map::subtract_range(dom); return typed::union_map, pair>(res); } template typed::union_map, Range>, Range2> typed::union_map, pair>::uncurry() const { auto res = isl::union_map::uncurry(); return typed::union_map, Range>, Range2>(res); } template typed::union_map, pair> typed::union_map, pair>::unite(const typed::union_map, pair> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::unite(const typed::basic_map, pair> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::unite(const typed::map, pair> &umap2) const { auto res = isl::union_map::unite(umap2); return typed::union_map, pair>(res); } template typed::union_map, pair> typed::union_map, pair>::universe() const { auto res = isl::union_map::universe(); return typed::union_map, pair>(res); } template typed::union_set, pair>> typed::union_map, pair>::wrap() const { auto res = isl::union_map::wrap(); return typed::union_set, pair>>(res); } typed::union_pw_aff::union_pw_aff(const typed::aff &aff) : isl::union_pw_aff(aff) { } typed::union_pw_aff::union_pw_aff(const typed::pw_aff &pa) : isl::union_pw_aff(pa) { } typed::union_pw_aff::union_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_aff(ctx, str) { } typed::multi_union_pw_aff typed::union_pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::add(const typed::union_pw_aff &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::union_pw_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::add(upma2); return typed::union_pw_multi_aff(res); } typed::union_pw_aff typed::union_pw_aff::add(const typed::aff &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::add(const typed::pw_aff &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::union_pw_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::apply(upma2); return typed::union_pw_multi_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::as_multi_union_pw_aff() const { auto res = isl::union_pw_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } typed::pw_multi_aff typed::union_pw_aff::as_pw_multi_aff() const { auto res = isl::union_pw_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::union_pw_aff::at(int pos) const { auto res = isl::union_pw_aff::at(pos); return typed::union_pw_aff(res); } typed::union_set<> typed::union_pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::union_pw_aff::bind(tuple); return typed::union_set<>(res); } typed::union_set<> typed::union_pw_aff::bind(const typed::id &id) const { auto res = isl::union_pw_aff::bind(id); return typed::union_set<>(res); } typed::union_set<> typed::union_pw_aff::bind(const std::string &id) const { auto res = isl::union_pw_aff::bind(id); return typed::union_set<>(res); } typed::union_pw_aff typed::union_pw_aff::coalesce() const { auto res = isl::union_pw_aff::coalesce(); return typed::union_pw_aff(res); } typed::union_set<> typed::union_pw_aff::domain() const { auto res = isl::union_pw_aff::domain(); return typed::union_set<>(res); } typed::union_pw_aff typed::union_pw_aff::drop_unused_params() const { auto res = isl::union_pw_aff::drop_unused_params(); return typed::union_pw_aff(res); } typed::pw_multi_aff typed::union_pw_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::union_pw_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } typed::union_pw_aff typed::union_pw_aff::gist(const typed::union_set<> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::gist(const typed::basic_set<> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::gist(const typed::point<> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::gist(const typed::set<> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::gist_params(const typed::set<> &context) const { auto res = isl::union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff(res); } typed::union_pw_aff_list typed::union_pw_aff::list() const { auto res = isl::union_pw_aff::list(); return typed::union_pw_aff_list(res); } typed::multi_union_pw_aff typed::union_pw_aff::neg() const { auto res = isl::union_pw_aff::neg(); return typed::multi_union_pw_aff(res); } typed::pw_multi_aff_list typed::union_pw_aff::pw_multi_aff_list() const { auto res = isl::union_pw_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } typed::multi_union_pw_aff typed::union_pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::union_pw_aff::scale(mv); return typed::multi_union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::scale(const typed::val &v) const { auto res = isl::union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::scale(long v) const { auto res = isl::union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::union_pw_aff::scale_down(mv); return typed::multi_union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::scale_down(const typed::val &v) const { auto res = isl::union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::scale_down(long v) const { auto res = isl::union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::union_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } typed::space<> typed::union_pw_aff::space() const { auto res = isl::union_pw_aff::space(); return typed::space<>(res); } typed::multi_union_pw_aff typed::union_pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::sub(const typed::union_pw_aff &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::union_pw_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::sub(upma2); return typed::union_pw_multi_aff(res); } typed::union_pw_aff typed::union_pw_aff::sub(const typed::aff &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::sub(const typed::pw_aff &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff(res); } typed::multi_union_pw_aff typed::union_pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::union_add(const typed::union_pw_aff &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff(res); } typed::union_pw_multi_aff typed::union_pw_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } typed::union_pw_aff typed::union_pw_aff::union_add(const typed::aff &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff(res); } typed::union_pw_aff typed::union_pw_aff::union_add(const typed::pw_aff &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_aff::union_pw_aff(const typed::aff &aff) : isl::union_pw_aff(aff) { } template typed::union_pw_aff::union_pw_aff(const typed::pw_aff &pa) : isl::union_pw_aff(pa) { } template typed::union_pw_aff::union_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_aff(ctx, str) { } template typed::multi_union_pw_aff typed::union_pw_aff::add(const typed::multi_union_pw_aff &multi2) const { auto res = isl::union_pw_aff::add(multi2); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::add(const typed::union_pw_aff &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::union_pw_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_aff typed::union_pw_aff::add(const typed::aff &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::add(const typed::pw_aff &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::as_multi_union_pw_aff() const { auto res = isl::union_pw_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::union_pw_aff::as_pw_multi_aff() const { auto res = isl::union_pw_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_map typed::union_pw_aff::as_union_map() const { auto res = isl::union_pw_aff::as_union_map(); return typed::union_map(res); } template typed::union_pw_aff typed::union_pw_aff::at(int pos) const { auto res = isl::union_pw_aff::at(pos); return typed::union_pw_aff(res); } template typed::union_set typed::union_pw_aff::bind(const typed::multi_id &tuple) const { auto res = isl::union_pw_aff::bind(tuple); return typed::union_set(res); } template typed::union_set typed::union_pw_aff::bind(const typed::id &id) const { auto res = isl::union_pw_aff::bind(id); return typed::union_set(res); } template typed::union_set typed::union_pw_aff::bind(const std::string &id) const { auto res = isl::union_pw_aff::bind(id); return typed::union_set(res); } template typed::union_pw_aff typed::union_pw_aff::coalesce() const { auto res = isl::union_pw_aff::coalesce(); return typed::union_pw_aff(res); } template typed::union_set typed::union_pw_aff::domain() const { auto res = isl::union_pw_aff::domain(); return typed::union_set(res); } template typed::union_pw_aff typed::union_pw_aff::drop_unused_params() const { auto res = isl::union_pw_aff::drop_unused_params(); return typed::union_pw_aff(res); } template typed::pw_multi_aff typed::union_pw_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::union_pw_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::union_pw_aff typed::union_pw_aff::gist(const typed::union_set &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::gist(const typed::basic_set &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::gist(const typed::point &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::gist(const typed::set &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::gist_params(const typed::set<> &context) const { auto res = isl::union_pw_aff::gist_params(context); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::intersect_domain(const typed::space &space) const { auto res = isl::union_pw_aff::intersect_domain(space); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::union_pw_aff::intersect_domain(uset); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff(res); } template typed::union_pw_aff_list typed::union_pw_aff::list() const { auto res = isl::union_pw_aff::list(); return typed::union_pw_aff_list(res); } template typed::multi_union_pw_aff typed::union_pw_aff::neg() const { auto res = isl::union_pw_aff::neg(); return typed::multi_union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::multi_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::multi_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::pw_multi_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::pw_multi_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::union_pw_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::pullback(const typed::union_pw_aff &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::pw_multi_aff_list typed::union_pw_aff::pw_multi_aff_list() const { auto res = isl::union_pw_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template template typed::multi_union_pw_aff> typed::union_pw_aff::range_product(const typed::multi_union_pw_aff &multi2) const { auto res = isl::union_pw_aff::range_product(multi2); return typed::multi_union_pw_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_aff::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template typed::multi_union_pw_aff typed::union_pw_aff::scale(const typed::multi_val &mv) const { auto res = isl::union_pw_aff::scale(mv); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::scale(const typed::val &v) const { auto res = isl::union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::scale(long v) const { auto res = isl::union_pw_aff::scale(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::scale_down(const typed::multi_val &mv) const { auto res = isl::union_pw_aff::scale_down(mv); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::scale_down(const typed::val &v) const { auto res = isl::union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::scale_down(long v) const { auto res = isl::union_pw_aff::scale_down(v); return typed::multi_union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::set_at(int pos, const typed::union_pw_aff &el) const { auto res = isl::union_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::union_pw_aff::set_range_tuple(const typed::id &id) const { auto res = isl::union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template template typed::multi_union_pw_aff typed::union_pw_aff::set_range_tuple(const std::string &id) const { auto res = isl::union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff(res); } template typed::space<> typed::union_pw_aff::space() const { auto res = isl::union_pw_aff::space(); return typed::space<>(res); } template typed::multi_union_pw_aff typed::union_pw_aff::sub(const typed::multi_union_pw_aff &multi2) const { auto res = isl::union_pw_aff::sub(multi2); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::sub(const typed::union_pw_aff &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::union_pw_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_aff typed::union_pw_aff::sub(const typed::aff &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::sub(const typed::pw_aff &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::subtract_domain(const typed::space &space) const { auto res = isl::union_pw_aff::subtract_domain(space); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::subtract_domain(const typed::union_set &uset) const { auto res = isl::union_pw_aff::subtract_domain(uset); return typed::union_pw_aff(res); } template typed::multi_union_pw_aff typed::union_pw_aff::union_add(const typed::multi_union_pw_aff &mupa2) const { auto res = isl::union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::union_add(const typed::union_pw_aff &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_multi_aff typed::union_pw_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_aff typed::union_pw_aff::union_add(const typed::aff &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff::union_add(const typed::pw_aff &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff(res); } template typed::union_pw_aff, Anonymous>::union_pw_aff(const typed::aff, Anonymous> &aff) : isl::union_pw_aff(aff) { } template typed::union_pw_aff, Anonymous>::union_pw_aff(const typed::pw_aff, Anonymous> &pa) : isl::union_pw_aff(pa) { } template typed::union_pw_aff, Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_aff(ctx, str) { } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::add(const typed::multi_union_pw_aff, Anonymous> &multi2) const { auto res = isl::union_pw_aff::add(multi2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::add(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::union_pw_aff, Anonymous>::add(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::union_pw_aff::add(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::add(const typed::aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::add(const typed::pw_aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::add(upa2); return typed::union_pw_aff, Anonymous>(res); } template template typed::union_pw_multi_aff, Range2> typed::union_pw_aff, Anonymous>::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::apply(upma2); return typed::union_pw_multi_aff, Range2>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::as_multi_union_pw_aff() const { auto res = isl::union_pw_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::union_pw_aff, Anonymous>::as_pw_multi_aff() const { auto res = isl::union_pw_aff::as_pw_multi_aff(); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_map, Anonymous> typed::union_pw_aff, Anonymous>::as_union_map() const { auto res = isl::union_pw_aff::as_union_map(); return typed::union_map, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::at(int pos) const { auto res = isl::union_pw_aff::at(pos); return typed::union_pw_aff, Anonymous>(res); } template typed::union_set> typed::union_pw_aff, Anonymous>::bind(const typed::multi_id &tuple) const { auto res = isl::union_pw_aff::bind(tuple); return typed::union_set>(res); } template typed::union_set> typed::union_pw_aff, Anonymous>::bind(const typed::id &id) const { auto res = isl::union_pw_aff::bind(id); return typed::union_set>(res); } template typed::union_set> typed::union_pw_aff, Anonymous>::bind(const std::string &id) const { auto res = isl::union_pw_aff::bind(id); return typed::union_set>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::coalesce() const { auto res = isl::union_pw_aff::coalesce(); return typed::union_pw_aff, Anonymous>(res); } template typed::union_set> typed::union_pw_aff, Anonymous>::domain() const { auto res = isl::union_pw_aff::domain(); return typed::union_set>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::drop_unused_params() const { auto res = isl::union_pw_aff::drop_unused_params(); return typed::union_pw_aff, Anonymous>(res); } template typed::pw_multi_aff, Anonymous> typed::union_pw_aff, Anonymous>::extract_pw_multi_aff(const typed::space, Anonymous> &space) const { auto res = isl::union_pw_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::gist(const typed::union_set> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::gist(const typed::basic_set> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::gist(const typed::point> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::gist(const typed::set> &context) const { auto res = isl::union_pw_aff::gist(context); return typed::union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::gist_params(const typed::set<> &context) const { auto res = isl::union_pw_aff::gist_params(context); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_domain(const typed::space> &space) const { auto res = isl::union_pw_aff::intersect_domain(space); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::union_pw_aff::intersect_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_domain_wrapped_domain(const typed::basic_set &uset) const { auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_domain_wrapped_domain(const typed::point &uset) const { auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_domain_wrapped_domain(const typed::set &uset) const { auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_aff::intersect_params(set); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff_list, Anonymous> typed::union_pw_aff, Anonymous>::list() const { auto res = isl::union_pw_aff::list(); return typed::union_pw_aff_list, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::neg() const { auto res = isl::union_pw_aff::neg(); return typed::multi_union_pw_aff, Anonymous>(res); } template template typed::union_pw_multi_aff, Anonymous> typed::union_pw_aff, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::multi_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::multi_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::pw_multi_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::pw_multi_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::union_pw_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::union_pw_aff typed::union_pw_aff, Anonymous>::pullback(const typed::union_pw_aff> &upma) const { auto res = isl::union_pw_aff::pullback(upma); return typed::union_pw_aff(res); } template typed::pw_multi_aff_list, Anonymous> typed::union_pw_aff, Anonymous>::pw_multi_aff_list() const { auto res = isl::union_pw_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, Anonymous>(res); } template template typed::multi_union_pw_aff, pair> typed::union_pw_aff, Anonymous>::range_product(const typed::multi_union_pw_aff, Range2> &multi2) const { auto res = isl::union_pw_aff::range_product(multi2); return typed::multi_union_pw_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_aff, Anonymous>::range_product(const typed::union_pw_multi_aff, Range2> &upma2) const { auto res = isl::union_pw_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::scale(const typed::multi_val &mv) const { auto res = isl::union_pw_aff::scale(mv); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::scale(const typed::val &v) const { auto res = isl::union_pw_aff::scale(v); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::scale(long v) const { auto res = isl::union_pw_aff::scale(v); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::scale_down(const typed::multi_val &mv) const { auto res = isl::union_pw_aff::scale_down(mv); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::scale_down(const typed::val &v) const { auto res = isl::union_pw_aff::scale_down(v); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::scale_down(long v) const { auto res = isl::union_pw_aff::scale_down(v); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::set_at(int pos, const typed::union_pw_aff, Anonymous> &el) const { auto res = isl::union_pw_aff::set_at(pos, el); return typed::multi_union_pw_aff, Anonymous>(res); } template template typed::multi_union_pw_aff, Range2> typed::union_pw_aff, Anonymous>::set_range_tuple(const typed::id &id) const { auto res = isl::union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff, Range2>(res); } template template typed::multi_union_pw_aff, Range2> typed::union_pw_aff, Anonymous>::set_range_tuple(const std::string &id) const { auto res = isl::union_pw_aff::set_range_tuple(id); return typed::multi_union_pw_aff, Range2>(res); } template typed::space<> typed::union_pw_aff, Anonymous>::space() const { auto res = isl::union_pw_aff::space(); return typed::space<>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::sub(const typed::multi_union_pw_aff, Anonymous> &multi2) const { auto res = isl::union_pw_aff::sub(multi2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::sub(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::union_pw_aff, Anonymous>::sub(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::union_pw_aff::sub(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::sub(const typed::aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::sub(const typed::pw_aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::sub(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::subtract_domain(const typed::space> &space) const { auto res = isl::union_pw_aff::subtract_domain(space); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::union_pw_aff::subtract_domain(uset); return typed::union_pw_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::union_add(const typed::multi_union_pw_aff, Anonymous> &mupa2) const { auto res = isl::union_pw_aff::union_add(mupa2); return typed::multi_union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::union_add(const typed::union_pw_aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_multi_aff, Anonymous> typed::union_pw_aff, Anonymous>::union_add(const typed::union_pw_multi_aff, Anonymous> &upma2) const { auto res = isl::union_pw_aff::union_add(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::union_add(const typed::aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff, Anonymous>(res); } template typed::union_pw_aff, Anonymous> typed::union_pw_aff, Anonymous>::union_add(const typed::pw_aff, Anonymous> &upa2) const { auto res = isl::union_pw_aff::union_add(upa2); return typed::union_pw_aff, Anonymous>(res); } typed::union_pw_aff_list::union_pw_aff_list(const isl::ctx &ctx, int n) : isl::union_pw_aff_list(ctx, n) { } typed::union_pw_aff_list::union_pw_aff_list(const typed::union_pw_aff &el) : isl::union_pw_aff_list(el) { } typed::union_pw_aff_list::union_pw_aff_list(const isl::ctx &ctx, const std::string &str) : isl::union_pw_aff_list(ctx, str) { } typed::union_pw_aff_list typed::union_pw_aff_list::add(const typed::union_pw_aff &el) const { auto res = isl::union_pw_aff_list::add(el); return typed::union_pw_aff_list(res); } typed::union_pw_aff_list typed::union_pw_aff_list::add(const typed::aff &el) const { auto res = isl::union_pw_aff_list::add(el); return typed::union_pw_aff_list(res); } typed::union_pw_aff_list typed::union_pw_aff_list::add(const typed::pw_aff &el) const { auto res = isl::union_pw_aff_list::add(el); return typed::union_pw_aff_list(res); } typed::union_pw_aff typed::union_pw_aff_list::at(int index) const { auto res = isl::union_pw_aff_list::at(index); return typed::union_pw_aff(res); } typed::union_pw_aff_list typed::union_pw_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::union_pw_aff_list::drop(first, n); return typed::union_pw_aff_list(res); } void typed::union_pw_aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::union_pw_aff arg0) { return fn(typed::union_pw_aff(arg0)); }; return isl::union_pw_aff_list::foreach(lambda_fn); } void typed::union_pw_aff_list::foreach_scc(const std::function, typed::union_pw_aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::union_pw_aff arg0, isl::union_pw_aff arg1) { return follows(typed::union_pw_aff(arg0), typed::union_pw_aff(arg1)); }; auto lambda_fn = [&] (isl::union_pw_aff_list arg0) { return fn(typed::union_pw_aff_list(arg0)); }; return isl::union_pw_aff_list::foreach_scc(lambda_follows, lambda_fn); } typed::union_pw_aff_list typed::union_pw_aff_list::set_at(int index, const typed::union_pw_aff &el) const { auto res = isl::union_pw_aff_list::set_at(index, el); return typed::union_pw_aff_list(res); } template typed::union_pw_aff_list::union_pw_aff_list(const isl::ctx &ctx, int n) : isl::union_pw_aff_list(ctx, n) { } template typed::union_pw_aff_list::union_pw_aff_list(const typed::union_pw_aff &el) : isl::union_pw_aff_list(el) { } template typed::union_pw_aff_list::union_pw_aff_list(const isl::ctx &ctx, const std::string &str) : isl::union_pw_aff_list(ctx, str) { } template typed::union_pw_aff_list typed::union_pw_aff_list::add(const typed::union_pw_aff &el) const { auto res = isl::union_pw_aff_list::add(el); return typed::union_pw_aff_list(res); } template typed::union_pw_aff_list typed::union_pw_aff_list::add(const typed::aff &el) const { auto res = isl::union_pw_aff_list::add(el); return typed::union_pw_aff_list(res); } template typed::union_pw_aff_list typed::union_pw_aff_list::add(const typed::pw_aff &el) const { auto res = isl::union_pw_aff_list::add(el); return typed::union_pw_aff_list(res); } template typed::union_pw_aff typed::union_pw_aff_list::at(int index) const { auto res = isl::union_pw_aff_list::at(index); return typed::union_pw_aff(res); } template typed::union_pw_aff_list typed::union_pw_aff_list::drop(unsigned int first, unsigned int n) const { auto res = isl::union_pw_aff_list::drop(first, n); return typed::union_pw_aff_list(res); } template void typed::union_pw_aff_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::union_pw_aff arg0) { return fn(typed::union_pw_aff(arg0)); }; return isl::union_pw_aff_list::foreach(lambda_fn); } template void typed::union_pw_aff_list::foreach_scc(const std::function, typed::union_pw_aff)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::union_pw_aff arg0, isl::union_pw_aff arg1) { return follows(typed::union_pw_aff(arg0), typed::union_pw_aff(arg1)); }; auto lambda_fn = [&] (isl::union_pw_aff_list arg0) { return fn(typed::union_pw_aff_list(arg0)); }; return isl::union_pw_aff_list::foreach_scc(lambda_follows, lambda_fn); } template typed::union_pw_aff_list typed::union_pw_aff_list::set_at(int index, const typed::union_pw_aff &el) const { auto res = isl::union_pw_aff_list::set_at(index, el); return typed::union_pw_aff_list(res); } template typed::union_pw_multi_aff::union_pw_multi_aff(const typed::multi_aff &ma) : isl::union_pw_multi_aff(ma) { } template typed::union_pw_multi_aff::union_pw_multi_aff(const typed::pw_multi_aff &pma) : isl::union_pw_multi_aff(pma) { } template typed::union_pw_multi_aff::union_pw_multi_aff(const typed::union_pw_aff &upa) : isl::union_pw_multi_aff(upa) { } template typed::union_pw_multi_aff::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_multi_aff(ctx, str) { } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_union_pw_aff typed::union_pw_multi_aff::as_multi_union_pw_aff() const { auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::union_pw_multi_aff::as_pw_multi_aff() const { auto res = isl::union_pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::coalesce() const { auto res = isl::union_pw_multi_aff::coalesce(); return typed::union_pw_multi_aff(res); } template typed::union_set<> typed::union_pw_multi_aff::domain() const { auto res = isl::union_pw_multi_aff::domain(); return typed::union_set<>(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::drop_unused_params() const { auto res = isl::union_pw_multi_aff::drop_unused_params(); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::empty(const isl::ctx &ctx) { auto res = isl::union_pw_multi_aff::empty(ctx); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::union_pw_multi_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::union_set<> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::basic_set<> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::point<> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::set<> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff_list typed::union_pw_multi_aff::pw_multi_aff_list() const { auto res = isl::union_pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template typed::space<> typed::union_pw_multi_aff::space() const { auto res = isl::union_pw_multi_aff::space(); return typed::space<>(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff::union_pw_multi_aff(const typed::multi_aff &ma) : isl::union_pw_multi_aff(ma) { } template typed::union_pw_multi_aff::union_pw_multi_aff(const typed::pw_multi_aff &pma) : isl::union_pw_multi_aff(pma) { } template typed::union_pw_multi_aff::union_pw_multi_aff(const typed::union_pw_aff &upa) : isl::union_pw_multi_aff(upa) { } template typed::union_pw_multi_aff::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_multi_aff(ctx, str) { } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::add(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::apply(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_union_pw_aff typed::union_pw_multi_aff::as_multi_union_pw_aff() const { auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff(res); } template typed::pw_multi_aff typed::union_pw_multi_aff::as_pw_multi_aff() const { auto res = isl::union_pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff(res); } template typed::union_map typed::union_pw_multi_aff::as_union_map() const { auto res = isl::union_pw_multi_aff::as_union_map(); return typed::union_map(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::coalesce() const { auto res = isl::union_pw_multi_aff::coalesce(); return typed::union_pw_multi_aff(res); } template typed::union_set typed::union_pw_multi_aff::domain() const { auto res = isl::union_pw_multi_aff::domain(); return typed::union_set(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::drop_unused_params() const { auto res = isl::union_pw_multi_aff::drop_unused_params(); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::empty(const isl::ctx &ctx) { auto res = isl::union_pw_multi_aff::empty(ctx); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff typed::union_pw_multi_aff::extract_pw_multi_aff(const typed::space &space) const { auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::union_set &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::basic_set &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::point &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::gist(const typed::set &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_domain(const typed::space &space) const { auto res = isl::union_pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_domain(const typed::union_set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::pullback(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff_list typed::union_pw_multi_aff::pw_multi_aff_list() const { auto res = isl::union_pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff::range_product(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff::range_product(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff::range_product(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff>(res); } template typed::space<> typed::union_pw_multi_aff::space() const { auto res = isl::union_pw_multi_aff::space(); return typed::space<>(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::sub(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::subtract_domain(const typed::space &space) const { auto res = isl::union_pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::subtract_domain(const typed::union_set &uset) const { auto res = isl::union_pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff::union_add(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff, Range>::union_pw_multi_aff(const typed::multi_aff, Range> &ma) : isl::union_pw_multi_aff(ma) { } template typed::union_pw_multi_aff, Range>::union_pw_multi_aff(const typed::pw_multi_aff, Range> &pma) : isl::union_pw_multi_aff(pma) { } template typed::union_pw_multi_aff, Range>::union_pw_multi_aff(const typed::union_pw_aff, Range> &upa) : isl::union_pw_multi_aff(upa) { } template typed::union_pw_multi_aff, Range>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_multi_aff(ctx, str) { } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::add(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::add(const typed::multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::add(const typed::pw_multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::add(const typed::union_pw_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range2> typed::union_pw_multi_aff, Range>::apply(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Range2>(res); } template template typed::union_pw_multi_aff, Range2> typed::union_pw_multi_aff, Range>::apply(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Range2>(res); } template template typed::union_pw_multi_aff, Range2> typed::union_pw_multi_aff, Range>::apply(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Range2>(res); } template typed::union_pw_multi_aff, Anonymous> typed::union_pw_multi_aff, Range>::apply(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::multi_union_pw_aff, Range> typed::union_pw_multi_aff, Range>::as_multi_union_pw_aff() const { auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::as_pw_multi_aff() const { auto res = isl::union_pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff, Range>(res); } template typed::union_map, Range> typed::union_pw_multi_aff, Range>::as_union_map() const { auto res = isl::union_pw_multi_aff::as_union_map(); return typed::union_map, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::coalesce() const { auto res = isl::union_pw_multi_aff::coalesce(); return typed::union_pw_multi_aff, Range>(res); } template typed::union_set> typed::union_pw_multi_aff, Range>::domain() const { auto res = isl::union_pw_multi_aff::domain(); return typed::union_set>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::drop_unused_params() const { auto res = isl::union_pw_multi_aff::drop_unused_params(); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::empty(const isl::ctx &ctx) { auto res = isl::union_pw_multi_aff::empty(ctx); return typed::union_pw_multi_aff, Range>(res); } template typed::pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::extract_pw_multi_aff(const typed::space, Range> &space) const { auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::gist(const typed::union_set> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::gist(const typed::basic_set> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::gist(const typed::point> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::gist(const typed::set> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_domain(const typed::space> &space) const { auto res = isl::union_pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_domain_wrapped_domain(const typed::basic_set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_domain_wrapped_domain(const typed::point &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_domain_wrapped_domain(const typed::set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::preimage_domain_wrapped_domain(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, Range>(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff, Range>::pullback(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff(res); } template typed::pw_multi_aff_list, Range> typed::union_pw_multi_aff, Range>::pw_multi_aff_list() const { auto res = isl::union_pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, Range>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, Range>::range_product(const typed::union_pw_multi_aff, Range2> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, Range>::range_product(const typed::multi_aff, Range2> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, Range>::range_product(const typed::pw_multi_aff, Range2> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, Range>::range_product(const typed::union_pw_aff, Anonymous> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::space<> typed::union_pw_multi_aff, Range>::space() const { auto res = isl::union_pw_multi_aff::space(); return typed::space<>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::sub(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::sub(const typed::multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::sub(const typed::pw_multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::sub(const typed::union_pw_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::subtract_domain(const typed::space> &space) const { auto res = isl::union_pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::union_pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::union_add(const typed::union_pw_multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::union_add(const typed::multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::union_add(const typed::pw_multi_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, Range>::union_add(const typed::union_pw_aff, Range> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff>::union_pw_multi_aff(const typed::multi_aff> &ma) : isl::union_pw_multi_aff(ma) { } template typed::union_pw_multi_aff>::union_pw_multi_aff(const typed::pw_multi_aff> &pma) : isl::union_pw_multi_aff(pma) { } template typed::union_pw_multi_aff>::union_pw_multi_aff(const typed::union_pw_aff> &upa) : isl::union_pw_multi_aff(upa) { } template typed::union_pw_multi_aff>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_multi_aff(ctx, str) { } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::add(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::add(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::add(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::add(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff>::apply(const typed::union_pw_multi_aff, Arg3> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff>::apply(const typed::multi_aff, Arg3> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff typed::union_pw_multi_aff>::apply(const typed::pw_multi_aff, Arg3> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff>::apply(const typed::union_pw_aff, Anonymous> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff(res); } template typed::multi_union_pw_aff> typed::union_pw_multi_aff>::as_multi_union_pw_aff() const { auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff>(res); } template typed::pw_multi_aff> typed::union_pw_multi_aff>::as_pw_multi_aff() const { auto res = isl::union_pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff>(res); } template typed::union_map> typed::union_pw_multi_aff>::as_union_map() const { auto res = isl::union_pw_multi_aff::as_union_map(); return typed::union_map>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::coalesce() const { auto res = isl::union_pw_multi_aff::coalesce(); return typed::union_pw_multi_aff>(res); } template typed::union_set typed::union_pw_multi_aff>::domain() const { auto res = isl::union_pw_multi_aff::domain(); return typed::union_set(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::drop_unused_params() const { auto res = isl::union_pw_multi_aff::drop_unused_params(); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::empty(const isl::ctx &ctx) { auto res = isl::union_pw_multi_aff::empty(ctx); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff> typed::union_pw_multi_aff>::extract_pw_multi_aff(const typed::space> &space) const { auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::gist(const typed::union_set &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::gist(const typed::basic_set &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::gist(const typed::point &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::gist(const typed::set &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::intersect_domain(const typed::space &space) const { auto res = isl::union_pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::intersect_domain(const typed::union_set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::pullback(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff_list> typed::union_pw_multi_aff>::pw_multi_aff_list() const { auto res = isl::union_pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list>(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff>::range_factor_domain() const { auto res = isl::union_pw_multi_aff::range_factor_domain(); return typed::union_pw_multi_aff(res); } template typed::union_pw_multi_aff typed::union_pw_multi_aff>::range_factor_range() const { auto res = isl::union_pw_multi_aff::range_factor_range(); return typed::union_pw_multi_aff(res); } template template typed::union_pw_multi_aff, Arg3>> typed::union_pw_multi_aff>::range_product(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, Arg3>>(res); } template template typed::union_pw_multi_aff, Arg3>> typed::union_pw_multi_aff>::range_product(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, Arg3>>(res); } template template typed::union_pw_multi_aff, Arg3>> typed::union_pw_multi_aff>::range_product(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, Arg3>>(res); } template typed::union_pw_multi_aff, Anonymous>> typed::union_pw_multi_aff>::range_product(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, Anonymous>>(res); } template typed::space<> typed::union_pw_multi_aff>::space() const { auto res = isl::union_pw_multi_aff::space(); return typed::space<>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::sub(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::sub(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::sub(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::sub(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::subtract_domain(const typed::space &space) const { auto res = isl::union_pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::subtract_domain(const typed::union_set &uset) const { auto res = isl::union_pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::union_add(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::union_add(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::union_add(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff>::union_add(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff, pair>::union_pw_multi_aff(const typed::multi_aff, pair> &ma) : isl::union_pw_multi_aff(ma) { } template typed::union_pw_multi_aff, pair>::union_pw_multi_aff(const typed::pw_multi_aff, pair> &pma) : isl::union_pw_multi_aff(pma) { } template typed::union_pw_multi_aff, pair>::union_pw_multi_aff(const typed::union_pw_aff, pair> &upa) : isl::union_pw_multi_aff(upa) { } template typed::union_pw_multi_aff, pair>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str) : isl::union_pw_multi_aff(ctx, str) { } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::add(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::add(const typed::multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::add(const typed::pw_multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::add(const typed::union_pw_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::add(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, Arg2> typed::union_pw_multi_aff, pair>::apply(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template template typed::union_pw_multi_aff, Arg2> typed::union_pw_multi_aff, pair>::apply(const typed::multi_aff, Arg2> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template template typed::union_pw_multi_aff, Arg2> typed::union_pw_multi_aff, pair>::apply(const typed::pw_multi_aff, Arg2> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Arg2>(res); } template typed::union_pw_multi_aff, Anonymous> typed::union_pw_multi_aff, pair>::apply(const typed::union_pw_aff, Anonymous> &upma2) const { auto res = isl::union_pw_multi_aff::apply(upma2); return typed::union_pw_multi_aff, Anonymous>(res); } template typed::multi_union_pw_aff, pair> typed::union_pw_multi_aff, pair>::as_multi_union_pw_aff() const { auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff(); return typed::multi_union_pw_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::as_pw_multi_aff() const { auto res = isl::union_pw_multi_aff::as_pw_multi_aff(); return typed::pw_multi_aff, pair>(res); } template typed::union_map, pair> typed::union_pw_multi_aff, pair>::as_union_map() const { auto res = isl::union_pw_multi_aff::as_union_map(); return typed::union_map, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::coalesce() const { auto res = isl::union_pw_multi_aff::coalesce(); return typed::union_pw_multi_aff, pair>(res); } template typed::union_set> typed::union_pw_multi_aff, pair>::domain() const { auto res = isl::union_pw_multi_aff::domain(); return typed::union_set>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::drop_unused_params() const { auto res = isl::union_pw_multi_aff::drop_unused_params(); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::empty(const isl::ctx &ctx) { auto res = isl::union_pw_multi_aff::empty(ctx); return typed::union_pw_multi_aff, pair>(res); } template typed::pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::extract_pw_multi_aff(const typed::space, pair> &space) const { auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space); return typed::pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::gist(const typed::union_set> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::gist(const typed::basic_set> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::gist(const typed::point> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::gist(const typed::set> &context) const { auto res = isl::union_pw_multi_aff::gist(context); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_domain(const typed::space> &space) const { auto res = isl::union_pw_multi_aff::intersect_domain(space); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_domain(const typed::union_set> &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_domain_wrapped_domain(const typed::union_set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_domain_wrapped_domain(const typed::basic_set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_domain_wrapped_domain(const typed::point &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_domain_wrapped_domain(const typed::set &uset) const { auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_params(const typed::set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::intersect_params(const typed::point<> &set) const { auto res = isl::union_pw_multi_aff::intersect_params(set); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::pw_multi_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::preimage_domain_wrapped_domain(const typed::union_pw_aff &upma2) const { auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2); return typed::union_pw_multi_aff, pair>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::union_pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::pw_multi_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::union_pw_multi_aff> typed::union_pw_multi_aff, pair>::pullback(const typed::union_pw_aff> &upma2) const { auto res = isl::union_pw_multi_aff::pullback(upma2); return typed::union_pw_multi_aff>(res); } template typed::pw_multi_aff_list, pair> typed::union_pw_multi_aff, pair>::pw_multi_aff_list() const { auto res = isl::union_pw_multi_aff::pw_multi_aff_list(); return typed::pw_multi_aff_list, pair>(res); } template typed::union_pw_multi_aff, Range> typed::union_pw_multi_aff, pair>::range_factor_domain() const { auto res = isl::union_pw_multi_aff::range_factor_domain(); return typed::union_pw_multi_aff, Range>(res); } template typed::union_pw_multi_aff, Range2> typed::union_pw_multi_aff, pair>::range_factor_range() const { auto res = isl::union_pw_multi_aff::range_factor_range(); return typed::union_pw_multi_aff, Range2>(res); } template template typed::union_pw_multi_aff, pair, Arg2>> typed::union_pw_multi_aff, pair>::range_product(const typed::union_pw_multi_aff, Arg2> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair, Arg2>>(res); } template template typed::union_pw_multi_aff, pair, Arg2>> typed::union_pw_multi_aff, pair>::range_product(const typed::multi_aff, Arg2> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair, Arg2>>(res); } template template typed::union_pw_multi_aff, pair, Arg2>> typed::union_pw_multi_aff, pair>::range_product(const typed::pw_multi_aff, Arg2> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair, Arg2>>(res); } template typed::union_pw_multi_aff, pair, Anonymous>> typed::union_pw_multi_aff, pair>::range_product(const typed::union_pw_aff, Anonymous> &upma2) const { auto res = isl::union_pw_multi_aff::range_product(upma2); return typed::union_pw_multi_aff, pair, Anonymous>>(res); } template typed::space<> typed::union_pw_multi_aff, pair>::space() const { auto res = isl::union_pw_multi_aff::space(); return typed::space<>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::sub(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::sub(const typed::multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::sub(const typed::pw_multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::sub(const typed::union_pw_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::sub(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::subtract_domain(const typed::space> &space) const { auto res = isl::union_pw_multi_aff::subtract_domain(space); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::subtract_domain(const typed::union_set> &uset) const { auto res = isl::union_pw_multi_aff::subtract_domain(uset); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::union_add(const typed::union_pw_multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::union_add(const typed::multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::union_add(const typed::pw_multi_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, pair>(res); } template typed::union_pw_multi_aff, pair> typed::union_pw_multi_aff, pair>::union_add(const typed::union_pw_aff, pair> &upma2) const { auto res = isl::union_pw_multi_aff::union_add(upma2); return typed::union_pw_multi_aff, pair>(res); } typed::union_set<>::union_set(const typed::basic_set<> &bset) : isl::union_set(bset) { } typed::union_set<>::union_set(const typed::point<> &pnt) : isl::union_set(pnt) { } typed::union_set<>::union_set(const typed::set<> &set) : isl::union_set(set) { } typed::union_set<>::union_set(const isl::ctx &ctx, const std::string &str) : isl::union_set(ctx, str) { } typed::union_set<> typed::union_set<>::coalesce() const { auto res = isl::union_set::coalesce(); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::detect_equalities() const { auto res = isl::union_set::detect_equalities(); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::drop_unused_params() const { auto res = isl::union_set::drop_unused_params(); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::empty(const isl::ctx &ctx) { auto res = isl::union_set::empty(ctx); return typed::union_set<>(res); } bool typed::union_set<>::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set<>(arg0)); }; return isl::union_set::every_set(lambda_test); } typed::set<> typed::union_set<>::extract_set(const typed::space<> &space) const { auto res = isl::union_set::extract_set(space); return typed::set<>(res); } void typed::union_set<>::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point<>(arg0)); }; return isl::union_set::foreach_point(lambda_fn); } void typed::union_set<>::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set<>(arg0)); }; return isl::union_set::foreach_set(lambda_fn); } typed::union_set<> typed::union_set<>::gist(const typed::union_set<> &context) const { auto res = isl::union_set::gist(context); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::gist(const typed::basic_set<> &context) const { auto res = isl::union_set::gist(context); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::gist(const typed::point<> &context) const { auto res = isl::union_set::gist(context); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::gist(const typed::set<> &context) const { auto res = isl::union_set::gist(context); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::intersect(const typed::union_set<> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::intersect(const typed::basic_set<> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::intersect(const typed::point<> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::intersect(const typed::set<> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::project_out_all_params() const { auto res = isl::union_set::project_out_all_params(); return typed::union_set<>(res); } typed::set_list<> typed::union_set<>::set_list() const { auto res = isl::union_set::set_list(); return typed::set_list<>(res); } typed::space<> typed::union_set<>::space() const { auto res = isl::union_set::space(); return typed::space<>(res); } typed::union_set<> typed::union_set<>::subtract(const typed::union_set<> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::subtract(const typed::basic_set<> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::subtract(const typed::point<> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::subtract(const typed::set<> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::unite(const typed::union_set<> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::unite(const typed::basic_set<> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::unite(const typed::point<> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::unite(const typed::set<> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set<>(res); } typed::union_set<> typed::union_set<>::universe() const { auto res = isl::union_set::universe(); return typed::union_set<>(res); } template typed::union_set::union_set(const typed::basic_set &bset) : isl::union_set(bset) { } template typed::union_set::union_set(const typed::point &pnt) : isl::union_set(pnt) { } template typed::union_set::union_set(const typed::set &set) : isl::union_set(set) { } template typed::union_set::union_set(const isl::ctx &ctx, const std::string &str) : isl::union_set(ctx, str) { } template template typed::union_set typed::union_set::apply(const typed::union_map &umap) const { auto res = isl::union_set::apply(umap); return typed::union_set(res); } template template typed::union_set typed::union_set::apply(const typed::basic_map &umap) const { auto res = isl::union_set::apply(umap); return typed::union_set(res); } template template typed::union_set typed::union_set::apply(const typed::map &umap) const { auto res = isl::union_set::apply(umap); return typed::union_set(res); } template typed::set typed::union_set::as_set() const { auto res = isl::union_set::as_set(); return typed::set(res); } template typed::union_set typed::union_set::coalesce() const { auto res = isl::union_set::coalesce(); return typed::union_set(res); } template typed::union_set typed::union_set::detect_equalities() const { auto res = isl::union_set::detect_equalities(); return typed::union_set(res); } template typed::union_set typed::union_set::drop_unused_params() const { auto res = isl::union_set::drop_unused_params(); return typed::union_set(res); } template typed::union_set typed::union_set::empty(const isl::ctx &ctx) { auto res = isl::union_set::empty(ctx); return typed::union_set(res); } template bool typed::union_set::every_set(const std::function)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set(arg0)); }; return isl::union_set::every_set(lambda_test); } template typed::set typed::union_set::extract_set(const typed::space &space) const { auto res = isl::union_set::extract_set(space); return typed::set(res); } template void typed::union_set::foreach_point(const std::function)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point(arg0)); }; return isl::union_set::foreach_point(lambda_fn); } template void typed::union_set::foreach_set(const std::function)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set(arg0)); }; return isl::union_set::foreach_set(lambda_fn); } template typed::union_set typed::union_set::gist(const typed::union_set &context) const { auto res = isl::union_set::gist(context); return typed::union_set(res); } template typed::union_set typed::union_set::gist(const typed::basic_set &context) const { auto res = isl::union_set::gist(context); return typed::union_set(res); } template typed::union_set typed::union_set::gist(const typed::point &context) const { auto res = isl::union_set::gist(context); return typed::union_set(res); } template typed::union_set typed::union_set::gist(const typed::set &context) const { auto res = isl::union_set::gist(context); return typed::union_set(res); } template typed::union_set typed::union_set::gist_params(const typed::set<> &set) const { auto res = isl::union_set::gist_params(set); return typed::union_set(res); } template typed::union_set typed::union_set::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_set::gist_params(set); return typed::union_set(res); } template typed::union_set typed::union_set::gist_params(const typed::point<> &set) const { auto res = isl::union_set::gist_params(set); return typed::union_set(res); } template typed::union_map typed::union_set::identity() const { auto res = isl::union_set::identity(); return typed::union_map(res); } template typed::union_set typed::union_set::intersect(const typed::union_set &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::intersect(const typed::basic_set &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::intersect(const typed::point &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::intersect(const typed::set &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::intersect_params(const typed::set<> &set) const { auto res = isl::union_set::intersect_params(set); return typed::union_set(res); } template typed::union_set typed::union_set::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_set::intersect_params(set); return typed::union_set(res); } template typed::union_set typed::union_set::intersect_params(const typed::point<> &set) const { auto res = isl::union_set::intersect_params(set); return typed::union_set(res); } template typed::union_set typed::union_set::lexmax() const { auto res = isl::union_set::lexmax(); return typed::union_set(res); } template typed::union_set typed::union_set::lexmin() const { auto res = isl::union_set::lexmin(); return typed::union_set(res); } template typed::set<> typed::union_set::params() const { auto res = isl::union_set::params(); return typed::set<>(res); } template template typed::union_set typed::union_set::preimage(const typed::multi_aff &ma) const { auto res = isl::union_set::preimage(ma); return typed::union_set(res); } template template typed::union_set typed::union_set::preimage(const typed::pw_multi_aff &pma) const { auto res = isl::union_set::preimage(pma); return typed::union_set(res); } template template typed::union_set typed::union_set::preimage(const typed::union_pw_multi_aff &upma) const { auto res = isl::union_set::preimage(upma); return typed::union_set(res); } template typed::union_set typed::union_set::project_out_all_params() const { auto res = isl::union_set::project_out_all_params(); return typed::union_set(res); } template typed::set_list typed::union_set::set_list() const { auto res = isl::union_set::set_list(); return typed::set_list(res); } template typed::space<> typed::union_set::space() const { auto res = isl::union_set::space(); return typed::space<>(res); } template typed::union_set typed::union_set::subtract(const typed::union_set &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::subtract(const typed::basic_set &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::subtract(const typed::point &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::subtract(const typed::set &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::unite(const typed::union_set &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::unite(const typed::basic_set &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::unite(const typed::point &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::unite(const typed::set &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set(res); } template typed::union_set typed::union_set::universe() const { auto res = isl::union_set::universe(); return typed::union_set(res); } template typed::union_set>::union_set(const typed::basic_set> &bset) : isl::union_set(bset) { } template typed::union_set>::union_set(const typed::point> &pnt) : isl::union_set(pnt) { } template typed::union_set>::union_set(const typed::set> &set) : isl::union_set(set) { } template typed::union_set>::union_set(const isl::ctx &ctx, const std::string &str) : isl::union_set(ctx, str) { } template template typed::union_set typed::union_set>::apply(const typed::union_map, Arg2> &umap) const { auto res = isl::union_set::apply(umap); return typed::union_set(res); } template template typed::union_set typed::union_set>::apply(const typed::basic_map, Arg2> &umap) const { auto res = isl::union_set::apply(umap); return typed::union_set(res); } template template typed::union_set typed::union_set>::apply(const typed::map, Arg2> &umap) const { auto res = isl::union_set::apply(umap); return typed::union_set(res); } template typed::set> typed::union_set>::as_set() const { auto res = isl::union_set::as_set(); return typed::set>(res); } template typed::union_set> typed::union_set>::coalesce() const { auto res = isl::union_set::coalesce(); return typed::union_set>(res); } template typed::union_set> typed::union_set>::detect_equalities() const { auto res = isl::union_set::detect_equalities(); return typed::union_set>(res); } template typed::union_set> typed::union_set>::drop_unused_params() const { auto res = isl::union_set::drop_unused_params(); return typed::union_set>(res); } template typed::union_set> typed::union_set>::empty(const isl::ctx &ctx) { auto res = isl::union_set::empty(ctx); return typed::union_set>(res); } template bool typed::union_set>::every_set(const std::function>)> &test) const { auto lambda_test = [&] (isl::set arg0) { return test(typed::set>(arg0)); }; return isl::union_set::every_set(lambda_test); } template typed::set> typed::union_set>::extract_set(const typed::space> &space) const { auto res = isl::union_set::extract_set(space); return typed::set>(res); } template void typed::union_set>::foreach_point(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::point arg0) { return fn(typed::point>(arg0)); }; return isl::union_set::foreach_point(lambda_fn); } template void typed::union_set>::foreach_set(const std::function>)> &fn) const { auto lambda_fn = [&] (isl::set arg0) { return fn(typed::set>(arg0)); }; return isl::union_set::foreach_set(lambda_fn); } template typed::union_set> typed::union_set>::gist(const typed::union_set> &context) const { auto res = isl::union_set::gist(context); return typed::union_set>(res); } template typed::union_set> typed::union_set>::gist(const typed::basic_set> &context) const { auto res = isl::union_set::gist(context); return typed::union_set>(res); } template typed::union_set> typed::union_set>::gist(const typed::point> &context) const { auto res = isl::union_set::gist(context); return typed::union_set>(res); } template typed::union_set> typed::union_set>::gist(const typed::set> &context) const { auto res = isl::union_set::gist(context); return typed::union_set>(res); } template typed::union_set> typed::union_set>::gist_params(const typed::set<> &set) const { auto res = isl::union_set::gist_params(set); return typed::union_set>(res); } template typed::union_set> typed::union_set>::gist_params(const typed::basic_set<> &set) const { auto res = isl::union_set::gist_params(set); return typed::union_set>(res); } template typed::union_set> typed::union_set>::gist_params(const typed::point<> &set) const { auto res = isl::union_set::gist_params(set); return typed::union_set>(res); } template typed::union_map, pair> typed::union_set>::identity() const { auto res = isl::union_set::identity(); return typed::union_map, pair>(res); } template typed::union_set> typed::union_set>::intersect(const typed::union_set> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::intersect(const typed::basic_set> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::intersect(const typed::point> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::intersect(const typed::set> &uset2) const { auto res = isl::union_set::intersect(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::intersect_params(const typed::set<> &set) const { auto res = isl::union_set::intersect_params(set); return typed::union_set>(res); } template typed::union_set> typed::union_set>::intersect_params(const typed::basic_set<> &set) const { auto res = isl::union_set::intersect_params(set); return typed::union_set>(res); } template typed::union_set> typed::union_set>::intersect_params(const typed::point<> &set) const { auto res = isl::union_set::intersect_params(set); return typed::union_set>(res); } template typed::union_set> typed::union_set>::lexmax() const { auto res = isl::union_set::lexmax(); return typed::union_set>(res); } template typed::union_set> typed::union_set>::lexmin() const { auto res = isl::union_set::lexmin(); return typed::union_set>(res); } template typed::set<> typed::union_set>::params() const { auto res = isl::union_set::params(); return typed::set<>(res); } template template typed::union_set typed::union_set>::preimage(const typed::multi_aff> &ma) const { auto res = isl::union_set::preimage(ma); return typed::union_set(res); } template template typed::union_set typed::union_set>::preimage(const typed::pw_multi_aff> &pma) const { auto res = isl::union_set::preimage(pma); return typed::union_set(res); } template template typed::union_set typed::union_set>::preimage(const typed::union_pw_multi_aff> &upma) const { auto res = isl::union_set::preimage(upma); return typed::union_set(res); } template typed::union_set> typed::union_set>::project_out_all_params() const { auto res = isl::union_set::project_out_all_params(); return typed::union_set>(res); } template typed::set_list> typed::union_set>::set_list() const { auto res = isl::union_set::set_list(); return typed::set_list>(res); } template typed::space<> typed::union_set>::space() const { auto res = isl::union_set::space(); return typed::space<>(res); } template typed::union_set> typed::union_set>::subtract(const typed::union_set> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::subtract(const typed::basic_set> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::subtract(const typed::point> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::subtract(const typed::set> &uset2) const { auto res = isl::union_set::subtract(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::unite(const typed::union_set> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::unite(const typed::basic_set> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::unite(const typed::point> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::unite(const typed::set> &uset2) const { auto res = isl::union_set::unite(uset2); return typed::union_set>(res); } template typed::union_set> typed::union_set>::universe() const { auto res = isl::union_set::universe(); return typed::union_set>(res); } template typed::union_map typed::union_set>::unwrap() const { auto res = isl::union_set::unwrap(); return typed::union_map(res); } typed::union_set_list<>::union_set_list(const isl::ctx &ctx, int n) : isl::union_set_list(ctx, n) { } typed::union_set_list<>::union_set_list(const typed::union_set<> &el) : isl::union_set_list(el) { } typed::union_set_list<>::union_set_list(const isl::ctx &ctx, const std::string &str) : isl::union_set_list(ctx, str) { } typed::union_set_list<> typed::union_set_list<>::add(const typed::union_set<> &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list<>(res); } typed::union_set_list<> typed::union_set_list<>::add(const typed::basic_set<> &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list<>(res); } typed::union_set_list<> typed::union_set_list<>::add(const typed::point<> &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list<>(res); } typed::union_set_list<> typed::union_set_list<>::add(const typed::set<> &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list<>(res); } typed::union_set_list<> typed::union_set_list<>::drop(unsigned int first, unsigned int n) const { auto res = isl::union_set_list::drop(first, n); return typed::union_set_list<>(res); } void typed::union_set_list<>::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::union_set arg0) { return fn(typed::union_set<>(arg0)); }; return isl::union_set_list::foreach(lambda_fn); } void typed::union_set_list<>::foreach_scc(const std::function, typed::union_set<>)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::union_set arg0, isl::union_set arg1) { return follows(typed::union_set<>(arg0), typed::union_set<>(arg1)); }; auto lambda_fn = [&] (isl::union_set_list arg0) { return fn(typed::union_set_list<>(arg0)); }; return isl::union_set_list::foreach_scc(lambda_follows, lambda_fn); } template typed::union_set_list::union_set_list(const isl::ctx &ctx, int n) : isl::union_set_list(ctx, n) { } template typed::union_set_list::union_set_list(const typed::union_set &el) : isl::union_set_list(el) { } template typed::union_set_list::union_set_list(const isl::ctx &ctx, const std::string &str) : isl::union_set_list(ctx, str) { } template typed::union_set_list typed::union_set_list::add(const typed::union_set &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list(res); } template typed::union_set_list typed::union_set_list::add(const typed::basic_set &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list(res); } template typed::union_set_list typed::union_set_list::add(const typed::point &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list(res); } template typed::union_set_list typed::union_set_list::add(const typed::set &el) const { auto res = isl::union_set_list::add(el); return typed::union_set_list(res); } template typed::union_set typed::union_set_list::at(int index) const { auto res = isl::union_set_list::at(index); return typed::union_set(res); } template typed::union_set_list typed::union_set_list::drop(unsigned int first, unsigned int n) const { auto res = isl::union_set_list::drop(first, n); return typed::union_set_list(res); } template void typed::union_set_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::union_set arg0) { return fn(typed::union_set(arg0)); }; return isl::union_set_list::foreach(lambda_fn); } template void typed::union_set_list::foreach_scc(const std::function, typed::union_set)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::union_set arg0, isl::union_set arg1) { return follows(typed::union_set(arg0), typed::union_set(arg1)); }; auto lambda_fn = [&] (isl::union_set_list arg0) { return fn(typed::union_set_list(arg0)); }; return isl::union_set_list::foreach_scc(lambda_follows, lambda_fn); } template typed::union_set_list typed::union_set_list::set_at(int index, const typed::union_set &el) const { auto res = isl::union_set_list::set_at(index, el); return typed::union_set_list(res); } typed::val::val(const isl::ctx &ctx, long i) : isl::val(ctx, i) { } typed::val::val(const isl::ctx &ctx, const std::string &str) : isl::val(ctx, str) { } typed::val typed::val::add(const typed::val &v2) const { auto res = isl::val::add(v2); return typed::val(res); } typed::val typed::val::add(long v2) const { auto res = isl::val::add(v2); return typed::val(res); } typed::val typed::val::ceil() const { auto res = isl::val::ceil(); return typed::val(res); } typed::val typed::val::floor() const { auto res = isl::val::floor(); return typed::val(res); } typed::val typed::val::max(const typed::val &v2) const { auto res = isl::val::max(v2); return typed::val(res); } typed::val typed::val::max(long v2) const { auto res = isl::val::max(v2); return typed::val(res); } typed::val typed::val::min(const typed::val &v2) const { auto res = isl::val::min(v2); return typed::val(res); } typed::val typed::val::min(long v2) const { auto res = isl::val::min(v2); return typed::val(res); } typed::val typed::val::mod(const typed::val &v2) const { auto res = isl::val::mod(v2); return typed::val(res); } typed::val typed::val::mod(long v2) const { auto res = isl::val::mod(v2); return typed::val(res); } typed::val typed::val::neg() const { auto res = isl::val::neg(); return typed::val(res); } typed::val typed::val::sub(const typed::val &v2) const { auto res = isl::val::sub(v2); return typed::val(res); } typed::val typed::val::sub(long v2) const { auto res = isl::val::sub(v2); return typed::val(res); } typed::val_list::val_list(const isl::ctx &ctx, int n) : isl::val_list(ctx, n) { } typed::val_list::val_list(const typed::val &el) : isl::val_list(el) { } typed::val_list::val_list(const isl::ctx &ctx, const std::string &str) : isl::val_list(ctx, str) { } typed::val_list typed::val_list::add(const typed::val &el) const { auto res = isl::val_list::add(el); return typed::val_list(res); } typed::val_list typed::val_list::add(long el) const { auto res = isl::val_list::add(el); return typed::val_list(res); } typed::val typed::val_list::at(int index) const { auto res = isl::val_list::at(index); return typed::val(res); } typed::val_list typed::val_list::drop(unsigned int first, unsigned int n) const { auto res = isl::val_list::drop(first, n); return typed::val_list(res); } void typed::val_list::foreach(const std::function)> &fn) const { auto lambda_fn = [&] (isl::val arg0) { return fn(typed::val(arg0)); }; return isl::val_list::foreach(lambda_fn); } void typed::val_list::foreach_scc(const std::function, typed::val)> &follows, const std::function)> &fn) const { auto lambda_follows = [&] (isl::val arg0, isl::val arg1) { return follows(typed::val(arg0), typed::val(arg1)); }; auto lambda_fn = [&] (isl::val_list arg0) { return fn(typed::val_list(arg0)); }; return isl::val_list::foreach_scc(lambda_follows, lambda_fn); } typed::val_list typed::val_list::set_at(int index, const typed::val &el) const { auto res = isl::val_list::set_at(index, el); return typed::val_list(res); } typed::val_list typed::val_list::set_at(int index, long el) const { auto res = isl::val_list::set_at(index, el); return typed::val_list(res); } } // namespace typed } // namespace isl #endif /* ISL_TYPED_CPP */ .