russcip 0.1.13

Rust interface for SCIP.
Documentation
use crate::ffi;

#[derive(Debug, Eq, PartialEq, Clone, Copy)]
pub enum Retcode {
    Okay,
    Error,
    NoMemory,
    ReadError,
    WriteError,
    NoFile,
    FileCreateError,
    LpError,
    NoProblem,
    InvalidCall,
    InvalidData,
    InvalidResult,
    PluginNotFound,
    ParameterUnknown,
    ParameterWrongType,
    ParameterWrongVal,
    KeyAlreadyExisting,
    MaxDepthLevel,
    BranchError,
    NotImplemented,
    Unknown(ffi::SCIP_Retcode),
}

impl From<ffi::SCIP_Retcode> for Retcode {
    fn from(val: ffi::SCIP_Retcode) -> Self {
        match val {
            ffi::SCIP_Retcode_SCIP_OKAY => Retcode::Okay,
            ffi::SCIP_Retcode_SCIP_ERROR => Retcode::Error,
            ffi::SCIP_Retcode_SCIP_NOMEMORY => Retcode::NoMemory,
            ffi::SCIP_Retcode_SCIP_READERROR => Retcode::ReadError,
            ffi::SCIP_Retcode_SCIP_WRITEERROR => Retcode::WriteError,
            ffi::SCIP_Retcode_SCIP_NOFILE => Retcode::NoFile,
            ffi::SCIP_Retcode_SCIP_FILECREATEERROR => Retcode::FileCreateError,
            ffi::SCIP_Retcode_SCIP_LPERROR => Retcode::LpError,
            ffi::SCIP_Retcode_SCIP_NOPROBLEM => Retcode::NoProblem,
            ffi::SCIP_Retcode_SCIP_INVALIDCALL => Retcode::InvalidCall,
            ffi::SCIP_Retcode_SCIP_INVALIDDATA => Retcode::InvalidData,
            ffi::SCIP_Retcode_SCIP_INVALIDRESULT => Retcode::InvalidResult,
            ffi::SCIP_Retcode_SCIP_PLUGINNOTFOUND => Retcode::PluginNotFound,
            ffi::SCIP_Retcode_SCIP_PARAMETERUNKNOWN => Retcode::ParameterUnknown,
            ffi::SCIP_Retcode_SCIP_PARAMETERWRONGTYPE => Retcode::ParameterWrongType,
            ffi::SCIP_Retcode_SCIP_PARAMETERWRONGVAL => Retcode::ParameterWrongVal,
            ffi::SCIP_Retcode_SCIP_KEYALREADYEXISTING => Retcode::KeyAlreadyExisting,
            ffi::SCIP_Retcode_SCIP_MAXDEPTHLEVEL => Retcode::MaxDepthLevel,
            ffi::SCIP_Retcode_SCIP_BRANCHERROR => Retcode::BranchError,
            ffi::SCIP_Retcode_SCIP_NOTIMPLEMENTED => Retcode::NotImplemented,
            val => Retcode::Unknown(val),
        }
    }
}