russcip 0.1.7

Rust interface for SCIP.
use crate::ffi;

#[derive(Debug)]
pub enum Retcode {
    OKAY,
    ERROR,
    NOMEMORY,
    READERROR,
    WRITEERROR,
    NOFILE,
    FILECREATEERROR,
    LPERROR,
    NOPROBLEM,
    INVALIDCALL,
    INVALIDDATA,
    INVALIDRESULT,
    PLUGINNOTFOUND,
    PARAMETERUNKNOWN,
    PARAMETERWRONGTYPE,
    PARAMETERWRONGVAL,
    KEYALREADYEXISTING,
    MAXDEPTHLEVEL,
    BRANCHERROR,
    NOTIMPLEMENTED,
}

impl Retcode {
    pub fn from_c_scip_retcode(val: ffi::SCIP_Retcode) -> Option<Self> {
        match val {
            ffi::SCIP_Retcode_SCIP_OKAY => Some(Retcode::OKAY),
            ffi::SCIP_Retcode_SCIP_ERROR => Some(Retcode::ERROR),
            ffi::SCIP_Retcode_SCIP_NOMEMORY => Some(Retcode::NOMEMORY),
            ffi::SCIP_Retcode_SCIP_READERROR => Some(Retcode::READERROR),
            ffi::SCIP_Retcode_SCIP_WRITEERROR => Some(Retcode::WRITEERROR),
            ffi::SCIP_Retcode_SCIP_NOFILE => Some(Retcode::NOFILE),
            ffi::SCIP_Retcode_SCIP_FILECREATEERROR => Some(Retcode::FILECREATEERROR),
            ffi::SCIP_Retcode_SCIP_LPERROR => Some(Retcode::LPERROR),
            ffi::SCIP_Retcode_SCIP_NOPROBLEM => Some(Retcode::NOPROBLEM),
            ffi::SCIP_Retcode_SCIP_INVALIDCALL => Some(Retcode::INVALIDCALL),
            ffi::SCIP_Retcode_SCIP_INVALIDDATA => Some(Retcode::INVALIDDATA),
            ffi::SCIP_Retcode_SCIP_INVALIDRESULT => Some(Retcode::INVALIDRESULT),
            ffi::SCIP_Retcode_SCIP_PLUGINNOTFOUND => Some(Retcode::PLUGINNOTFOUND),
            ffi::SCIP_Retcode_SCIP_PARAMETERUNKNOWN => Some(Retcode::PARAMETERUNKNOWN),
            ffi::SCIP_Retcode_SCIP_PARAMETERWRONGTYPE => Some(Retcode::PARAMETERWRONGTYPE),
            ffi::SCIP_Retcode_SCIP_PARAMETERWRONGVAL => Some(Retcode::PARAMETERWRONGVAL),
            ffi::SCIP_Retcode_SCIP_KEYALREADYEXISTING => Some(Retcode::KEYALREADYEXISTING),
            ffi::SCIP_Retcode_SCIP_MAXDEPTHLEVEL => Some(Retcode::MAXDEPTHLEVEL),
            ffi::SCIP_Retcode_SCIP_BRANCHERROR => Some(Retcode::BRANCHERROR),
            ffi::SCIP_Retcode_SCIP_NOTIMPLEMENTED => Some(Retcode::NOTIMPLEMENTED),
            _ => None,
        }
    }
}