use savvy_ffi::SEXP;
use super::impl_common_sexp_ops;
use crate::Sexp;
pub struct ObjSexp(pub SEXP);
impl_common_sexp_ops!(ObjSexp);
impl TryFrom<Sexp> for ObjSexp {
type Error = crate::error::Error;
fn try_from(value: Sexp) -> crate::error::Result<Self> {
value.assert_obj()?;
Ok(Self(value.0))
}
}
impl From<ObjSexp> for Sexp {
fn from(value: ObjSexp) -> Self {
Self(value.0)
}
}
impl From<ObjSexp> for crate::error::Result<Sexp> {
fn from(value: ObjSexp) -> Self {
Ok(<Sexp>::from(value))
}
}
impl From<ObjSexp> for SEXP {
fn from(value: ObjSexp) -> Self {
value.0
}
}