use super::{
Context, DimType, Error, Fold, LibISLError, Point, PwQPolynomialFold, PwQPolynomialFoldList,
Set, Space, UnionPwQPolynomial, UnionSet, Val,
};
use libc::uintptr_t;
use std::ffi::CString;
use std::os::raw::c_char;
pub struct UnionPwQPolynomialFold {
pub ptr: uintptr_t,
pub should_free_on_drop: bool,
}
extern "C" {
fn isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial(upwf: uintptr_t, upwqp: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_align_params(upwf: uintptr_t, model: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_coalesce(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_copy(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_dim(upwf: uintptr_t, type_: i32) -> i32;
fn isl_union_pw_qpolynomial_fold_domain(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_drop_dims(upwf: uintptr_t, type_: i32, first: u32, n: u32)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_drop_unused_params(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_eval(upwf: uintptr_t, pnt: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_extract_pw_qpolynomial_fold(upwf: uintptr_t, space: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_find_dim_by_name(upwf: uintptr_t, type_: i32,
name: *const c_char)
-> i32;
fn isl_union_pw_qpolynomial_fold_fold(upwf1: uintptr_t, upwf2: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold(upwqp: uintptr_t, pwqp: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_free(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(pwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_get_ctx(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_get_pw_qpolynomial_fold_list(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_get_space(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_get_type(upwf: uintptr_t) -> i32;
fn isl_union_pw_qpolynomial_fold_gist(upwf: uintptr_t, context: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_gist_params(upwf: uintptr_t, context: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_intersect_domain(upwf: uintptr_t, uset: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_intersect_domain_space(upwf: uintptr_t, space: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_intersect_domain_union_set(upwf: uintptr_t, uset: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_domain(upwf: uintptr_t,
uset: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_range(upwf: uintptr_t,
uset: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_intersect_params(upwf: uintptr_t, set: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_involves_nan(upwf: uintptr_t) -> i32;
fn isl_union_pw_qpolynomial_fold_n_pw_qpolynomial_fold(upwf: uintptr_t) -> i32;
fn isl_union_pw_qpolynomial_fold_plain_is_equal(upwf1: uintptr_t, upwf2: uintptr_t) -> i32;
fn isl_union_pw_qpolynomial_fold_reset_user(upwf: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_scale_down_val(upwf: uintptr_t, v: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_scale_val(upwf: uintptr_t, v: uintptr_t) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_set_dim_name(upwf: uintptr_t, type_: i32, pos: u32,
s: *const c_char)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_subtract_domain(upwf: uintptr_t, uset: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_subtract_domain_space(upwf: uintptr_t, space: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_subtract_domain_union_set(upwf: uintptr_t, uset: uintptr_t)
-> uintptr_t;
fn isl_union_pw_qpolynomial_fold_zero(space: uintptr_t, type_: i32) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_zero_ctx(ctx: uintptr_t, type_: i32) -> uintptr_t;
fn isl_union_pw_qpolynomial_fold_zero_space(space: uintptr_t, type_: i32) -> uintptr_t;
}
impl UnionPwQPolynomialFold {
pub fn add_union_pw_qpolynomial(self, upwqp: UnionPwQPolynomial)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut upwqp = upwqp;
upwqp.do_not_free_on_drop();
let upwqp = upwqp.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial(upwf, upwqp) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn align_params(self, model: Space) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut model = model;
model.do_not_free_on_drop();
let model = model.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_align_params(upwf, model) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn coalesce(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_coalesce(upwf) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn copy(&self) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_copy(upwf) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn dim(&self, type_: DimType) -> Result<i32, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let type_ = type_.to_i32();
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_dim(upwf, type_) };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn domain(self) -> Result<UnionSet, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_domain(upwf) };
let isl_rs_result = UnionSet { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn drop_dims(self, type_: DimType, first: u32, n: u32)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let type_ = type_.to_i32();
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_drop_dims(upwf, type_, first, n) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn drop_unused_params(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_drop_unused_params(upwf) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn eval(self, pnt: Point) -> Result<Val, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut pnt = pnt;
pnt.do_not_free_on_drop();
let pnt = pnt.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_eval(upwf, pnt) };
let isl_rs_result = Val { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn extract_pw_qpolynomial_fold(&self, space: Space)
-> Result<PwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let mut space = space;
space.do_not_free_on_drop();
let space = space.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_extract_pw_qpolynomial_fold(upwf, space) };
let isl_rs_result = PwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn find_dim_by_name(&self, type_: DimType, name: &str) -> Result<i32, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let type_ = type_.to_i32();
let name = CString::new(name).unwrap();
let name = name.as_ptr();
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_find_dim_by_name(upwf, type_, name) };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn fold(self, upwf2: UnionPwQPolynomialFold)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf1 = self;
let isl_rs_ctx = upwf1.get_ctx();
let mut upwf1 = upwf1;
upwf1.do_not_free_on_drop();
let upwf1 = upwf1.ptr;
let mut upwf2 = upwf2;
upwf2.do_not_free_on_drop();
let upwf2 = upwf2.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_fold(upwf1, upwf2) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn fold_pw_qpolynomial_fold(self, pwqp: PwQPolynomialFold)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwqp = self;
let isl_rs_ctx = upwqp.get_ctx();
let mut upwqp = upwqp;
upwqp.do_not_free_on_drop();
let upwqp = upwqp.ptr;
let mut pwqp = pwqp;
pwqp.do_not_free_on_drop();
let pwqp = pwqp.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold(upwqp, pwqp) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn free(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_free(upwf) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn from_pw_qpolynomial_fold(pwf: PwQPolynomialFold)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let isl_rs_ctx = pwf.get_ctx();
let mut pwf = pwf;
pwf.do_not_free_on_drop();
let pwf = pwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(pwf) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn get_ctx(&self) -> Context {
let upwf = self;
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_get_ctx(upwf) };
let isl_rs_result = Context { ptr: isl_rs_result,
should_free_on_drop: false };
isl_rs_result
}
pub fn get_pw_qpolynomial_fold_list(&self) -> Result<PwQPolynomialFoldList, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_get_pw_qpolynomial_fold_list(upwf) };
let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn get_space(&self) -> Result<Space, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_get_space(upwf) };
let isl_rs_result = Space { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn get_type(&self) -> Result<Fold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_get_type(upwf) };
let isl_rs_result = Fold::from_i32(isl_rs_result);
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn gist(self, context: UnionSet) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut context = context;
context.do_not_free_on_drop();
let context = context.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_gist(upwf, context) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn gist_params(self, context: Set) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut context = context;
context.do_not_free_on_drop();
let context = context.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_gist_params(upwf, context) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn intersect_domain(self, uset: UnionSet) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut uset = uset;
uset.do_not_free_on_drop();
let uset = uset.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_intersect_domain(upwf, uset) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn intersect_domain_space(self, space: Space)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut space = space;
space.do_not_free_on_drop();
let space = space.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_space(upwf, space) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn intersect_domain_union_set(self, uset: UnionSet)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut uset = uset;
uset.do_not_free_on_drop();
let uset = uset.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_union_set(upwf, uset) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn intersect_domain_wrapped_domain(self, uset: UnionSet)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut uset = uset;
uset.do_not_free_on_drop();
let uset = uset.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_domain(upwf, uset) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn intersect_domain_wrapped_range(self, uset: UnionSet)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut uset = uset;
uset.do_not_free_on_drop();
let uset = uset.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_range(upwf, uset) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn intersect_params(self, set: Set) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut set = set;
set.do_not_free_on_drop();
let set = set.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_intersect_params(upwf, set) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn involves_nan(&self) -> Result<bool, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_involves_nan(upwf) };
let isl_rs_result = match isl_rs_result {
0 => false,
1 => true,
_ => {
return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
}
};
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn n_pw_qpolynomial_fold(&self) -> Result<i32, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_n_pw_qpolynomial_fold(upwf) };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn plain_is_equal(&self, upwf2: &UnionPwQPolynomialFold) -> Result<bool, LibISLError> {
let upwf1 = self;
let isl_rs_ctx = upwf1.get_ctx();
let upwf1 = upwf1.ptr;
let upwf2 = upwf2.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_plain_is_equal(upwf1, upwf2) };
let isl_rs_result = match isl_rs_result {
0 => false,
1 => true,
_ => {
return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
}
};
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn reset_user(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_reset_user(upwf) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn scale_down_val(self, v: Val) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut v = v;
v.do_not_free_on_drop();
let v = v.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_scale_down_val(upwf, v) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn scale_val(self, v: Val) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut v = v;
v.do_not_free_on_drop();
let v = v.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_scale_val(upwf, v) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn set_dim_name(self, type_: DimType, pos: u32, s: &str)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let type_ = type_.to_i32();
let s = CString::new(s).unwrap();
let s = s.as_ptr();
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_set_dim_name(upwf, type_, pos, s) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn subtract_domain(self, uset: UnionSet) -> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut uset = uset;
uset.do_not_free_on_drop();
let uset = uset.ptr;
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_subtract_domain(upwf, uset) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn subtract_domain_space(self, space: Space)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut space = space;
space.do_not_free_on_drop();
let space = space.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_subtract_domain_space(upwf, space) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn subtract_domain_union_set(self, uset: UnionSet)
-> Result<UnionPwQPolynomialFold, LibISLError> {
let upwf = self;
let isl_rs_ctx = upwf.get_ctx();
let mut upwf = upwf;
upwf.do_not_free_on_drop();
let upwf = upwf.ptr;
let mut uset = uset;
uset.do_not_free_on_drop();
let uset = uset.ptr;
let isl_rs_result =
unsafe { isl_union_pw_qpolynomial_fold_subtract_domain_union_set(upwf, uset) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn zero(space: Space, type_: Fold) -> Result<UnionPwQPolynomialFold, LibISLError> {
let isl_rs_ctx = space.get_ctx();
let mut space = space;
space.do_not_free_on_drop();
let space = space.ptr;
let type_ = type_.to_i32();
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_zero(space, type_) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn zero_ctx(ctx: &Context, type_: Fold) -> Result<UnionPwQPolynomialFold, LibISLError> {
let isl_rs_ctx = Context { ptr: ctx.ptr,
should_free_on_drop: false };
let ctx = ctx.ptr;
let type_ = type_.to_i32();
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_zero_ctx(ctx, type_) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn zero_space(space: Space, type_: Fold) -> Result<UnionPwQPolynomialFold, LibISLError> {
let isl_rs_ctx = space.get_ctx();
let mut space = space;
space.do_not_free_on_drop();
let space = space.ptr;
let type_ = type_.to_i32();
let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_zero_space(space, type_) };
let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
should_free_on_drop: true };
let err = isl_rs_ctx.last_error();
if err != Error::None_ {
let err_msg = isl_rs_ctx.last_error_msg();
isl_rs_ctx.reset_error();
return Err(LibISLError::new(err, err_msg));
}
Ok(isl_rs_result)
}
pub fn do_not_free_on_drop(&mut self) {
self.should_free_on_drop = false;
}
}
impl Drop for UnionPwQPolynomialFold {
fn drop(&mut self) {
if self.should_free_on_drop {
unsafe {
isl_union_pw_qpolynomial_fold_free(self.ptr);
}
}
}
}