use amari_enumerative::SchubertClass;
#[derive(Debug, Clone)]
pub struct SchubertType {
inner: SchubertClass,
}
impl SchubertType {
pub fn new(partition: Vec<usize>, grassmannian_dim: (usize, usize)) -> Result<Self, String> {
SchubertClass::new(partition, grassmannian_dim)
.map(|sc| Self { inner: sc })
.map_err(|e| e.to_string())
}
pub fn partition(&self) -> &[usize] {
&self.inner.partition
}
pub fn grassmannian_dim(&self) -> (usize, usize) {
self.inner.grassmannian_dim
}
pub fn codimension(&self) -> usize {
self.inner.codimension()
}
pub fn dimension(&self) -> usize {
self.inner.dimension()
}
pub fn is_point_class(&self) -> bool {
self.inner.partition.is_empty()
}
pub(crate) fn as_inner(&self) -> &SchubertClass {
&self.inner
}
#[allow(dead_code)]
pub(crate) fn from_inner(inner: SchubertClass) -> Self {
Self { inner }
}
}