playerone-sdk-sys 0.1.1

PlayerOne SDK bindings
Documentation
pub use bindings::*;

#[allow(non_snake_case, non_upper_case_globals, non_camel_case_types)]
mod bindings {
    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
}

impl From<bool> for POABool {
    fn from(value: bool) -> Self {
        match value {
            true => POABool::POA_TRUE,
            false => POABool::POA_FALSE,
        }
    }
}

impl From<POABool> for bool {
    fn from(value: POABool) -> Self {
        match value {
            POABool::POA_TRUE => true,
            POABool::POA_FALSE => false,
        }
    }
}

impl From<f64> for POAConfigValue {
    fn from(value: f64) -> Self {
        POAConfigValue { floatValue: value }
    }
}

impl From<i64> for POAConfigValue {
    fn from(value: i64) -> Self {
        POAConfigValue { intValue: value }
    }
}

impl From<bool> for POAConfigValue {
    fn from(value: bool) -> Self {
        POAConfigValue {
            boolValue: value.into(),
        }
    }
}

pub unsafe trait FromPOAConfigValue {
    fn from_poa_config_value(value: POAConfigValue) -> Self;
}

unsafe impl FromPOAConfigValue for f64 {
    fn from_poa_config_value(value: POAConfigValue) -> Self {
        unsafe { value.floatValue }
    }
}

unsafe impl FromPOAConfigValue for i64 {
    fn from_poa_config_value(value: POAConfigValue) -> Self {
        unsafe { value.intValue }
    }
}

unsafe impl FromPOAConfigValue for bool {
    fn from_poa_config_value(value: POAConfigValue) -> Self {
        unsafe { value.boolValue.into() }
    }
}