use super::{ModifierImpl, ModifierType};
use crate::types::BpyStruct;
use derive_more::{Deref, DerefMut, Display};
use pyo3::PyObject;
use pyo3_macros_more::bind_python;
#[repr(transparent)]
#[derive(Clone, Debug, Deref, DerefMut, Display)]
pub struct ArrayModifier(PyObject);
impl BpyStruct for ArrayModifier {}
impl ModifierImpl for ArrayModifier {
const MODIFIER_TYPE: ModifierType = ModifierType::Array;
}
impl ArrayModifier {
bind_python! {}
}
impl From<pyo3::PyObject> for ArrayModifier {
fn from(value: pyo3::PyObject) -> Self {
Self(value)
}
}
impl From<&pyo3::PyAny> for ArrayModifier {
fn from(value: &pyo3::PyAny) -> Self {
Self(value.into())
}
}
impl pyo3::FromPyObject<'_> for ArrayModifier {
fn extract(value: &pyo3::PyAny) -> pyo3::PyResult<Self> {
Ok(Self(value.into()))
}
}
impl pyo3::ToPyObject for ArrayModifier {
fn to_object(&self, py: pyo3::Python<'_>) -> pyo3::PyObject {
self.as_ref(py).to_object(py)
}
}