osqp-rust-sys 0.6.2

c2rust(osqp-sys)
Documentation
extern "C" {
    fn realloc(_: *mut ::std::os::raw::c_void, _: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
    fn free(_: *mut ::std::os::raw::c_void);
    fn malloc(_: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
    fn triplet_to_csr(T: *const csc, TtoC: *mut c_int) -> *mut csc;
    fn triplet_to_csc(T: *const csc, TtoC: *mut c_int) -> *mut csc;
    fn csc_spfree(A: *mut csc);
    fn csc_spalloc(
        m: c_int,
        n: c_int,
        nzmax: c_int,
        values: c_int,
        triplet: c_int,
    ) -> *mut csc;
}
pub type c_int = ::std::os::raw::c_longlong;
pub type c_float = ::std::os::raw::c_double;
#[derive(Copy, Clone)]
#[repr(C)]
pub struct csc {
    pub nzmax: c_int,
    pub m: c_int,
    pub n: c_int,
    pub p: *mut c_int,
    pub i: *mut c_int,
    pub x: *mut c_float,
    pub nz: c_int,
}
pub const c_realloc: unsafe extern "C" fn(
    *mut ::std::os::raw::c_void,
    ::std::os::raw::c_ulong,
) -> *mut ::std::os::raw::c_void = realloc;
pub const c_malloc: unsafe extern "C" fn(::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void = malloc;
pub const OSQP_NULL: ::std::os::raw::c_int = 0 as ::std::os::raw::c_int;
pub const c_free: unsafe extern "C" fn(*mut ::std::os::raw::c_void) -> () = free;
#[no_mangle]
pub unsafe extern "C" fn form_KKT(
    mut P: *const csc,
    mut A: *const csc,
    mut format: c_int,
    mut param1: c_float,
    mut param2: *mut c_float,
    mut PtoKKT: *mut c_int,
    mut AtoKKT: *mut c_int,
    mut Pdiag_idx: *mut *mut c_int,
    mut Pdiag_n: *mut c_int,
    mut param2toKKT: *mut c_int,
) -> *mut csc {
    let mut nKKT: c_int = 0;
    let mut nnzKKTmax: c_int = 0;
    let mut KKT_trip: *mut csc = 0 as *mut csc;
    let mut KKT: *mut csc = 0 as *mut csc;
    let mut ptr: c_int = 0;
    let mut i: c_int = 0;
    let mut j: c_int = 0;
    let mut zKKT: c_int = 0 as ::std::os::raw::c_int as c_int;
    let mut KKT_TtoC: *mut c_int = 0 as *mut c_int;
    nKKT = (*P).m + (*A).m;
    nnzKKTmax = *((*P).p).offset((*P).n as isize) + (*P).m
        + *((*A).p).offset((*A).n as isize) + (*A).m;
    KKT_trip = csc_spalloc(
        nKKT,
        nKKT,
        nnzKKTmax,
        1 as ::std::os::raw::c_int as c_int,
        1 as ::std::os::raw::c_int as c_int,
    );
    if KKT_trip.is_null() {
        return OSQP_NULL as *mut csc;
    }
    if !Pdiag_idx.is_null() {
        *Pdiag_idx = malloc(
            ((*P).m as ::std::os::raw::c_ulonglong)
                .wrapping_mul(
                    ::std::mem::size_of::<c_int>() as ::std::os::raw::c_ulong as ::std::os::raw::c_ulonglong,
                ) as ::std::os::raw::c_ulong,
        ) as *mut c_int;
        *Pdiag_n = 0 as ::std::os::raw::c_int as c_int;
    }
    j = 0 as ::std::os::raw::c_int as c_int;
    while j < (*P).n {
        if *((*P).p).offset(j as isize)
            == *((*P).p).offset((j + 1 as ::std::os::raw::c_int as ::std::os::raw::c_longlong) as isize)
        {
            *((*KKT_trip).i).offset(zKKT as isize) = j;
            *((*KKT_trip).p).offset(zKKT as isize) = j;
            *((*KKT_trip).x).offset(zKKT as isize) = param1;
            zKKT += 1;
        }
        ptr = *((*P).p).offset(j as isize);
        while ptr < *((*P).p).offset((j + 1 as ::std::os::raw::c_int as ::std::os::raw::c_longlong) as isize)
        {
            i = *((*P).i).offset(ptr as isize);
            *((*KKT_trip).i).offset(zKKT as isize) = i;
            *((*KKT_trip).p).offset(zKKT as isize) = j;
            *((*KKT_trip).x).offset(zKKT as isize) = *((*P).x).offset(ptr as isize);
            if !PtoKKT.is_null() {
                *PtoKKT.offset(ptr as isize) = zKKT;
            }
            if i == j {
                let ref mut fresh0 = *((*KKT_trip).x).offset(zKKT as isize);
                *fresh0 += param1;
                if !Pdiag_idx.is_null() {
                    *(*Pdiag_idx).offset(*Pdiag_n as isize) = ptr;
                    *Pdiag_n += 1;
                }
            }
            zKKT += 1;
            if i < j
                && ptr + 1 as ::std::os::raw::c_int as ::std::os::raw::c_longlong
                    == *((*P).p)
                        .offset((j + 1 as ::std::os::raw::c_int as ::std::os::raw::c_longlong) as isize)
            {
                *((*KKT_trip).i).offset(zKKT as isize) = j;
                *((*KKT_trip).p).offset(zKKT as isize) = j;
                *((*KKT_trip).x).offset(zKKT as isize) = param1;
                zKKT += 1;
            }
            ptr += 1;
        }
        j += 1;
    }
    if !Pdiag_idx.is_null() {
        *Pdiag_idx = realloc(
            *Pdiag_idx as *mut ::std::os::raw::c_void,
            (*Pdiag_n as ::std::os::raw::c_ulonglong)
                .wrapping_mul(
                    ::std::mem::size_of::<c_int>() as ::std::os::raw::c_ulong as ::std::os::raw::c_ulonglong,
                ) as ::std::os::raw::c_ulong,
        ) as *mut c_int;
    }
    j = 0 as ::std::os::raw::c_int as c_int;
    while j < (*A).n {
        ptr = *((*A).p).offset(j as isize);
        while ptr < *((*A).p).offset((j + 1 as ::std::os::raw::c_int as ::std::os::raw::c_longlong) as isize)
        {
            *((*KKT_trip).p)
                .offset(zKKT as isize) = (*P).m + *((*A).i).offset(ptr as isize);
            *((*KKT_trip).i).offset(zKKT as isize) = j;
            *((*KKT_trip).x).offset(zKKT as isize) = *((*A).x).offset(ptr as isize);
            if !AtoKKT.is_null() {
                *AtoKKT.offset(ptr as isize) = zKKT;
            }
            zKKT += 1;
            ptr += 1;
        }
        j += 1;
    }
    j = 0 as ::std::os::raw::c_int as c_int;
    while j < (*A).m {
        *((*KKT_trip).i).offset(zKKT as isize) = j + (*P).n;
        *((*KKT_trip).p).offset(zKKT as isize) = j + (*P).n;
        *((*KKT_trip).x).offset(zKKT as isize) = -*param2.offset(j as isize);
        if !param2toKKT.is_null() {
            *param2toKKT.offset(j as isize) = zKKT;
        }
        zKKT += 1;
        j += 1;
    }
    (*KKT_trip).nz = zKKT;
    if PtoKKT.is_null() && AtoKKT.is_null() && param2toKKT.is_null() {
        if format == 0 as ::std::os::raw::c_int as ::std::os::raw::c_longlong {
            KKT = triplet_to_csc(KKT_trip, OSQP_NULL as *mut c_int);
        } else {
            KKT = triplet_to_csr(KKT_trip, OSQP_NULL as *mut c_int);
        }
    } else {
        KKT_TtoC = malloc(
            (zKKT as ::std::os::raw::c_ulonglong)
                .wrapping_mul(
                    ::std::mem::size_of::<c_int>() as ::std::os::raw::c_ulong as ::std::os::raw::c_ulonglong,
                ) as ::std::os::raw::c_ulong,
        ) as *mut c_int;
        if KKT_TtoC.is_null() {
            csc_spfree(KKT_trip);
            free(*Pdiag_idx as *mut ::std::os::raw::c_void);
            return OSQP_NULL as *mut csc;
        }
        if format == 0 as ::std::os::raw::c_int as ::std::os::raw::c_longlong {
            KKT = triplet_to_csc(KKT_trip, KKT_TtoC);
        } else {
            KKT = triplet_to_csr(KKT_trip, KKT_TtoC);
        }
        if !PtoKKT.is_null() {
            i = 0 as ::std::os::raw::c_int as c_int;
            while i < *((*P).p).offset((*P).n as isize) {
                *PtoKKT
                    .offset(
                        i as isize,
                    ) = *KKT_TtoC.offset(*PtoKKT.offset(i as isize) as isize);
                i += 1;
            }
        }
        if !AtoKKT.is_null() {
            i = 0 as ::std::os::raw::c_int as c_int;
            while i < *((*A).p).offset((*A).n as isize) {
                *AtoKKT
                    .offset(
                        i as isize,
                    ) = *KKT_TtoC.offset(*AtoKKT.offset(i as isize) as isize);
                i += 1;
            }
        }
        if !param2toKKT.is_null() {
            i = 0 as ::std::os::raw::c_int as c_int;
            while i < (*A).m {
                *param2toKKT
                    .offset(
                        i as isize,
                    ) = *KKT_TtoC.offset(*param2toKKT.offset(i as isize) as isize);
                i += 1;
            }
        }
        free(KKT_TtoC as *mut ::std::os::raw::c_void);
    }
    csc_spfree(KKT_trip);
    return KKT;
}
#[no_mangle]
pub unsafe extern "C" fn update_KKT_P(
    mut KKT: *mut csc,
    mut P: *const csc,
    mut PtoKKT: *const c_int,
    param1: c_float,
    mut Pdiag_idx: *const c_int,
    Pdiag_n: c_int,
) {
    let mut i: c_int = 0;
    let mut j: c_int = 0;
    i = 0 as ::std::os::raw::c_int as c_int;
    while i < *((*P).p).offset((*P).n as isize) {
        *((*KKT).x)
            .offset(*PtoKKT.offset(i as isize) as isize) = *((*P).x).offset(i as isize);
        i += 1;
    }
    i = 0 as ::std::os::raw::c_int as c_int;
    while i < Pdiag_n {
        j = *Pdiag_idx.offset(i as isize);
        let ref mut fresh1 = *((*KKT).x).offset(*PtoKKT.offset(j as isize) as isize);
        *fresh1 += param1;
        i += 1;
    }
}
#[no_mangle]
pub unsafe extern "C" fn update_KKT_A(
    mut KKT: *mut csc,
    mut A: *const csc,
    mut AtoKKT: *const c_int,
) {
    let mut i: c_int = 0;
    i = 0 as ::std::os::raw::c_int as c_int;
    while i < *((*A).p).offset((*A).n as isize) {
        *((*KKT).x)
            .offset(*AtoKKT.offset(i as isize) as isize) = *((*A).x).offset(i as isize);
        i += 1;
    }
}
#[no_mangle]
pub unsafe extern "C" fn update_KKT_param2(
    mut KKT: *mut csc,
    mut param2: *const c_float,
    mut param2toKKT: *const c_int,
    m: c_int,
) {
    let mut i: c_int = 0;
    i = 0 as ::std::os::raw::c_int as c_int;
    while i < m {
        *((*KKT).x)
            .offset(
                *param2toKKT.offset(i as isize) as isize,
            ) = -*param2.offset(i as isize);
        i += 1;
    }
}